Shell segur

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca

En tecnologia de la informació i telecomunicacions SSH (Secure Shell, segur shell ) és un protocol que permet establir un xifrat remot sessió a través d' una interfície de línia d'ordres amb un altre amfitrió en una xarxa d'ordinadors . És el protocol que ha substituït el Telnet analògic, però insegur.

Descripció

El client SSH té una interfície de línia d'ordres similar a la de telnet i rlogin , però tota la comunicació (és a dir, tant l' autenticació - mútua - com la sessió de treball) es realitza de forma xifrada. Per aquest motiu, SSH s'ha convertit en un estàndard de facto per a l'administració remota de sistemes UNIX i dispositius de xarxa , cosa que fa que el protocol telnet sigui obsolet, considerat massa perillós a causa de la seva falta de protecció contra les escoltes.

El client i el servidor SSH s’instal·len o s’instal·len a moltes versions d’ UNIX , GNU / Linux , macOS i Microsoft Windows . També està disponible com a eina d’administració en alguns dispositius de xarxa . L’Internet Assigned Numbers Authority ( IANA ) ha assignat el port 22 TCP i UDP al servei SSH, tot i que encara és possible implementar el servei SSH en altres ports no definits per la IANA .

L'ordre en sistemes similars a UNIX és la següent:

 ssh [opcions] nom d'usuari @ amfitrió [ordre]

La primera versió de SSH va ser completament de codi obert , mentre que la segona es va convertir en comercial; no obstant això, hi ha una versió gratuïta anomenada OpenSSH que es basa en la primera versió, però que proporciona suport per a la segona versió.

Arquitectura de protocols

El protocol SSH es basa en una arquitectura que es pot representar en tres nivells diferents: Transport Layer Protocol, User Authentication Protocol i Connection Layer Protocol. La divisió en tres nivells independents garanteix una flexibilitat extrema del protocol: la independència lògica dels nivells us permet modificar la configuració de la connexió sense haver de modificar els nivells superior o inferior del protocol, per exemple, podeu modificar la compressió de la informació protocol sense haver de canviar el protocol de xifratge o autenticació del sistema.

És important especificar que els nivells esmentats anteriorment no tenen cap relació amb els nivells de l’ estàndard ISO / OSI ja que són nivells interns del protocol SSH que al seu torn es poden situar immediatament per sobre de la capa de transport ISO / OSI. De fet, els nivells interns del protocol SSH cobreixen els últims tres nivells de la pila ISO / OSI aplicant una organització diferent de la prevista per l'estàndard per a xarxes.

Protocol de capa de transport

El Protocol de capa de transport és el primer dels tres nivells del protocol SSH, conté tots els protocols i procediments utilitzats en l’establiment i la creació del canal de comunicació client-servidor xifrat. Dins de la capa de transport, es realitza l'autenticació del servidor, l'intercanvi de claus, el xifratge, la compressió i la comprovació de la integritat dels paquets. El nivell comprèn en part el nivell de sessió i en part el nivell de presentació de la norma ISO / OSI. La connexió creada normalment utilitza el protocol TCP / IP per a la comunicació a la xarxa i la capa de transport, però teòricament és independent d’ella. A la capa de transport es comprova la integritat dels paquets, però no es gestionen els casos en què es perden els paquets de connexió; en aquests casos, la sessió finalitza i s'ha de restablir completament. Per aquests motius, es recomana que es facin protocols de transport orientats a la connexió com TCP per evitar la pèrdua de paquets i el tancament de la connexió.

Algorismes de negociació

La negociació d’algoritmes és un dels primers passos per establir una connexió SSH. Per tal de determinar quins algorismes s’utilitzaran a la connexió SSH, el client i el servidor han d’intercanviar la llista d’algoritmes que admeten per a la connexió. La llista conté tots els algorismes disponibles per ordre de preferència, la preferència i els algorismes disponibles estan determinats per la configuració del programari del client i del servidor. Després de l'intercanvi de les llistes, es trien els protocols disponibles en ambdues màquines, donant prioritat als algorismes superiors per ordre de preferència. Si no hi ha algoritmes comuns entre les màquines, la connexió finalitzarà.

Intercanvi de claus

