Revista Jurídico

🔐Segundo factor de autenticación (2FA) en SSH🔐

Por Derechodelared

Hola a todos. Espero que estéis todos bien. Vamos al lío.

El servicio SSH es uno de los más utilizados para administrar nuestras máquinas. Cuando este servicio está expuesto 24/7 a Internet es muy probable que sea analizado continuamente, sufriendo así varios intentos de acceso.

Existen diversas técnicas para fortificar este servicio, como hacer uso de port knocking y demás. Sin embargo, en este post se explica cómo añadir el segundo factor de autenticación a este servicio. Para ello, necesitamos de:

  • Privilegios de superusuario en nuestra máquina Linux.
  • El servicio SSH instalado previamente.
  • Un smartphone son S.O. Android o IOS.

Instalación

Lo que vamos a hacer es instalar un módulo PAM. Este modulo PAM, desarrollado por Google, es el encargado de añadir dicha funcionalidad al servicio. En esta ocasión se hace uso de una máquina con el S.O. Ubuntu Server 20.04.2 LTS instalado.

A modo de super resumen, un módulo PAM es una librería que se configura en servicios que requieran de autenticación de usuarios. En estás librerias se especifica qué directrices deben seguir estos servicios para autenticar a los usuarios.

Por tanto, procemos a instalar el módulo PAM libpam-google-authenticator ejecutando el siguiente comando:

sudo apt install libpam-google-authenticator

Al ejecutar el comando, vemos que también se instala un paquete llamado libqrencode4. Este permite crear códigos QR en la propia terminal.

Configuración

Llegados a este punto, solo nos queda configurar el módulo. Para ello, debemos modificar el fichero /etc/pam.d/sshd, que es donde se encuentra la configuración de los módulos PAM que afectan al servicio SSH, añadiendo la siguiente línea:

auth required pam_google_authenticator.so

Añadida esta línea, debemos de asegurarnos de que en la configuración del servicio SSH, en el fichero /etc/ssh/sshd_config, el parámetro ChallengeResponseAuthentication está configurado a " Yes ". De no ser así, debemos cambiar el valor.

Una vez modificados los ficheros, reiniciamos el servicio.

sudo systemctl restart sshd.service

Con esto hemos terminado con la configuración del servicio. Ahora toca configurar el usuario que va a hacer uso del servicio SSH para acceder a la máquina.

Configuración del usuario

Por tanto, iniciamos sesión con el usuario deseado. Con este usuario debemos ejecutar el siguiente comando:

google-authenticator

Al hacerlo, el programa nos hará una serie de prenguntas. En todas ellas debemos de indicar que sí con "y", a excepción de la penúltima pregunta. A esta le diremos que no con "n" o "no" directamente. Esta configuración es la que se recomienda en la documentación oficial de Ubuntu en este caso. A continuación, se muestran imágenes del proceso:

Como podemos ver, en la figura 1.1 ya nos muestra por pantalla el código QR con el que podremos vincular la cuenta con la aplicación de nuestro smartphone junto con la clave secreta. En la imagen siguiente, la 1.2, podemos ver señalada con una flecha la pregunta a la que debemos decir que no. Al decirle en esa pregunta que no, acotamos el número de tokens válidos a 3. Es decir, el previo, el actual y el siguiente. Esto es así por posibles problemas de sincronización, ya que este proceso está basado en tiempo y por defecto se genera un token nuevo cada 30 segundos.

En la figura 1.2, también podemos ver un trozo de la imagen destacado con un cuadro rojo. En él, podemos ver el código de verificación a utilizar en caso de no querer/poder hacer uso del código QR. Por otro lado, se encuentran los códigos de recuperación de emergencia. Estos códigos los debemos almacenar bajo llave, ya que esos códigos serán siempre válidos. Esto es así porque si la cuenta del smartphone se desvincula por el motivo que sea, no podremos acceder si no hacemos uso de estos códigos de emergencia.

Configuración del smartphone

Hecho todo esto, solamente nos queda ir a nuestro smartphone y descargar la aplicación Google Authenticator con la que leeremos el código QR o añadiremos la clave. A continuación, se facilitan los enlaces según S.O.:

Si es la primera vez que utilizamos dicha aplicación, al acceder nos dice de añadir una cuenta mediante código QR o clave. Si no es la primera vez, simplemente debemos pulsar el simbolo "+" de la interfaz para añadir una nueva cuenta. Al añadir la cuenta, automáticamente empieza a generar tokens de acceso.

Por último, la prueba de fuego. Hay que comprobar que efectivamente funciona. Por tanto, ahora al acceder por SSH, tanto si es con clave como con contraseña, nos debe preguntar seguidamente el código de verificación en dos pasos.

Como se ha visto, esta es una manera rápida y sencilla de añadir una capa más de seguridad a este servicio. Es totalmente recomendable, sobretodo si se tiene el servicio expuesto a Internet.

Espero que os sea de utilidad.

¡Saludos y hasta la próxima!
🔐Segundo factor de autenticación (2FA) en SSH🔐

🔐Segundo factor de autenticación (2FA) en SSH🔐

Colaborador de "Derecho de la red".


Volver a la Portada de Logo Paperblog