SSH: Shell segur
SSH significa Secure Shell. També es coneix com a Secure Socket Shell. S'utilitza un protocol de xarxa criptogràfic anomenat Secure Shell (SSH) per operar de manera segura els serveis de xarxa a través de xarxes insegures. L'arquitectura del servidor client és la base de les aplicacions SSH, que enllaçen una instància de client SSH amb un servidor SSH.
Com a successor de Telnet i de protocols d'intèrpret d'ordres Unix remots no segurs com el Berkeley Remote Shell (rsh) i els seus protocols associats rlogin i rexec, SSH es va crear per a sistemes operatius semblants a Unix que utilitzen una comunicació de testimoni d'autenticació de text pla no segura.
Definició
Podem aplicar SSH de diverses maneres diferents. La implementació més senzilla xifra les dades mitjançant parells de claus pública-privades generats automàticament als dos extrems d'un canal de comunicació i una connexió de xarxa. Després d'això, autentica l'usuari mitjançant una contrasenya. Quan un usuari genera manualment un parell de claus pública-privada, l'autenticació es completa pràcticament quan s'estableix el parell de claus, la qual cosa permet que una sessió s'iniciï a l'instant sense demanar una contrasenya.
java obtenir l'hora actual
En aquest cas, el propietari guarda secreta la clau privada corresponent, i la clau pública s'instal·la a totes les màquines que han de donar accés al propietari. Tot i que la clau privada serveix com a base per a l'autenticació, la clau mai s'envia a través de la xarxa quan es realitza l'autenticació. SSH confirma que el proveïdor de la clau pública també té la clau privada corresponent.
Connectar la clau pública desconeguda amb una clau privada coneguda en totes les versions de SSH és crucial abans d'acceptar-les com a claus públiques legítimes amb identificadors. Acceptar una clau pública d'un atacant sense validar-la acceptarà un atacant no fiable com a usuari legítim.
Creació
Tatu Ylönen, un científic informàtic de Finlàndia, va crear SSH per primera vegada l'any 1995. El desenvolupament posterior de la suite de protocols va tenir lloc en molts grups de desenvolupadors, donant lloc a diverses iteracions d'implementació. Hi ha implementacions disponibles per a tots els sistemes operatius populars, inclosos els sistemes incrustats. OpenSSH, que els creadors d'OpenBSD van posar a disposició com a programari de codi obert el 1999, és la pila de programari més utilitzada.
Gestió de claus OpenSSH per a l'autenticació
La llista de claus públiques aprovades es conserva habitualment en sistemes semblants a Unix al fitxer ~/.ssh/claus autoritzades al directori d'inici de l'usuari, que té privilegis d'inici de sessió remots. SSH només respecta aquest fitxer si no pot ser modificat per ningú que no sigui el propietari i l'arrel. La contrasenya ja no és necessària quan hi ha tant la clau pública de l'extrem remot com la clau privada coincident de l'extrem local. Però podem utilitzar una frase de contrasenya per bloquejar la clau privada per obtenir molta més protecció. També podem cercar el codi secret en ubicacions habituals i podem utilitzar una opció de línia d'ordres per proporcionar-ne el camí complet (opció -i per a ssh).
SSH també proporciona una autenticació basada en contrasenyes xifrada per generació de claus automatitzada. L'atacant en aquest escenari pot suplantar la identitat del servidor de confiança, sol·licitar la contrasenya i obtenir-la (atac man-in-the-middle). Al costat del servidor, podem desactivar l'autenticació de contrasenya.
Ús
SSH utilitza el paradigma client-servidor. Normalment, SSH s'utilitza per al registre. També pot túnel de ports TCP, reenviar connexions X11 i executar ordres en un sistema remot. Normalment, les connexions a un dimoni SSH que permeten connexions remotes es fan mitjançant una aplicació client SSH. Tots dos es troben sovint a la majoria de sistemes operatius contemporanis, com ara macOS, distribucions de Linux, OpenBSD, FreeBSD, NetBSD, Solaris i OpenVMS. Algunes versions són propietat, programari gratuït i codi obert amb diferents graus de complexitat i amplitud (com ara PuTTY i la versió d'OpenSSH inclosa amb Cygwin i OpenSSH). En particular, SSH no s'inclou de manera predeterminada a les versions de Windows fins a la versió 1709 de Windows 10.
Una funcionalitat similar de gestió de fitxers (sincronització, còpia i supressió remota) ofereix l'aplicació de Windows gratuïta i de codi obert WinSCP, que utilitza PuTTY com a back-end. Sense necessitat d'instal·lar-se a l'ordinador client, WinSCP i PuTTY estan disponibles empaquetats per funcionar directament des d'una unitat USB. Sovint es requereix activar una funció a l'aplicació de configuració per configurar un servidor SSH a Windows.
Per gestionar els problemes de connexió i prevenir els riscos de seguretat d'exposar directament una màquina virtual basada en núvol a Internet, SSH és crucial en la informàtica en núvol. Es pot fer possible una connexió segura a Internet mitjançant un ordinador virtual de túnel SSH mitjançant un tallafoc. Per a aquest protocol, la IANA ha designat el port TCP 22, el port UDP 22 i el port SCTP 22.
Ja l'any 2001, IANA va classificar el port TCP predeterminat 22 per als servidors SSH com un dels ports coneguts. El protocol de capa de transport orientat a la connexió SCTP es pot utilitzar per executar SSH en lloc de TCP.
Progressió històrica
Iteració 1
Un assalt amb contrasenya a la xarxa de la seva institució va inspirar Tatu Ylönen, un investigador de la Universitat Tecnològica d'Hèlsinki a Finlàndia, que va crear la iteració inicial del protocol (avui conegut com SSH-1) el 1995.
SSH va ser dissenyat per assumir el paper dels protocols anteriors, inclosos rlogin, TELNET, FTP i rsh, que no tenien garanties d'autenticació i secret. Ylönen va posar la seva aplicació disponible com a programari gratuït. El juliol de 1995, el dispositiu es va popularitzar ràpidament. A finals de 1995, hi havia 20.000 usuaris SSH repartits per 50 nacions diferents.
declaració if-else java
Per promoure i avançar SSH, Ylönen va establir SSH Communications Security el desembre de 1995. Diversos components de programari lliure, inclòs GNU libgmp, es van utilitzar en la primera versió del programa SSH, però les iteracions posteriors proporcionades per SSH Communications Security es van convertir en programari cada cop més propietari. Segons les estimacions, l'any 2000 hi havia 2 milions d'usuaris.
Iteració 2
L'Internet Engineering Task Force (IETF) va designar el grup de treball encarregat de crear la versió 2 del protocol SSH com a 'Secsh' a la seva documentació oficial.
SSH-2, una iteració de protocol millorada, es va convertir en un estàndard el 2006. SSH-1 no és compatible amb aquesta versió. SSH-2 ofereix actualitzacions de funcionalitat i seguretat sobre SSH-1. Per exemple, l'intercanvi de claus Diffie-Hellman i la robusta verificació d'integritat mitjançant codis d'autenticació de missatges proporcionen una seguretat més gran. La capacitat d'operar un nombre il·limitat de sessions d'intèrpret d'ordres en una única connexió SSH és una de les noves capacitats de SSH-2. Com que SSH-2 és més avançat i s'utilitza àmpliament que SSH-1, algunes implementacions, com ara libssh (v0.8.0+), Lsh i Dropbear, només admeten SSH-2.
Iteració 1.99
La RFC 4253 requeria que un servidor SSH que suportés la 2.0, així com les versions anteriors, indiqui la seva versió del protocol com a 1.99 el gener de 2006, molt després que es desenvolupés la versió 2.1. Aquest número de versió s'utilitza per indicar la compatibilitat enrere en lloc de representar una revisió de programari anterior.
OSSH i OpenSSH
Des que l'última versió del programa SSH original, la versió 1.2.12, es va distribuir sota una llicència de codi obert l'any 1999, els desenvolupadors han estat treballant en una versió de programari lliure. Això es va utilitzar com a base per al programa OSSH de Björn Grönvall. Poc després, l'equip d'OpenBSD va clonar el treball de Grönvall per produir OpenSSH, que es va incloure a la versió 2.6 d'OpenBSD. Van crear una branca de 'portabilitat' a partir d'aquesta versió per transferir OpenSSH a diferents sistemes operatius.
La implementació SSH més utilitzada a partir del 2005 va ser OpenSSH, la versió predeterminada en moltes distribucions de sistemes operatius. Després d'eliminar el suport SSH-1 de la base de codi a la versió d'OpenSSH 7.6, OpenSSH encara s'està actualitzant i és compatible amb el protocol SSH-2. Mentrestant, OSSH ja no és rellevant.
Usos
L'usuari 'josh' 'SSHed' des de l'ordinador local 'foo fighter' a la màquina distant 'tengwar' per executar xeyes com a exemple de tunelització d'un programa X11 mitjançant SSH. La gent utilitza el client SSH de Windows PuTTY per accedir a OpenWrt.
SSH és un protocol que funciona amb molts sistemes, inclòs Microsoft Windows i la majoria de variacions Unix (Linux, BSD, inclòs el macOS d'Apple i Solaris). Les aplicacions següents poden necessitar capacitats exclusives o compatibles amb determinats clients o servidors SSH. Per exemple, actualment només és factible utilitzar el servidor OpenSSH i la implementació del client del protocol SSH per construir una VPN.
- Per accedir a un shell en un host distant (substituint Telnet i rlogin)
- Per dur a terme una ordre solitària en un host distant (substituint rsh)
- Per configurar l'inici de sessió automatitzat (sense contrasenya) d'un servidor llunyà (per exemple, utilitzant OpenSSH)
- Com a VPN xifrada totalment funcional, tingueu en compte que només el client i el servidor OpenSSH admeten aquesta capacitat.
- Per transmetre X des d'un host distant (possible a través de múltiples hosts intermedis)
- Per utilitzar clients SSH que admeten el protocol SOCKS per navegar per Internet mitjançant una connexió proxy xifrada.
- Per muntar de manera segura el directori d'un servidor remot com a sistema de fitxers en una màquina local que empra SSHFS.
- Mitjançant una o més de les tecnologies esmentades anteriorment per a la supervisió i administració automàtica de servidors remots.
- Per al desenvolupament de dispositius mòbils o incrustats compatibles amb SSH.
- Per protegir els mecanismes de transferència de fitxers.
Mètodes de transferència per a fitxers
Diversos sistemes de transferència de fitxers utilitzen protocols Secure Shell com ara
- A través de SSH, la còpia segura (SCP) es desenvolupa a partir del protocol RCP.
- rsync, que se suposa que és més eficaç que SCP, sovint s'opera mitjançant una connexió SSH.
- Una alternativa a l'FTP que és segura és el protocol de transferència de fitxers SSH (SFTP) (que no s'ha de confondre amb FTP sobre SSH o FTPS)
- FISH, o fitxers transferits mitjançant el protocol d'intèrpret d'ordres, es van introduir el 1998 i es van desenvolupar a partir de SSH sobre instruccions d'intèrpret d'ordres Unix.
- Aspera, també conegut com a protocol ràpid i segur (FASP), utilitza SSH per a comandaments i per al transport de dades, ports UDP.
Arquitectura
Tres components diferents conformen l'arquitectura en capes del protocol SSH:
- El protocol de control de transmissió (TCP) de TCP/IP s'utilitza habitualment per la capa de transport (RFC 4253), amb el número de port 22 reservat com a port d'escolta del servidor. Aquesta capa implementa el xifratge, la compressió, la comprovació d'integritat, l'intercanvi inicial de claus i l'autenticació del servidor. Tot i que cada implementació pot permetre més, exposa a la capa superior una interfície per transmetre i rebre paquets de text pla de fins a 32.768 bytes cadascun. Normalment, després de transportar 1 GB de dades o després d'haver passat una hora, el que passi primer, la capa de transport organitza el reintercanvi de claus.
- L'autenticació del client es gestiona mitjançant la capa d'autenticació d'usuari (RFC 4252), que també ofereix diverses tècniques d'autenticació. L'autenticació dirigida pel client significa que el client SSH, no el servidor, pot demanar a l'usuari una contrasenya. Només les sol·licituds d'autenticació del client reben una resposta del servidor. Sovint s'utilitzen les tècniques d'autenticació d'usuari següents:
Contrasenya , una tècnica senzilla d'autenticació de contrasenya que inclou la possibilitat de modificar la contrasenya. No tot el programari utilitza aquesta tècnica. - Normalment admet almenys parells de claus DSA, ECDSA o RSA, el clau pública és una tècnica d'autenticació basada en clau pública. Altres implementacions també accepten certificats X.509.
- La funcionalitat d'inici de sessió únic per a sessions SSH es proporciona mitjançant GSSAPI tècniques d'autenticació, que ofereixen un sistema extensible per gestionar l'autenticació SSH mitjançant mecanismes externs com Kerberos 5 o NTLM. Tot i que OpenSSH té una implementació GSSAPI funcional, les implementacions comercials de SSH sovint integren aquestes tècniques per utilitzar-les a les empreses.
- La idea dels canals que defineixen els serveis SSH que s'ofereixen es defineix per la capa de connexió (RFC 4254). Podem multiplexar múltiples connexions SSH des d'una única. Tots dos transmeten dades en ambdues direccions. Les sol·licituds de canal transmeten dades fora de banda particulars a un canal determinat, com ara el codi de sortida d'un procés del costat del servidor o el canvi de mida d'una finestra de terminal. A més, utilitzant la mida de la finestra de recepció, cada canal controla el seu flux. El client SSH fa una sol·licitud global per reenviar un port del costat del servidor. Els tipus de canals comuns inclouen:
- Shell per a SFTP, exec i terminals (incloses les transferències SCP)
- Direct-TCPIP per a connexions reenviades del client al servidor.
- Connexions reenviades de servidor a client mitjançant forwarded-tcpip
- Per confirmar la legitimitat de l'amfitrió, el registre SSHFP DNS (RFC 4255) ofereix les empremtes digitals de la clau de l'amfitrió pública.
A causa del seu disseny obert, podem utilitzar SSH per a una àmplia gamma de tasques a més de protegir shells, donant-li una gran versatilitat.
Vulnerabilitats
SSH-1
A causa de la protecció inadequada de la integritat de les dades proporcionada per CRC-32 en aquesta versió del protocol, l'any 1998 es va identificar una vulnerabilitat a SSH 1.5 que va permetre la inserció no autoritzada de material en un flux SSH xifrat. A la majoria de les implementacions, van afegir un pedaç conegut com a Detector d'atac de compensació SSH. Algunes d'aquestes implementacions revisades incloïen una nova fallada de desbordament d'enters, que permetia als atacants executar codi arbitrari amb root o les capacitats del dimoni SSH.
El gener de 2001 es va trobar una fallada que permet als atacants canviar l'últim bloc d'una sessió xifrada amb IDEA. El mateix mes es va trobar una altra falla que va permetre a un servidor malintencionat passar un inici de sessió de client a un altre servidor.
A causa de les seves vulnerabilitats inherents, generalment es considera que SSH-1 està obsolet i s'ha d'evitar eliminant explícitament la alternativa de SSH-1. La majoria dels servidors i clients actuals admeten SSH-2.
Recuperació de text pla per a CBC
El novembre de 2008 es va descobrir una vulnerabilitat teòrica que va permetre recuperar fins a 32 bits de text sense format d'un bloc de text xifrat xifrat mitjançant el mètode de xifratge estàndard de l'època, CBC, en totes les versions de SSH. La solució més senzilla és canviar a CTR, comptador. mode, en lloc del mode CBC, que fa que SSH sigui immune a l'atac.
en Java regex
Sospita de la NSA de desxifrar
La publicació d'Edward Snowden de documents sensibles a Der Spiegel el 28 de desembre de 2014 implica que l'Agència de Seguretat Nacional podrà descodificar algunes comunicacions SSH.