SSH es el acrónimo de Secure Shell (terminal segura) y es un protocolo que se emplea en el manejo de servidores de forma remota.
Posibilita que dos ordenadores establezcan una conexión cifrada y directa, haciendo segura la comunicación dentro de una red potencialmente insegura.
Este protocolo es indispensable para que no haya terceros que puedan acceder al flujo de datos que se transfieren entre ambos equipos.
La clave del puerto SSH es que permite que el usuario haga todo tipo de tareas con una conexión que encripta toda la información, razón por la cual es más segura que una conexión punto a punto tradicional.
Esta, además de ser un protocolo muy ligero y sencillo, es la principal razón por la que se utilizan el protocolo SSH para administración de equipos y servidores.
Es que ser víctimas de un hackeo, virus o malware es el temor más grande que tenemos al momento de utilizar nuestro ordenador.
Para que lo tengas en claro: si puedes utilizar SSH serás capaz de gestionar por completo el equipo al que te estés conectando, a través de comandos, como si estuvieras delante del mismo.
La primera versión de Secure Shell -SSH-1- apareció en 1995 y fue desarrollado por Tatu Ylonen, en la Universidad de Helsinki, Finlandia.
En ese entonces ya existían otros protocolos, como Telnet o Remote Shell, pero no eran realmente seguros ya que la información se transmitía sin cifrar.
En apenas 5 años, SSH ya tenía más de 2 millones de usuarios a nivel mundial, lo que demostró el gran atractivo del protocolo debido a su sencillez y seguridad. Pero la cosa no se detuvo ahí.
En 2006 se presentó la segunda versión -SHH-2-, la que conocemos hoy en día (es cierto que ha tenido mejoras notables, ofreciendo mayor seguridad y novedosas funciones).
Es preciso conocer las principales diferencias que existen entre ambos protocolos SSH:
Diferencias entre protocolos SSH 1 y SSH 2
La primera versión del puerto SSH irrumpió con fuerza porque brindó una seguridad hasta el momento desconocida por los usuarios.
SSH 2 es una versión muy mejorada por múltiples razones, como por ejemplo la posibilidad de cifrar las conexiones con AES y 3DES, por ejemplo, protocolos de cifrado mucho más seguros que los existentes anteriormente.
Además, una cosa que tiene SSH es que permite tunelizar conexiones, es decir, introducir conexiones a través de él, como si de un túnel se tratara. Por ejemplo, SFTP (Secure FTP) usa un túnel SSH para establecer una conexión FTP de transmisión de archivos, cifrada por el propio túnel SSH.
¿Cómo funciona el puerto SSH?
Establecer una conexión SSH es bastante sencillo. La única herramienta que necesitas es un cliente para nuestros sistema operativo. Algunos, como Mac y Linux lo tienen ya incorporado en la terminal, otros, como en el caso de Windows, dependen de un cliente que tendremos que instalar, como PuTTY (https://www.putty.org/) o Termius (https://termius.com/).
La comunicación por SSH, como cualquier comunicación entre ordenadores, está basada en tres elementos: cliente, servidor y red. El cliente, le enviará una petición al servidor, que la aceptará (si tiene permiso para conectarse, usuario y contraseña son correctos, certificados válidos y alguna que otra posible comprobación más…) y establecerá la comunicación a través de la red.
La seguridad se logra mediante el uso de llaves y técnicas de cifrado. Cada server estará configurado adecuando a las necesidades. Por ejemplo, en un servidor privado, sin acceso a internet, en fase de pruebas, nos puede valer con una combinación de usuario / contraseña para garantizar la seguridad, mientras que en un entorno de producción, con acceso a internet y amenazas potenciales, se configurará un acceso mediante certificados que permite sólo conectarse desde los equipos que sean autorizados.
El proceso de una conexión por el puerto SSH, consta de los siguientes pasos:
Petición
El cliente le envía una petición al servidor. En función de la configuración de seguridad del servidor, este aceptará la petición o la rechazará
Autentificación
Si el servidor ha aceptado la petición del cliente, el siguiente paso es autenticarse. Para ello, como hemos mencionado antes, podemos usar un usuario y contraseña (menos seguro), o autenticarnos mediante certificados (con clave pública y privada). Esta es una capa que se añade a la autenticación por usuario / contraseña, no la sustituye enteramente.
Codificación
Después de la autentificación entre los dos ordenadores, se establece una conexión cifrada, para lo cual se genera una clave de sesión que expira cada vez que te desconectas.
Tanto el cliente como el servidor tienen la misma clave, por lo que pueden cifrar y descifrar cualquier mensaje durante la conexión al puerto SSH.
Además de cifrar la conexión, se comprueba la integridad de los datos mediante lo que se conoce como hashing. Un hash es una especie de firma que se genera a partir de los datos transmitidos.
Para ello se emplea un algoritmo tomando en cuenta los datos, lo que genera un resultado, el cual tiene que ser el mismo si no cambian los datos. Así, se puede conocer automáticamente cuando se produce un cambio durante la conexión.
El cliente SSH es el programa que inicia la conexión con el servidor. Siempre se encuentra en el ordenador desde el que nos conectamos.
Para ello, dependiendo del sistema operativo, debemos instalar un software para establecer la comunicación entre los dos equipos.
Servidor SSH
El servidor SSH es el software que se escucha a la espera de una petición SSH para establecer la conexión. Se encuentra en el equipo que queremos administrar.
Tipos de técnicas de encriptación del puerto SSH
Buena parte de la seguridad de la conexión puerto SSH depende de las técnicas de encriptación, razón por la cual es preciso conocer los tres métodos que se pueden emplear:
Encriptación simétrica
Es la más común y se basa en el método secret key (clave secreta), la cual se utiliza en el cifrado y descifrado de la conexión.
La seguridad de este método recae en que la clave solo la pueden conocer emisor y receptor. Cualquier intermediario que posea dicha contraseña también podrá conocer la información que se está transmitiendo.
Encriptación asimétrica
Este tipo de técnica se basa en una clave pública y privada. Son dos claves generadas simultáneamente, y funcionan de la siguiente manera: lo que cifra la clave pública sólo se puede descifrar con la privada, y viceversa.
La clave pública de un equipo es, como su nombre indica, pública, y le sirve, para que nos entendamos, a modo de DNI, mientras que la privada, solo la conoce él y le sirve de contraseña.
Poniendo un ejemplo, si ciframos un mensaje con nuestra clave pública, solo nosotros o a quien nosotros le hayamos confiado nuestra clave privada podrán saber que contiene. Otorga Seguridad.
Si en cambio nosotros ciframos un mensaje con nuestra clave privada, se descifrará con nuestra pública, haciendo saber que fuimos nosotros quienes ciframos el mensaje. Esto se usa en informática para lo que se llama no repudio (no se puede negar de la participación en una comunicación).
Hashing
Si bien el hashing, como hemos dicho antes, no es un protocolo de cifrado, si que nos sirve para saber si los mensajes han sido alterados entre emisor y receptor.
En resumen, SSH es un protocolo simple, muy potente, que nos permite administrar servidores de manera remota y segura, siempre y cuando se configure adecuadamente a nuestras necesidades y, como siempre en informática, con las medidas de seguridad necesarias.
Tunel SSH
Os dejamos por aquí un manual para hacer un tune por el puerto SSH muy interesante: https://linuxblogonline.org/como-configurar-el-tunel-ssh-con-putty/