Las contraseñas son un método de autentificación de acceso, que con el paso del tiempo, ya se ha demostrado que no son lo suficientemente seguras. Aquí es donde entran las claves SSH.
El acceso a un servidor es muy importante, es la puerta principal para la administración del servidor, es por eso que es muy importante securizar su acceso.
Vamos a enseñarte a cómo securizarlo utilizando claves SSH.
¿Qué son las claves SSH?
Las claves SSH, al igual que las contraseñas, son un método de autentificación.
Su funcionamiento se basa en dos claves diferentes: la clave privada que se almacena en el cliente y la clave pública que se deberá ubicar en el servidor.
El cliente intenta acceder al servidor con la clave, y si estas coinciden, el acceso se permite sin utilizar necesariamente ninguna contraseña.
Estas claves están totalmente cifradas, pueden estar cifradas con diferentes métodos, como por ejemplo ed25519 y, el más habitual, RSA.
Creación de las claves
Para generar el par de claves, pública y/o privada deberemos utilizar el comando ssh-keygen desde el cliente:
ssh-keygen
Se creará un par de claves RSA, una vez introducido el comando veremos lo siguiente.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gfranco/.ssh/id_rsa):
Podemos elegir la ruta donde queramos el par de claves, por defecto las dejamos dentro del directorio oculto llamado .ssh.
Podemos guardar las claves en una unidad externa, como un pendrive, en el caso de que queramos tener una clave siempre guardada de forma segura.
A continuación nos pedirá una contraseña, lo cuál es muy recomendable pero no necesario. La contraseña dentro de la clave nos proporciona mucha más seguridad para el acceso al servidor.
Your identification has been saved in /home/gfranco/.ssh/id_rsa
Your public key has been saved in /home/gfranco/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AHg8LOxnWjL81sSVux0YWy52rrQRcfmQVkC0GzxGMaw gfranco@nebula
The key's randomart image is:
+---[RSA 3072]----+
| . +. =B*. |
| + =. =oOo |
| o o o.. %*o |
| = + o.E.++. |
| O o .SB.. |
| . o . + o |
| . . + |
| o |
| |
+----[SHA256]-----+
Y ya tendremos nuestra clave pública y privada para realizar autenticación en servidores. Una vez conseguida la clave podemos proceder a subir la pública a nuestro servidor.
Subida de clave al servidor
En primer lugar deberemos identificar la clave pública, del par que se ha generado, la pública es la que tiene la extensión .pub.
Para subirla abrimos la clave desde el cliente con cualquier editor de texto y copiamos su contenido.
cat .ssh/id_rsa.pub
Copiamos el contenido de la clave pública y lo deberemos pegar en el fichero authorized_keys en el directorio .ssh de nuestro usuario en el servidor. Simplemente lo copiamos, si no existe el fichero deberás crearlo.
sudo nano .ssh/authorized_keys
Securizar el acceso SSH a sólo claves
Una buena medida de seguridad es permitir únicamente el acceso al servidor a través de claves, una vez subida tu clave al servidor y funcionando correctamente lo único que tendremos que hacer es desactivar el acceso a través de contraseña y activar el acceso a través de claves.
Deberemos modificar el fichero de configuración que es el /etc/ssh/sshd_config:
...
PubkeyAuthentication yes
...
PasswordAuthentication no
...
Y reiniciamos el servicio con el siguiente comando:
sudo systemctl restart ssh.service
O con el comando:
sudo systemctl restart sshd.service
Muy importante, recuerda que si deshabilitas el acceso por contraseña y dejas únicamente el acceso por claves puedes perder el acceso al servidor por SSH.
Es por eso tener como recurso una clave guardada en un pendrive, o tener garantizado el acceso a través de otra vía al servidor como VNC u otra.