Algú ha d'entrar en un servidor aquesta nit, i la credencial li ha d'arribar ara. La temptació és enganxar la clau privada o la contrasenya de root a Slack. Cada missatge per on passa aquesta clau en conserva una còpia, i per això la millor via és un enllaç d'un sol ús que caduca: el secret es recupera una vegada i després desapareix.
Ara bé, l'enllaç només és el pas de lliurament. Abans de crear-lo, trieu la credencial correcta per enviar, limiteu-ne l'abast a la tasca i decidiu com la retirareu. Aquesta guia ho cobreix tot, inclosa la qüestió de què cal posar en un enllaç d'un sol ús per compartir dades d'accés a un servidor i què cal deixar-ne fora.
Quina credencial SSH compartiu realment?
L'accés SSH es pot basar en quatre coses diferents, i cadascuna té unes normes de compartició molt diferents.
| Credencial | Què és | S'ha de moure mai? |
|---|---|---|
| Clau pública | La meitat que desa el servidor | Sí, lliurement. No és secreta. |
| Clau privada | La meitat que té l'usuari | Només si s'ha generat per al destinatari, i només una vegada |
| Contrasenya | Una cadena compartida que comprova el servidor | Una vegada, com a valor temporal que canviareu |
| Certificat SSH | Una clau signada per la vostra CA amb un període de validesa | El certificat no és secret; la clau que hi ha al darrere, sí |
El millor lliurament és aquell en què no es mou res secret. Si el
destinatari ja té un parell de claus SSH, demaneu-li la clau pública,
afegiu-la a ~/.ssh/authorized_keys del compte adequat i digueu-li que
es connecti. Si més endavant suprimiu aquesta línia, se li acaba
l'accés.
Genereu-li una clau dedicada quan no en tingui cap i no en pugui crear. No envieu mai la vostra clau privada de cada dia. Una clau creada per al destinatari es pot limitar, registrar i suprimir sense tocar res més.
Per a necessitats recurrents, millor certificats o accés gestionat. Si la mateixa persona necessitarà accés sovint, els lliuraments d'un sol ús repetits no són l'eina adequada. Un certificat SSH amb una validesa curta, o una eina d'accés com Teleport o Tailscale SSH, us dona la caducitat integrada a la credencial i no afegida al lliurament.
Limiteu l'abast de la credencial abans de compartir-la
Envieu el que envieu, feu-ho tan reduït com permeti la tasca:
- Un compte, un servidor. Afegiu la clau al compte de servei responsable de la feina, no a root, i només a la màquina implicada.
- Restringiu què pot fer la clau amb opcions d'
authorized_keyscom arafrom="203.0.113.5",no-port-forwardingo un embolcallcommand=quan la feina sigui un sol script. - Doneu una vida limitada a la contrasenya. Si compartiu una
contrasenya, executeu
passwd -eo l'equivalent de la plataforma perquè el destinatari l'hagi de canviar en el primer inici de sessió, i preveieu desactivar el compte en una data concreta. - Apunteu la data de final abans d'enviar res. «Quan s'acabi la feina» no és una data.
Com compartir credencials SSH amb un enllaç que caduca
- Confirmeu el destinatari per un canal en què ja confieu: el tiquet, un fil de correu conegut o una trucada. La majoria de credencials que arriben a qui no toca són culpa d'una adreça semblant o d'un nom completat automàticament.
- Enganxeu només el secret a l'eina d'enllaços secrets d'un sol ús. Per a una clau privada, això vol dir tot el bloc PEM i res més. Amb LinkPilot, el text es xifra al vostre navegador abans de desar-se, de manera que el servei només té text xifrat, i la clau per desxifrar-lo és a la part de l'URL que els navegadors no envien als servidors.
- Ajusteu la caducitat al temps disponible. Una hora si la persona l'està esperant, 24 hores si és en una altra zona horària, set dies només quan hi hagi un motiu real. L'enllaç també es destrueix la primera vegada que s'obre, de manera que la caducitat és la xarxa de seguretat, no el control principal.
- Afegiu-hi una frase de contrasenya amb un compte Pro quan la credencial sigui delicada, i passeu la frase per un altre canal. Amb el pla Pro, la cronologia d'auditoria també us mostra quan s'ha mostrat el secret.
- Envieu l'enllaç amb una nota d'una línia sobre el motiu i sense dades de connexió.
- Envieu les dades de connexió en un missatge a part: servidor o adreça, port, nom d'usuari i mètode d'autenticació. Cap d'aquestes dades no és secreta per si sola, però juntament amb la clau formen l'accés complet.
Si l'enllaç indica que ja s'ha obert i el destinatari diu que no l'ha obert, no ho discutiu. Considereu que la credencial ha quedat exposada, suprimiu la clau o canvieu la contrasenya, i genereu-ne una de nova.
Un enllaç d'un sol ús per compartir dades d'accés a un servidor
La pregunta de què va dins del secret surt cada vegada. Una bona norma és que l'enllaç porti el que un atacant no podria endevinar, i el missatge normal, el que sí que podria.
A l'enllaç d'un sol ús:
- La clau privada, o la contrasenya temporal
- La frase de contrasenya de la clau, si se n'ha definit una en generar-la
- Res més
En un missatge normal, enviat a part:
- El nom d'amfitrió o l'adreça IP, i el port
- El compte amb què cal iniciar la sessió
- Si cal fer servir una clau o una contrasenya
- L'empremta de la clau del servidor, perquè el destinatari pugui verificar el servidor en la primera connexió
- Una nota breu sobre per a què és l'accés i quan s'acaba
No hi poseu captures de pantalla ni registres del terminal en cap dels dos. Una captura d'una sessió activa sovint inclou testimonis, adreces internes i altres noms d'usuari que no havien de sortir d'allà.
Ajudeu el destinatari a desar la clau de manera segura
Un lliurament segur continua fallant si la clau acaba a Baixades amb permisos de lectura per a tothom. Envieu aquestes instruccions juntament amb les dades de connexió:
# save the key, then lock it down
chmod 600 ~/.ssh/acme_deploy
ssh-add ~/.ssh/acme_deploy
# verify the host key fingerprint against the one you were sent
ssh -i ~/.ssh/acme_deploy deploy@203.0.113.5
Demaneu-li que obri l'enllaç secret només quan estigui a punt de fer-lo servir, en un dispositiu que controli i amb una connexió de confiança. Obrir-lo en una màquina compartida «per comprovar que funciona» deixa una còpia a l'historial del porta-retalls d'aquella màquina.
Verifiqueu-ho i tanqueu la finestra
Mentre la finestra d'accés encara és oberta, feu que el destinatari provi exactament la connexió i confirmi que la tasca funciona. No amplieu els permisos perquè passi una prova; corregiu l'abast.
Quan s'acabi la feina:
- Suprimiu la clau pública d'
authorized_keys, desactiveu el compte o deixeu que el certificat caduqui en la data prevista. - Roteu tot el que hagi viatjat amb la credencial, inclosa una contrasenya temporal que s'havia de canviar en el primer inici de sessió i que no es va canviar.
- Reviseu
auth.logo la font d'auditoria d'SSH per detectar connexions fora de l'horari acordat o des d'adreces inesperades. - Apunteu qui va tenir què, i des de quan fins a quan. El registre es queda; la credencial, no.
La caducitat de l'enllaç limita quant de temps es podia recuperar el secret. La caducitat de la credencial limita quant de temps es pot fer servir. Necessiteu totes dues, i la segona és la que la gent oblida.
