GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo SSH establece una comunicación segura

Cuando enviamos información/cartas confidenciales, queremos que se oculte del mundo exterior. Por lo tanto, nos aseguramos de que esté protegido sellándolo en un sobre y enviándolo a un destino mediante el Servicio Postal de los Estados Unidos (USPS). Al menos, así es como solíamos enviar información. Ni siquiera voy a entrar en una discusión sobre el cifrado y el código Morse, que usaba un nivel de secreto más avanzado.

Ahora, dado que los humanos hemos evolucionado y nos hemos adaptado a Internet, intercambiamos información mediante una conexión segura. Anteriormente, usábamos telnet para conectarnos a un servidor remoto usando el puerto 23. El problema era que enviábamos la información a través de texto sin formato, lo que significa que cualquiera que quisiera leer la información podía olfatear la red y la información estaba comprometida (el equivalente es que pudieran abrir la carta enviada a través del USPS y leerla).

Este resultado no es el que queríamos cuando enviamos el mensaje original. Tiene que haber una forma segura de enviar un mensaje a un servidor remoto, ¿verdad? Absolutamente, y la solución es enviarlo a través de Secure Shell (SSH).

Cómo SSH envía mensajes cifrados

Por lo tanto, quiero comunicarme de forma segura mediante mensajes cifrados del cliente al servidor y viceversa. Logro esto con SSH de la siguiente manera. SSH establece una conexión segura entre dos hosts a través del puerto 22:Host-1 (el servidor) y Host (el cliente). Después de autenticarse entre sí, habilitaron el intercambio seguro de mensajes.

Tipos de cifrado

SSH utiliza tres tipos de cifrado diferentes:

  • Cifrado simétrico
  • Cifrado asimétrico
  • Hashing

Explicaré brevemente estos tipos.

Cifrado simétrico

También conocido como cifrado de clave compartida, el cifrado simétrico suele ser una sola clave o un par de claves que se utilizan tanto para el cifrado como para el descifrado de un mensaje. Esta clave se utiliza para cifrar toda la sesión de comunicación entre un cliente y un servidor.

Tanto el cliente como el servidor acuerdan un único método y generan una clave compartida, que por supuesto nunca se divulga a un tercero y, por lo tanto, se utiliza para enviar mensajes de clave secreta/compartida. La parte más interesante de este método es que la clave nunca se intercambia entre un cliente y un servidor. En su lugar, cada máquina calcula la clave compartida de forma independiente utilizando un método acordado anteriormente. Incluso si una máquina de terceros captura los datos, no puede descifrarlos porque se desconoce el método utilizado para cifrar los datos.

Cifrado asimétrico

A diferencia del método anterior, este método utiliza un par de claves para el cifrado y descifrado. Estas se conocen como claves públicas y privadas. La clave pública, como sugiere su nombre, se distribuye ampliamente. La clave privada está estrechamente relacionada con la clave pública en términos de funcionalidad, pero no se puede calcular simplemente conociendo la clave pública.

La clave privada es un factor importante en toda la comunicación ya que el secreto depende de que la clave privada no sea revelada a ningún tercero, y es la única clave capaz de descifrar el mensaje, el cual es encriptado por su propia clave pública. Por lo tanto, si alguna de las partes desea descifrar y leer los mensajes, debe poseer la clave privada.

Probemos este método usando dos sistemas. Comenzaremos con la estación de trabajo, que tiene dos pares de claves generadas de la siguiente manera:

Luego inicio la conexión desde el servidor a la estación de trabajo:

Y por lo tanto, el servidor almacena la información de la estación de trabajo en sus known_hosts archivo como:

Una vez verificado el servidor, el servidor y el cliente negocian una clave de sesión mediante el algoritmo de intercambio de claves Diffie-Hellman. Esta clave compartida se utiliza para cifrar y descifrar.

La etapa final es la autenticación del cliente, y esto se realiza mediante el par de claves SSH. El siguiente diagrama muestra cómo ocurre este proceso:

Cuando emito el comando ssh -v [email protected] , esto es lo que sucede:

Conclusión

El propósito de este artículo fue concienciar al usuario sobre cómo SSH establece una comunicación segura entre dos sistemas. Con suerte, he ofrecido una idea de ese proceso.

[¿Quiere saber más sobre SSH? Descargue la hoja de referencia de SSH avanzada.]


Linux
  1. Cómo usar SSH en Linux desde Android

  2. Cómo configurar claves SSH

  3. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  4. Cómo proteger el servidor PostgreSQL

  5. Cómo asegurar el servicio SSH con Port Knocking

Cómo configurar la clave SSH en un servidor Plesk

Cómo agregar una clave pública SSH al servidor

Cómo configurar SSH en CentOS y RHEL

Cómo generar y usar una clave SSH usando PuTTY

Cómo SSH al servidor a través de Linux

Cómo proteger SSH con Fail2Ban