Després de la definició dels algorismes que s’utilitzaran en la connexió, es produeix un dels passos més importants per establir el canal de comunicació segur: l’intercanvi de claus. Per garantir la seguretat i la privadesa de la comunicació, és essencial establir algoritmes d’intercanvi de claus segurs, un defecte de seguretat en l’intercanvi de claus comprometria tota la connexió. La negociació de les claus té lloc al començament de cada connexió, per garantir una major seguretat, les claus generalment es renegocien cada hora o cada gigabyte de dades passades per la connexió.

Els algorismes d’ intercanvi de claus més utilitzats són:

  • diffie-hellman-group1-sha1
  • diffie-hellman-group14-sha1

Els dos algorismes utilitzats són variacions de l' algorisme d'intercanvi de claus Diffie-Hellman en què s'ha afegit un sistema de certificació de servidor mitjançant una clau d'amfitrió. Observant les cadenes identificatives dels algoritmes es pot deduir que varien només pel terme grupX, aquest terme defineix el grup utilitzat en la definició dels paràmetres de l'algorisme de Diffie-Hellman, aquests grups estan documentats dins de RFC3526.

L’algorisme Diffie-Hellman ha estat certificat com un dels mètodes d’intercanvi de claus més segurs a través d’un canal de comunicació insegur i es troba entre els algorismes més utilitzats al món. A causa de l'elevat nombre de càlculs necessaris per a l'intercanvi de claus Diffie-Hellman, és possible utilitzar l'algorisme RSA igualment segur però menys exigent en termes de potència de càlcul en sistemes antics amb menys potència de càlcul.

Autenticació del servidor

L'autenticació del servidor s'utilitza per evitar que un usuari maliciós "suplanti" el servidor proporcionant les credencials de l'usuari ( falsificació de l'atac per part de l' home ). Per fer-ho, es genera un parell de claus asimètric per a cada servidor. La clau privada roman al servidor. El client ha de conèixer la clau pública, el client pot obtenir una clau de servidor mitjançant botigues de claus públiques disponibles al web o rebent-la directament des del servidor durant la primera connexió.

L’autenticació es produeix durant l’intercanvi de claus de Diffie-Hellman, el servidor crea un missatge xifrat amb la seva clau privada i l’envia al client, el client el desxifra amb la clau pública del servidor que verifica la identitat del servidor, si el desxifratge del missatge és correcte, el client continua amb l'establiment de la connexió, en cas contrari, atura el procediment. Com que només el servidor ha de conèixer la clau privada, el client pot determinar la identitat del servidor amb el qual es comunica.

Xifratge de connexió

Un cop definida una clau secreta que només el client i el servidor coneixen, es pot utilitzar un protocol de xifratge simètric per xifrar la comunicació entre client i servidor.

Un algorisme de xifratge simètric us permet utilitzar una sola clau per xifrar i desxifrar la informació. En un algorisme de clau simètrica, la clau compartida s'ha de definir abans d'inicialitzar la connexió mitjançant un mètode de comunicació de clau segura que a SSH té lloc mitjançant l'algorisme de Diffie-Hellman. Els algorismes de claus simètriques garanteixen un alt estàndard de seguretat i un cost baix en termes de potència de càlcul (a diferència dels algorismes de claus asimètriques com l'algorisme RSA).

La llista d’algoritmes simètrics que pot utilitzar el protocol SSH inclou:

  • 3des-cbc
  • blowfish-cbc
  • twofish256-cbc
  • twofish-cbc
  • twofish192-cbc
  • twofish128-cbc
  • aes256-cbc
  • aes192-cbc
  • aes128-cbc
  • serpent256-cbc
  • serpent192-cbc
  • serpent128-cbc
  • arcfour
  • idea-cbc
  • cast128-cbc

Els algoritmes més utilitzats són AES i 3DES presents a pràcticament tots els ordinadors.

És possible utilitzar un algorisme de xifratge nul que realment no realitzi cap operació de xifratge, es desaconsella molt aquesta opció, ja que faria que tota la comunicació sigui insegura.

Després d’haver establert els protocols a utilitzar i després d’haver realitzat l’intercanvi de claus mitjançant el protocol Diffie-Hellman, és possible establir la connexió xifrada amb l’algoritme de clau simètrica definit prèviament.

