Configurando llaves SSH

By | 27 Junio, 2017

Seguridad basica SSH.

Hay dos causas por las cuales podemos querer configurar nuestro servicio de SSH con llaves, una seria agregar una capa de seguridad mas, para evitar ataques de fuerza bruta, no esta demás decir que dejar expuesto el servicio al exterior por lo generar general logs de atacantes que prueban una y otra vez una lista de usuarios, en caso de dejar acceso a “root” hacia el exterior, cosa que no tendría mucho sentido, podríamos ver como comprometen el servidor. Por lo tanto, añadir una segunda capa de autenticación reduciría considerablemente la posibilidad de que un ataque por fuerza bruta tenga exito, ya que aunque averiguaran el usuario correcto con shell y su password, deberían también averiguar la llave privada para poder ingresar.

Otra razón por las que podemos querer configurar llaves, es para evitar teclear contraseñas en tareas automatizadas.

Este es el primer paso para generar un par de llaves en nuestra maquina cliente:

ssh-keygen -t rsa

Esto generara la siguiente salida:

Enter file in which to save the key (/home/TuUsuario/.ssh/id_rsa):           <— Pregunta donde queremos guardar las llaves

Enter passphrase (empty for no passphrase):

En este ultimo paso, además podemos ponerle una contraseña a nuestra llave privada, poniendo mas dificultad en caso de sufrir un ataque, la llave estaría “protegida”. Podemos omitir este paso y presionar enter, sino tendríamos que teclear contraseña para ingresar y en caso de hacerlo para un proceso automático se truncara en este paso.

A continuación va el ejemplo:

tuUsuario@maquina:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/TuUsuario/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/TuUsuario/.ssh/id_rsa.
Your public key has been saved in /home/TuUsuario/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:thzaHX/YCSOi7VeAiLPpvutmxsrUhYn+fwxS0l4dbPY TuUsuario@maquina
The key’s randomart image is:
+—[RSA 2048]—-+
|         .       |
|          =      |
|     o . = o     |
|   .+o+ o o E    |
|  . oB..S o.o    |
| . .+.oB = +.= . |
|  oo..oo= ..o +  |
| o .*  .o .  .   |
|  oB*+….       |
+—-[SHA256]—–+

La llave publica se encontrara guardada en /home/TuUsuario/.ssh/id_rsa.pub y la privada en /home/TuUsuario/.ssh/id_rsa

Segundo paso, copiar la llave publica:

Una vez generado el par, es hora de copiar la llave publica al servidor donde queremos conectarnos, se puede distribuir mediante ssh o scp y luego copiar esta llave dentro del ~.ssh/authorized_keys o bien usando el siguiente comando:

ssh-copy-id usuario@10.10.10.10

Otra opción seria copiar la llave publica manualmente, a continuación el comando en una sola linea:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 “mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys”

La salida del comando, independientemente del camino que usemos sera algo así:

The authenticity of host ‘10.10.10.10 (10.10.10.10)’ 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)? yes
Warning: Permanently added ‘10.10.10.10’ (RSA) to the list of known hosts.
TuUsuario@10.10.10.10’s password:

Luego al servidor, con “ssh ‘TuUsuario@10.10.10.10′”, y chequear:

  ~/.ssh/authorized_keys

Solo debes hacer un cat al archivo anterior, que se guardara en el archivo ubicado en /home/TuUsuario/.ssh/authorized_keys del servidor.

Como ultimo paso, verificar que el archivo de configuración se encuentre de la siguiente manera:

# vi /etc/ssh/sshd_config

este la opcion “PubKeyAuthentication yes” descomentada, en caso de estar comentada, descomentarla y luego:

reload ssh

Invitamos a que dejen comentarios!