SSH: Conexiones remotas seguras entre cliente y servidor

Por lo general, un administrador de sistemas se conecta de manera remota a los equipos por los que es responsable a través de un emulador de terminal. Rara vez lo hace a través de una terminal física, y esto solamente cuando por alguna razón no dispone de conectividad de red. A fin de poder asegurar la transmisión de los datos mientras «viajan» entre dos equipos es conveniente que utilicemos algún método que proteja dichos datos mediante cifrado. SSH (Secure SHell), un conjunto de protocolos de red y de aplicaciones relacionadas, nos brinda esa posibilidad.

Fundamentos de SSH

Sin entrar en detalles de cómo se realiza el cifrado de los datos y la transmisión de los mismos entre dos equipos podemos decir que SSH opera bajo la modalidad cliente-servidor. El cliente, utilizando el programa ssh (disponible por defecto en cualquier distribución Linux) se comunica con el equipo remoto, donde se encuentra corriendo el servicio sshd. Este último generalmente NO se encuentra disponible en una instalación nueva, por lo que es necesario que lo instalemos para poder poner en funcionamiento el servidor.

Para instalar el servidor en Debian:

aptitude install openssh-server

En CentOS y similares:

yum install openssh-server

En ambos casos estaremos utilizando la implementación de SSH llamada OpenSSH, que es la más popular.

Una vez instalado el servidor SSH, asegurémonos de que el servicio sshd se está ejecutando y que quedará habilitado para iniciarse automáticamente en futuros reinicios del sistema:

systemctl start sshd
systemctl enable sshd

Conexiones al servidor

Supongamos que el servidor SSH tiene asignada la IP 192.168.0.29. Para conectarnos al mismo, abriremos una terminal y ejecutaremos el siguiente comando:

ssh 192.168.0.29

Como vemos en la Fig. 1, durante la primera conexión se nos advertirá que la autenticidad del host remoto no puede ser establecida y se nos preguntará si deseamos continuar. Si decidimos hacerlo, se guardará en el cliente la clave ECDSA del servidor (por ahora pensemos en que es una identificación única del mismo):

Iniciando una conexión mediante SSH por primera vez
Figura 1 – Iniciando una conexión mediante SSH por primera vez

En futuras conexiones, el cliente verificará la clave ECDSA almacenada con la que presente el servidor, y si no son idénticas nos alertará de un posible ataque mediante la metodología Hombre en el medio. Si en realidad el equipo no es el mismo (por ejemplo, por un cambio de servidor), deberemos borrar la clave almacenada con el comando que se nos sugiere en la Fig. 2:

Previniendo ataques por Hombre en el medio ante una conexión SSH
Figura 2 – Previniendo ataques por Hombre en el medio ante una conexión SSH

En el próximo post veremos cómo asegurar nuestro servidor SSH. ¡Hasta entonces!