Compressió d’informació

El protocol SSH permet aplicar algoritmes de compressió d’informació al flux de dades que passa per la connexió. Actualment s'admet la compressió mitjançant la biblioteca zlib .

Integritat del paquet

La comprovació d’integritat de la informació és un procés que permet verificar que les dades contingudes en un paquet rebut per un dels dos hosts de la connexió coincideixen amb les dades enviades per l’altra màquina. El procés de control de la informació us permet identificar qualsevol error en la fase d’enviament i sobretot permet identificar qualsevol atac de reproducció per part d’ordinadors fora de la comunicació.

Els algoritmes MAC (Message Authentication Code) que es poden utilitzar al protocol SSH són:

  • hmac-sha1
  • hmac-sha1-96
  • hmac-md5
  • hmac-md5-96

Es recomana el procés de comprovació d’integritat però no obligatori en una connexió SSH.

La comprovació d’integritat dels paquets es realitza després de la definició de la clau secreta de la connexió, abans que no sigui possible realitzar una comprovació d’integritat.

Protocol d'autenticació d'usuari

Després de crear un canal de comunicació segur, el protocol ssh proporciona autenticació d'usuari mitjançant mètodes definits al Protocol d'autenticació d'usuari. Aquesta capa de l'arquitectura del protocol SSH inclou les operacions requerides per l'estàndard ISO / OSI per a la capa de sessió.

Autenticació de clau pública

L'autenticació de clau pública és el mètode d'autenticació més segur implementat al protocol SSH i sempre ha d'estar disponible a tots els servidors. Aquest mètode d’autenticació es basa en xifratge asimètric . L’algoritme de xifratge asimètric més utilitzat per a la generació de claus és RSA.

Procediment
Generació i transferència de claus

Per autenticar-se, el client genera un parell de claus pública / privada mitjançant un algorisme de xifratge asimètric admès pel protocol SSH mitjançant l'ordre ssh-keygen. Un cop generades les claus, l'usuari ha de transferir la seva clau pública al servidor on generalment s'emmagatzema en un fitxer especial al directori inicial de l'usuari al servidor; la clau privada es manté al client i no s’ha de revelar, per garantir una major seguretat, és possible protegir la clau privada amb una contrasenya ( contrasenya ). L'usuari pot transferir la seva clau pública al servidor a través de suports d'emmagatzematge físic o mitjançant l'ordre ssh-copy-id.

Autenticació

El servidor font explota les característiques particulars dels algorismes criptogràfics asimètrics per verificar la identitat de l'usuari. Durant la fase d’autenticació, el servidor genera una cadena aleatòria de 256 bits, la xifra mitjançant la clau pública de l’usuari i l’algoritme de xifratge corresponent a la clau i l’envia al client. El client desxifra el missatge mitjançant la seva clau privada i envia el hash de la cadena rebuda al servidor, si el hash de la cadena de client coincideix amb el hash de la cadena de servidor, l’usuari està autenticat. Només el propietari de la clau privada de l'usuari és capaç de desxifrar correctament el missatge xifrat del servidor, d'aquesta manera el servidor pot verificar la identitat del client.

En l’autenticació de claus públiques, no es requereix cap contrasenya de l’usuari tret que s’hagi aplicat una contrasenya a la clau privada.

Autenticació de contrasenya

L'autenticació de contrasenya és el mètode d'autenticació més senzill admès pel protocol SSH.

L'usuari proporciona un nom d'usuari i una contrasenya, el servidor compara aquestes dades amb la base de dades d'usuaris del sistema operatiu. Aquest intercanvi es realitza dins d’un canal xifrat, de manera que no corre el risc d’intercepció.

Procediment:

  1. A $ ⇒ B: SSH_MSG_USERAUTH_REQUEST, pappy, ssh-userauth, teclat interactiu
  2. B $ ⇒ A: SSH_MSG_USERAUTH_INFO_REQUEST, pappy, autenticació de contrasenya, 1, "Introduïu contrasenya"
  3. A $ ⇒ B: SSH_MSG_USERAUTH_INFO_RESPONSE, 1, "amor"
  4. B $ ⇒ A: SSH_MSG_USERAUTH_SUCCESS.

