Guía para configurar claves SSH en un servidor Linux paso a paso.
¿Cómo configurar claves SSH en un servidor Linux o implementar la autenticación con clave pública? Este artículo incluye una guía paso a paso de cómo configurar claves SSH en un servidor Linux para mejorar la seguridad al conectarse de forma remota.
Existen diferentes opciones para conectarse de forma remota y segura a un servidor según el sistema operativo que utilicemos. En el caso de Linux, el protocolo SSH es el más utilizado. Así que en este artículo queremos hablar sobre la configuración de claves SSH para mejorar aún más la seguridad al conectarnos a nuestros servidores. Empecemos por presentar brevemente SSH.
El protocolo SSH proporciona un método seguro para acceder a un recurso privado, mediante el uso de un usuario y una contraseña, de forma remota. Sin embargo, este sistema tiene un problema: la contraseña podría ser capturada por cualquier atacante, lo que pondría en riesgo la información que tengamos guardada en su interior. De ahí la importancia de usar un sistema de autenticación adicional: las claves SSH. Estas, al contrario que las contraseñas, son casi imposibles de descifrar.
¿Qué es la autenticación con clave pública?
La autenticación con clave pública es un método de seguridad alternativo a las contraseñas, mucho más difícil de hackear y, por lo tanto, más seguro. Este método de autenticación es recomendable usarlo para acceder tanto a servidores cloud como a servidores bare-metal.
¿Qué son las claves SSH?
La clave SSH consiste en la generación de un par de claves que proporcionan dos largas cadenas de caracteres —una pública y una privada—. La clave pública se instala en cualquier servidor y luego se desbloquea mediante la conexión con un cliente SSH que hace uso de la clave privada. Si las dos claves coinciden, el servidor SSH permite el acceso sin necesidad de utilizar una contraseña. No obstante, para añadir una capa de seguridad adicional, siempre podemos aumentar la protección de la clave privada usando una contraseña.
En este artículo vamos a explicar cómo configurar la autenticación con SSH con claves ed25519 y claves RSA. A continuación definimos brevemente en qué consisten estos sistemas criptográficos.
¿Qué es RSA?
En la criptografía de clave pública, el sistema criptográfico RSA es el algoritmo basado en la factorización de números enteros más utilizado, tanto para cifrar como para firmar digitalmente. RSA es el acrónimo de Rivest, Shamir and Adleman, los apellidos de los creadores del algoritmo —Ron Rivest, Adi Shamir y Leonard Adleman—.
Configurar la autenticación con claves RSA paso a paso
Para los sistemas antiguos que no soportan las claves ed25519, a continuación explicamos paso a paso cómo crear las claves SSH con un par de claves RSA, para acceder de forma segura a servidores virtuales o bare-metal Linux.
1º.- Crear el par de claves RSA
El primer paso consiste en crear el par de claves RSA en la máquina cliente, que por lo general es el equipo que solemos utilizar. Para ello ejecutamos la siguiente instrucción en la línea de comandos:
$ ssh-keygen -t rsa
2º.- Almacenar las claves y la contraseña
Una vez hayamos ejecutado la instrucción para generar las claves, se nos pedirá que indiquemos en qué ruta queremos almacenar la clave:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Nota: Si no escribimos nada y pulsamos la tecla «Intro»
, la clave se almacenará en la ruta que aparece entre paréntesis.
3º.- Generar una contraseña para la clave privada
Una vez indicada la ruta en la que se almacenará la clave, podemos incluir una contraseña:
Enter passphrase (empty for no passphrase):
Si no queremos usar una contraseña, podemos dejarlo en blanco como se indica entre paréntesis y pulsar «Intro»
. Sin embargo, es recomendable incluirla para añadir una capa de seguridad adicional. De este modo, aunque algún ciberdelincuente consiguiera la clave, no podrían hacer uso de ella mientras no diera con la contraseña. El único inconveniente de crear una contraseña es que habría que escribirla cada vez que se utilizara. Por supuesto, lo más recomendable es crear siempre contraseñas seguras.
Una vez finalizado este paso, si todo va bien, deberíamos ver en pantalla algo parecido a esto:
ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/demo/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/demo/.ssh/id_rsa.Your public key has been saved in /home/demo/.ssh/id_rsa.pub.The key fingerprint is:4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@xyz.localThe key's randomart image is:+--[ RSA 2048]----+| .oo. || . o.E || + . o || . = = . || = S = . || o + = + || . o + o . || . o || |+-----------------+
- La clave pública se guardará en: /home/USUARIO/.ssh/id_rsa.pub.
- La clave privada se guardará en: /home/USUARIO/.ssh/id_rsa.
4º.- Copiar la clave pública
Una vez hayamos generado las claves, es hora de colocar la clave pública en el servidor virtual donde la queremos utilizar. Podemos copiar la clave pública dentro del fichero «autorized_keys»
en el servidor virtual con la instrucción «ssh-copy-id»
. Para que se copie correctamente hay que indicar la dirección IP de la máquina, como se indica a continuación:
ssh-copy-id user@IP-SERVER
Otra alternativa es pegar la clave utilizando SSH:
cat ~/.ssh/id_rsa.pub | ssh user@IP-SERVER "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Independientemente del comando que utilicemos, deberíamos ver algo parecido a esto:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.user@12.34.56.78's password:Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:~/.ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.
5º.- Desactivar el acceso para el usuario root
Este último paso es opcional y sirve para mejorar aún más la seguridad. Una vez hayamos copiado las claves SSH en el servidor y nos hayamos cerciorado de que podemos acceder, podemos restringir el acceso vía SSH al usuario root. Esto permite el acceso únicamente mediante las claves SSH que hemos generado. Para hacer esto tenemos que abrir el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Dentro de este archivo buscamos la línea donde aparezca «PermitRootLogin»
y la modificamos para asegurarnos de que solo se pueda acceder usando las claves SSH:
PermitRootLogin without-password
Por último, recargamos SSH para que se efectúen los cambios:
reload ssh
Una vez completados todos los pasos, dispondremos de una máquina virtual más segura y solo podremos acceder a ella si disponemos de las claves SSH generadas. Asimismo, para más seguridad, antes de cerrar la sesión SSH, deberíamos probar la conexión desde otro terminal para verificar que funciona correctamente.
Fuente: https://www.stackscale.com/es/blog/configurar-llaves-ssh-servidor-linux/
Comentarios
Publicar un comentario