Seguridad en OpenSSH: adiós a las contraseñas

Rubén C. Díaz Alonso en | Añadir comentarios

Adiós... o al menos parcialmente, para aquellas personas que accedemos diariamente por SSH a una o varias máquinas en las que tenemos que introducir gigantes contraseñas para identificarnos, o para los que busquen un poco más de seguridad en sus servidores a la vez que comodidad.

Hablo de las claves RSA pública/privada, que pueden ser generadas con ssh-keygen sin mayor problema y que nos serán muy útiles. Voy a explicar qué hacer por parte de servidor y por parte de cliente de la forma más sencilla posible, por lo que alguna explicación sonará un poco errónea, pero su única meta es llegar a ser entendible por el mayor número de personas posible.

Primer paso: generación del par de claves RSA

Lógicamente, sin claves, mal empezamos. Suponiendo que no hayamos hecho esto antes, deberemos proceder de la siguiente manera en consola:

ssh-keygen -t rsa

Lo que nos devolverá lo siguiente:

Generating public/private rsa key pair.
Enter file in which to save the key (/dir/por/defecto):
<-- No lo tocamos
Enter passphrase (empty for no passphrase): <-- Una contraseña para la clave (opcional pero recomendado)
Enter same passphrase again:
<-- Repetimos como consumidores de natillas
Your identification has been saved in /bla/bla
Your public key has been saved in /bla/bla
The key fingerprint is: xx:xx:xx:...

Además, necesitamos copiar el contenido de la clave pública a otro:

cat ~/.ssh/id.pub >> authorized_keys
chmod 600 authorized_keys

Y hacemos (ésto nos servirá más adelante en el segundo paso):

ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@host (Gracias a Sergio González)

Pero entonces, ¿para qué poner contraseña a la RSA? ¿Pero no se supone que me iba a ahorrar introducir contraseñas? Lo primero de todo, ganamos en seguridad. Si tú quieres acceder por SSH a un servidor normal sin necesidad de clave RSA, necesitarás:

- Usuario
- Contraseña

Si el segundo falla, hay maneras de obtenerlo, ya sea por brute force, crackeando con diccionarios, etc. Pero, ¿qué necesitamos si lo configuramos de ésta otra manera?

- Usuario
- Fichero de la clave RSA
- Contraseña de la clave RSA

Si cualquiera de los campos fallan, será imposible el acceso. Tendrían que obtener el fichero correspondiente con tu clave privada RSA y a su vez su clave para utilizarla. Más complicado, ¿no?

Segundo paso: configurando servidor

Por mucho que tengamos esas claves, si el servidor no está configurado para recibirlas, nos las podemos confitar. Vamos a editar el archivo de configuración del servidor SSH (/etc/ssh/sshd_config), y tendremos que buscar varios valores, no necesariamente en este orden, pero asegurarse de que tienen los valores que aquí aparecen:

PermitRootLogin no <-- Simple seguridad
PasswordAuthentication no <-- A partir de ahora, sólo por claves RSA
RSAAuthentication yes
PubkeyAuthentication yes

Ahora, utilizaremos el archivo que colocamos anteriormente en el servidor, para introducirlo en las claves autorizadas:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys <-- Suponiendo que estemos logueados con el usuario con el que queremos utilizar la clave

Y, por supuesto, reiniciamos el servicio (como root, lógicamente) para que vuelva a leer la configuración:

/etc/init.d/ssh restart

Tercer paso: estrenar

Comprobemos que todo ha ido bien. Desde la máquina donde tenemos ambas claves, nos conectamos al servidor en cuestión:

ssh -v usuario@servidor <-- El parámetro -v nos facilitará información valiosa, por si falla algo

Si pusimos contraseña en la clave RSA, nos la pedirá. Si todo fue bien... ¡Estaremos dentro!

Cuarto paso: consejos

En todas las máquinas de HispaLinux utilizamos este método de identificación, y de momento todo ha ido muy bien y no es complicado, más bien cómodo.

Deberemos guardar nuestra clave RSA en un lugar seguro, como por ejemplo, los típicos pendrives, encriptado con nuestra clave GPG, puede ser una combinación más que segura.

Espero que haya servido de ayuda, hacía tiempo que no me dedicaba a hacer manuales tan extensos, aunque parece ser que algunas personas se quejan de que es antiguo; en ningún momento he dicho que sea un descubrimiento, hace tiempo que existe, sólo que he querido hacer un manual sencillo para que lo entienda la mayoría de las personas :)

30 comentarios para Seguridad en OpenSSH: adiós a las contraseñas

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30

Deja tu comentario

Bienvenido a 120 Linux

Te agradecemos que comentes tu opinión en los artículos y te suscribas al feed de nuestro blog de Linux, Ubuntu y software libre.

Suscriptores al blog Linux 1645 suscriptores. ¡Suscribete!

Primeros pasos con Linux

Linux es un sistema operativo ágil.

Elige y descarga la distribución Linux que prefieras (Ubuntu es la más popular).

Disfruta de Linux en tu ordenador de forma gratuita y segura.

Patrocina el blog Tutoriales Linux