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.