Si acabas de contratar un servidor, sea un VPS o dedicado, o ya tienes uno, seguro que te vendrá bien aumentar su seguridad añadiendo un par de claves SSH. Hoy veremos cómo realizar esto de manera sencilla.
Secure Shell (SSH) es un protocolo de comunicación encriptado para conectarse a un servidor a través de la red. Existen varias maneras de autenticarse,en algunos casos disponemos de un usuario y contraseña, y en otras ocasiones (la que nos ocupa ahora) podremos usar un par de claves.
En dicho par tendremos una clave pública y una privada,la pública la subiremos a nuestro servidor y la privada debemos conservarla en lugar seguro, pues será la que utilicemos para acceder a nuestro equipo remoto sin necesidad de introducir contraseña. Esto es un plus de seguridad, ya que reducimos la posibilidad de utilizar la fuerza bruta para adivinar nuestra contraseña.
Lo primero que debemos hacer para establecer un par de claves SSH es contar con los requisitos necesarios, que son:
- DIsponer de un servidor remoto (con acceso root o privilegios)
- Disponer del acceso SSH a dicho servidor
- Un equipo Linux para generar las claves
- Un poco de paciencia
Generando nuestro par de claves SSH
Lo primero que debemos hacer es, en nuestro equipo local, generar las claves. En mi caso utilizo un Linux Mint, pero podría ser Ubuntu o la distro que elijas (algunas cosas pueden variar si utilizas otras distribuciones). Abrimos una terminal e introducimos el siguiente comando:
ssh-keygen
Esto generará un par de claves, que nos preguntará dónde queremos guardar. Si estamos de acuerdo con el nombre y la ruta por defecto, le daremos a continuar, sino podremos escoger un nombre y una ruta personalizada.
Nos pedirá también si queremos utilizar una passphrase para aumentar la seguridad de nuestra clave, que nos pedirá cuando la vayamos a usar en un nuevo equipo. Tenemos también la posibilidad de no usar ninguna, aunque es menos seguro, por supuesto.
Una vez realizado este paso,y con la claves ya creadas, se nos generarán dos archivos en el directorio /home/usuario/.ssh. La clave pública será la id_rsa.pub, la otra clave, id_rsa, será nuestra clave privada, que debemos conservar en lugar seguro, ya que de perderla, perderemos el acceso remoto a nuestro equipo una vez lo hayamos configurado. No debemos compartirla obviamente…
Copiar la clave pública a nuestro servidor
Una vez generadas es el momento de subir nuestra clave pública a nuestro servidor. Para ello basta con un simple comando, aunque si tienes más de una clave puedes utilizar el otro método, algo más enrevesado a la vista, pero igualmente efectivo. En nuestra terminal (de nuestro equipo local) debemos introducir:
ssh-copy-id usuario@servidor_remoto
Evidentemente debemos sustituir usuario por nuestro usuario de SSH y servidor_remoto por la IP o el host de nuestro servidor. Con este simple comando estaría ya la clave pública en nuestro equipo remoto, pedirá confirmación y la contraseña (del servidor) para efectuar la operación.
Cabe la posibilidad de que en tu equipo hayas generado varias claves, con lo que si el nombre de tu clave es diferente, puedes utilizar este otro comando (debes sustituir los mismos datos):
cat ~/.ssh/id_rsa.pub | ssh usuario@servidor_remoto 'mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys'
Accediendo con nuestro par de claves SSH
Para acceder a nuestro host remoto con nuestro nuevo par de claves,simplemente debemos utilizar el siguiente comando (el mismo que cuando accedemos normalmente):
ssh usuario@servidor_remoto
El sistema utilizará nuestra clave privada para establecer la conexión sin necesidad de contraseña. Si hemos establecido una passphrase nos la pedirá, simplemente la introducimos y listo. Ya hemos accedido con nuestro nuevo par de claves.
Desactivando el acceso con contraseña
Una vez hemos comprobado que todo funciona, ha llegado el momento crítico, el de desactivar el acceso mediante contraseña. Si todo ha ido bien, estaremos conectados por SSH con nuestra clave, con lo que podemos administrar el servidor. Una vez dentro, debemos editar el fichero de configuración de SSH. Para ello tecleamos el siguiente comando:
sudo nano /etc/ssh/sshd_config
Una vez dentro del archivo, debemos buscar la siguiente línea, eliminar el comentario (#) y cambiar el valor yes por no:
PasswordAuthentication no
Con esto debería bastar para que ya no se pudiese acceder con contraseña. Un último paso sería reiniciar el servicio SSH mediante el comando:
sudo systemctl restart ssh
Una vez hecho esto, solo podrán acceder los equipos que dispongan de la clave privada que hemos generado (y de su passphrase). Al estar desactivado el acceso mediante contraseña no se podrá realizar un ataque de fuerza bruta para acceder a tu servidor.
Resumiendo
Hemos visto cómo crear un par de claves SSH, cómo instalar la clave pública en el servidor remoto, cómo acceder con nuestra clave privada y cómo desactivar el acceso por contraseña.
Ten en cuenta que debes guardar celosamente tus claves, si no tienes muy claro cómo puedes hacerlo, te recomiendo echarle un ojo a este post sobre gestores de contraseñas open source. Si por el contrario no tienes muy claro cómo gestionar el acceso a tus máquinas de una forma ordenada, también puedes ver algunas aplicaciones para acceder a sesiones remotas.
Y esto ha sido todo por hoy, espero que te haya resultado útil el post. Si te ha gustado, no olvides compartirlo. Seguiremos explorando la informática en futuros artículos. Nos vemos en la red, saludos!