Shell segur (SSH)
SSH és el protocol que executa la meitat invisible d'Internet: la consola remota de cada administrador del sistema, el pas de desplegament de cada desenvolupador, cada empenta de Git a un repositori privat. Va substituir telnet a finals de la dècada de 1990 i des de llavors ha estat el protocol de shell segur per defecte. Saber què fa realment fa que moltes operacions funcionin tinguin sentit.
El cos complet de l'article es proporciona en anglès a continuació.
SSH (Secure Shell) és un protocol de xarxa criptogràfic per operar serveis de xarxa de manera segura en una xarxa no segura. S'utilitza més habitualment per a l'inici de sessió remot de la línia d'ordres (el "shell" del nom) i per transferir fitxers, però el protocol subjacent és prou general com per tunelitzar qualsevol aplicació TCP. SSH va ser creat per Tatu Ylönen l'any 1995 després d'un atac de contrasenya a la seva universitat; la implementació d'OpenSSH (iniciada el 1999) és la versió més desplegada avui dia.
El que ofereix SSH
Tres propietats:
- Confidencialitat — xifrat en trànsit. Els observadors de la xarxa veuen bytes xifrats, no ordres ni contrasenyes.
- Integrity: els paquets modificats es detecten i es rebutgen.
- Autenticació d'ambdós extrems: la clau del client, el servidor o altres mètodes d'autenticació, el servidor públic i les contrasenyes. s'autentica amb el client (mitjançant la clau de l'amfitrió).
La combinació substitueix la suite anterior de telnet, rlogin, rsh i rcp, totes elles transmeses en text sense format.
Com funcionen les connexions SSH
The handshake, simplificat:
- El client obre la connexió TCP al servidor al port 22 (configurable).
- Les dues parts intercanvien cadenes de versió.
- Les dues parts intercanvien algorismes compatibles; trieu el xifrat mutu més fort, KEX, MAC.
- canvi de claus, normalment les corbes X25519 o NIST actualment. Ambdues parts obtenen un secret compartit sense que travessi el cable en text pla.
- El servidor envia la seva clau d'amfitrió, signada amb el secret compartit. El client verifica amb ~/.ssh/known_hosts.
- A partir d'aquest moment, tot està xifrat amb claus derivades del secret compartit.
- El client s'autentica mitjançant contrasenya, clau pública o algun altre mecanisme.
- La sessió xifrada està oberta. El client sol·licita un intèrpret d'ordres, una transferència de fitxers, un port forward o el que realment vulgui.
Mètodes d'autenticació
- Password. L'usuari escriu una contrasenya; s'envia xifrat dins de la sessió. Simple, però vulnerable als atacs d'ompliment de credencials contra servidors SSH exposats.
- clau pública. El client té una clau privada (normalment a
~/.ssh/id_ed25519); el servidor té la clau pública corresponent a~/.ssh/authorized_keys. El client prova la possessió de la clau privada signant un desafiament des del servidor. Cap contrasenya travessa la xarxa. El valor predeterminat recomanat per a gairebé tots els casos d'ús. - Basat en certificats. Una CA signa un certificat per a la clau de l'usuari, incloent-hi la caducitat i les restriccions. Els servidors confien en la CA, confien automàticament en els certificats signats. El model adequat per a organitzacions amb molts usuaris; substitueix el malson de la distribució de claus ssh.
- FIDO2 / clau de maquinari SSH. OpenSSH recent admet claus recolzades per un testimoni de seguretat de maquinari. A prova de pesca, requereix possessió física.
- Multifactor: combineu l'anterior. Contrasenya + clau, o contrasenya + testimoni de maquinari.
Més enllà de l'accés de l'intèrpret d'ordres: reenviament de ports
SSH pot túnel trànsit TCP arbitrari a través de la sessió xifrada:
- Lenviament de ports local33:
ssh -L 9000:internal:3306 user@bastionobre el port local 9000, que connecta ainternal:3306mitjançant l'amfitrió del bastió. Útil per arribar a serveis interns mitjançant un host de salt. - Reenviament de ports remots (
-R): direcció oposada. L'amfitrió remot obté un port que torna a un túnel a un servei de la vostra màquina. - Reenviament de port dinàmic (
-D): SSH crea un servidor intermediari SOCKS5 a la vostra màquina local. Qualsevol aplicació que s'hi apunti té el trànsit TCP túnelitzat a través de la sessió SSH. Efectivament, una VPN d'un sol usuari a través de SSH.
SSH és la VPN més útil per a persones pobres; tothom que tingui un servidor en algun lloc hi té accés.
L'ecosistema OpenSSH
- ssh — el client
- sshd — el dimoni del servidor
- scp — còpia segura (reemplaçada ara per la més segura). hood)
- sftp — FTP segur, un protocol separat que s'executa dins de SSH
- ssh-agent — emmagatzema a la memòria cau les claus desxifrades perquè no introduïu una frase de contrasenya per connexió PLZ2
- PLZ22XPLZ22 genera parells de claus
- ssh-copy-id — copia la vostra clau pública a un fitxer remot de claus_autoritzades
Defensa d'un servidor SSH
Un servidor SSH a Internet pública veu les credencials de manera constant. Les defenses:
- Desactiva l'autenticació de contrasenya. Només claus públiques. Elimina tot el vector d'atac d'ompliment de credencials.
- Utilitza les claus Ed25519. Modern, ràpid, petit.
ssh-keygen -t ed25519és l'ordre adequat per a claus noves. - Utilitza un port no predeterminat. Marginal; principalment redueix el soroll del registre de l'escàner.
- fail2ban o sshguard: bloqueja les IP després d'intents fallits repetits.
- Limita els comptes d'usuari que poden SSH.
PLZ58XX sshd_config. - Utilitzeu una VPN o Tailscale: no exposeu SSH a Internet pública en absolut si podeu evitar-ho.
- Auditar els hosts_coneguts i les claus_autoritzades. Eliminar les claus dels usuaris desapareguts; comproveu si hi ha entrades inesperades.
Preguntes freqüents
- Quin port utilitza SSH?
- 22 per defecte. El port és configurable; alguns operadors mouen SSH a un port no estàndard per reduir el trànsit d'escaneig als registres. Això és seguretat a través de l'obscuritat, útil per a la higiene, no per a la seguretat real. La seguretat real és l'autenticació forta.
- SSH és més segur que HTTPS?
- Diferents models d'amenaça. Tots dos utilitzen criptografia moderna i són essencialment igual de segurs a nivell de protocol. SSH s'utilitza normalment amb l'autenticació de clau pública (sense contrasenyes, molt fort), mentre que molts llocs HTTPS encara utilitzen l'autenticació de contrasenya (més feble per defecte). Els protocols són iguals; les pràctiques de desplegament varien.
- Puc utilitzar SSH per transferir fitxers?
- Sí. <code>scp</code> i <code>sftp</code> funcionen amb SSH. SFTP és l'opció moderna més capaç: transferències reprèn, operacions recursives, escriptures atòmiques. <code>rsync</code> també pot utilitzar SSH com a transport i és l'eina adequada per a qualsevol transferència no trivial.
- Què és una clau SSH?
- Un parell de claus pública/privada que s'utilitza per a l'autenticació. La clau privada es troba a <code>~/.ssh/id_*</code> a la vostra màquina; la clau pública s'instal·la a <code>~/.ssh/authorized_keys</code> als servidors als quals us connecteu. La pèrdua de la clau privada sense una frase de contrasenya és un problema greu: qualsevol persona que la tingui pot iniciar sessió com a tu. Protegiu sempre les claus SSH amb una frase de contrasenya.
- Per què SSH diu "la clau de l'amfitrió ha canviat"?
- La clau d'identitat del servidor ha canviat des de la vostra darrera connexió: el servidor s'ha reconstruït, la clau s'ha girat o alguna cosa no funciona (el cas més preocupant: algú està suplantant la identitat del servidor). No accepteu cegament la nova clau; verificar fora de banda amb l'operador del servidor. Si va ser una rotació legítima, elimineu la clau antiga de known_hosts i accepteu la nova.