Per evitar que la força bruta atacs, 1 DenyHosts o fail2ban eina es pot utilitzar.

Protocol de capa de connexió

La capa de connexió és el nivell més alt del protocol SSH, permet establir terminals interactius, executar comandes remotes, reenviar connexions i reenviar aplicacions gràfiques X11. La capa de connexió gestiona aquestes funcions mitjançant diversos canals de comunicació que passen pel mateix túnel xifrat de la capa de transport.

Canals

Cada terminal interactiu obert i cada connexió reenviada a través de la connexió SSH poden ocupar un canal de comunicació. Com que és possible establir diversos canals, cada canal té un número d'identificació, aquest número s'utilitza per distingir els paquets pertanyents a diferents canals que permeten a l'aplicació SSH reconstruir les diverses comunicacions obertes a través del túnel xifrat. L'obertura d'un canal es produeix quan les dues parts acorden la seva creació, si una de les dues parts es nega, el canal no es crea. Mentre un dels amfitrions encara no hagi confirmat l'obertura del canal, no es permetrà utilitzar cap paquet

Desviament de ports

Gràcies a l’extrema flexibilitat del protocol SSH, és possible crear túnels xifrats capaços de portar sessions TCP arbitràries dins de la connexió xifrada, permetent protegir els protocols no protegits de la intercepció o eludir les limitacions d’encaminament.

Aquesta característica s’anomena reenviament de ports i us permet obrir un sòcol TCP al SSH del client (reenviament de ports locals ) o al servidor (reenviament de ports remots ). Les connexions rebudes en aquest port es reenvien des de l’altre extrem de la connexió SSH a un host i port específics.

Per exemple, amb aquesta ordre ens connectem a host1 , reenviant el port 10022 de la màquina on llancem el client ssh al port 22 de host2 a través d’un canal segur entre client i host1:

 ssh host1 -L 10022: host2: 22

Mentre aquesta connexió està activa, la connexió al port client 10022 es redirigirà al port host2 22 .

Exemple d'ús de reenviament de ports

El reenviament de ports és útil, per exemple, per proporcionar assistència remota a màquines sense un sistema de gestió remota segur. És possible crear un túnel segur entre un port client i un port al servidor remot o a qualsevol tercera màquina darrere del servidor remot, sempre que la màquina servidor hagi habilitat el reenviament. Normalment, això és possible sense instal·lar cap paquet addicional.

Per exemple, en el següent escenari

 CLIENT - [xarxa segura] -> servidor ssh - [xarxa insegura] -> TERCERA MÀQUINA

Si volem utilitzar un escriptori remot a la tercera màquina, només cal connectar-se al servidor ssh incloent un túnel entre un port local de la màquina on treballem i el port 3389 de la TERCERA MÀQUINA. Després d’això, només heu d’iniciar el client RDP i connectar-vos a localhost: (port escollit).

El client ssh local establirà una connexió xifrada amb el servidor, crearà un túnel dins d'aquesta connexió xifrada i enviarà la connexió RDP per aquest túnel. Al seu torn, el servidor establirà una sessió TCP normal amb la tercera màquina del port sol·licitat.

Com a resultat, el client RDP es comunicarà amb la tercera màquina. La connexió entre el servidor ssh i la tercera màquina no es xifrarà, per la qual cosa és recomanable que la comunicació entre aquestes dues màquines no tingui risc d’intercepció. La tercera màquina veurà la connexió TCP provinent del servidor ssh en lloc del client.

X reenviament

El reenviament de ports també és útil per transportar aplicacions X Window a través d’una connexió SSH. SSH també defineix automàticament les variables d'entorn adequades, de manera que les aplicacions X llançades des d'un terminal remot es mostrin a la pantalla des de la qual es va iniciar la connexió.

El reenviament X al costat del client s'ha d'activar passant l'opció " -X " mentre que al costat del servidor s'ha de modificar el fitxer de configuració / etc / ssh / sshd_config activant la directiva X11Forwarding (recordeu de reiniciar el servidor un cop hàgiu fet el canvieu al fitxer de configuració).

Articles relacionats

Altres projectes

Enllaços externs

Control de l'autoritat GND ( DE ) 4628726-7