Configurar llaves para SSH

En el post anterior hablaba sobre criptografía de llave pública, ahora les explicaré como implementarla en un servidor para proteger el acceso a SSH.

El par de llaves puede ser generado en windows o en sistemas basados en UNIX con los siguientes pasos:

MacBook-Pro-de-Arturo-Leon:/ arturo$ cd ~/.ssh

Ya en la carpeta generamos nuestro par de llaves, al no pasar parámetros nos generará por defecto una llave RSA de 2048 bits

MacBook-Pro-de-Arturo-Leon:.ssh arturo$ ssh-keygen

Mostrará la siguiente salida, cuando te pide el archivo donde se guardará puedes presionar enter para dejarlo en default (id_rsa) o escribir uno y opcionalmente puedes usar una contraseña que agrega una capa extra de seguridad ya que para acceder al servidor se necesitará la llave y la contraseña, al no configurar una con la llave será suficiente para acceder.

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/arturo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/arturo/.ssh/id_rsa.
Your public key has been saved in /Users/arturo/.ssh/id_rsa.pub.
The key fingerprint is:
75:fc:34:ab:80:21:7b:43:a8:ea:19:7b:f2:09:94:eb arturo@MacBook-Pro-de-Arturo-Leon.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|       .   .     |
|      o o . o o  |
|   . . + + . o o |
|  o . . S .   o  |
| . o   . . . .   |
|  =         .    |
| o.=..           |
|  E+o            |
+-----------------+

Ya está generado el par de llaves, lo podemos comprobar listando el contenido del directorio

MacBook-Pro-de-Arturo-Leon:.ssh arturo$ ls
id_rsa		id_rsa.pub	known_hosts

id_rsa será nuestra llave privada mientras que id_rsa.pub será la llave pública. Ahora es necesario copiar el contenido de id_rsa.pub dentro de el archivo ~/.ssh/authorized_keys en el servidor remoto, puedes tener cuantas llaves quieras (una por línea).

En mi caso voy a deshabilitar el acceso a SSH utilizando contraseña editando el archivo /etc/ssh/sshd_config en el servidor remoto dejan el parámetro de la siguiente forma

PasswordAuthentication no

Y asegúrate que el acceso con llave esté habilitado

PubkeyAuthentication yes

Nos queda finalmente recargar la configuración de SSH con el siguiente comando

service sshd reload

Es recomendable primero activar el acceso con llave y luego deshabilitar el acceso con password para evitar quedar “fuera” de el servidor y no poder entrar para hacer correcciones.

Otras opciones para asegurar el servidor es cambiando el puerto por defecto que utiliza SSH, deshabilitar el acceso root, siempre contar con un firewall y tener el software actualizado.