Cómo usar la autenticación en 2 pasos en un servidor SSH

Consigue gratis tu cuenta

Curso de Vagrant

En este curso aprenderás a utilizar Vagrant para poder crear tus propias máquinas virtuales con diferentes sistemas operativos en cuestión de minutos. Con Vagrant mejorarás tu productividad y tendrás tu entorno de desarrollo configurado rápidamente. ¿Quieres saber más? ¡Apúntate!

Comenzar ahora

tutorial linux autenticación 2 pasos google geeky theory android ios ssh

La autenticación en 2 pasos es un método de identificación que debería utilizar todo el mundo. Es bastante seguro y fácil de usar. En este caso vamos a implementarlo en un servidor para cuando accedamos por SSH. El objetivo es mejorar la seguridad de nuestro sistema y hacer al atacante más complicada la tarea de romper el acceso. Para ello, utilizaré Google Authenticator, una herramienta open source que nos ayudará a cumplir nuestro objetivo. El funcionamiento es el siguiente: al entrar por SSH nos pedirá una clave que podremos comprobar desde nuestro teléfono y que cambia cada 30 segundos.

Vamos a entrar a nuestro servidor por SSH de la misma forma de siempre. A ser posible, con el usuario en el que implementaremos la autenticación en dos pasos. Yo he hecho el tutorial en máquina virtual, pero al fin y al cabo es un sistema Linux cualquiera. Una vez dentro, introducimos el siguiente comando:

$ sudo apt-get install libpam-google-authenticator
A continuación, con el usuario en el que queremos la autenticación en dos pasos, ejecutamos:
$ google-authenticator
Esto nos dará las claves necesarias para nuestra cuenta. Las introduciremos en nuestro móvil con Android, iOS o ¿BlackBerry? ¿Sigue existiendo?
Your new secret key is: 5CZRDTXJETGVAFHJ
Your verification code is 834011
Your emergency scratch codes are:
  26130193
  11999201
  23810415
  96187470
  11909397
Ojo, guardad estas claves porque las de emergencia sirven en caso de pérdida o robo del teléfono. Cada clave de emergencia es de uso único, es decir, cada vez que utilicemos una se borrará de la lista de claves.
configuracion cuenta android Tras esto, encontraremos en nuestro teléfono una clave que cambiará cada 30 segundos. Esta es la clave que tendremos que introducir cada vez que queramos entrar por SSH a nuestro servidor. Como cambia cada tan poco tiempo, si alguien nos la roba (por ejemplo viéndola en nuestro teléfono) tendrá 30 segundos para entrar y luego cambiará. codigo verificacion android

A pesar de tener el teléfono configurado para comenzar a usar este método de acceso, el servidor todavía no lo está. Para ello, tendremos que editar manualmente un par de archivos:

  • Archivo /etc/pam.d/sshd:

Añadimos auth required pam_google_authenticator.so al comienzo del archivo.

  • Archivo /etc/ssh/sshd_config:

Cambiamos ChallengeResponseAuthentication no por ChallengeResponseAuthentication yes . En caso de que no exista este parámetro en el archivo, lo creamos nosotros.

Finalmente, reiniciamos el servicio SSH para aplicar los cambios con el siguiente comando:

$ sudo service ssh restart

Para probar si funciona, vamos a cerrar la sesión y volver a entrar con el usuario al que hemos aplicado la autenticación en dos pasos. Si todo va bien, nos pedirá el código de verificación que aparece en nuestro teléfono:

google autenticación en dos pasos

Esto ha sido todo por hoy. Espero que os sirva para fortificar aún más vuestros servidores y máquinas.

¡Saludos!


¿Quieres seguir aprendiendo?