En esta guía, aprenderemos qué es la autenticación multifactor y su importancia y, finalmente, cómo configurar la autenticación multifactor para SSH en Linux utilizando la aplicación Google Authenticator.
Tabla de Contenidos
Introducción
La seguridad es un asunto serio, el número de compromisos está creciendo significativamente día a día y se estima que para 2025 el cibercrimen causará a las empresas 10,5 billones de dólares.
Es importante que se implemente una sólida capa de seguridad en todas las capas de la pila de tecnología. En este artículo, veremos una implementación de seguridad de este tipo para ssh que utiliza la autenticación multifactor.
SSH, que significa Secure Shell, es un protocolo de red que permite a los usuarios conectarse a las máquinas remotas (servidores) y acceder a los recursos.
El protocolo ssh implementa dos tipos de seguridad, a saber Autenticación basada en contraseñay Autenticación basada en claves.
La autenticación basada en clave (pública -> privada) se considera más segura en comparación con la autenticación basada en contraseña y la mayoría de las instrucciones de fortalecimiento de SSH recomiendan deshabilitar la autenticación basada en contraseña y habilitar solo la autenticación basada en clave.
Independientemente del mecanismo de autenticación que elija, puede hacer que ssh sea más seguro implementando una configuración de autenticación de múltiples factores.
¿Qué es la autenticación multifactor?
Autenticación multifactor (en breve AMF) es un proceso seguro de autenticación que requiere más de una técnica de autenticación elegida de categorías independientes de credenciales.
La autenticación multifactor también se denomina a veces como «Autenticación de dos factores (2FA)».
Hay dos factores involucrados en la validación de quién dice ser: el primer factor será la contraseña que se crea cuando se crea su cuenta de usuario.
El segundo factor será cualquier aplicación que genere OTP o cualquier protocolo que te envíe mensajes de texto o realice una llamada a tu dispositivo.
Dependiendo de cómo se implemente la aplicación, la forma en que se autentica varía. Algunas herramientas comunes que utiliza para MFA son:
- Aplicación instalada en el dispositivo móvil que genera tokens.
- Un dispositivo externo como Yubikey.
- Huella dactilar.
- Reconocimiento facial.
- Mensaje de texto o contraseña OTP basada en llamada.
Para habilitar la autenticación multifactor para ssh, usaremos «Autenticador de Google» aplicación que utiliza el JURAMENTO-TOTP protocolo Hay otras herramientas alternativas como Twilio Authy o GratisOTP que puede instalar y probar.
Comenzaremos con la instalación de la aplicación Google Authenticator tanto en el servidor como en el dispositivo móvil e intentaremos habilitar MFA y validar.
Instalar el Autenticador de Google
Primero instale la aplicación Google Authenticator en sus dispositivos Android o IOS a través de la tienda de juegos/itunes.
Ahora, instale la aplicación Google Authenticator en su sistema Linux.
Según su distribución, ejecute los siguientes comandos de instalación.
En ubuntu y sus distribuciones derivadas ejecutan el siguiente comando.
$ sudo apt install libpam-google-authenticator
En RHEL Las distribuciones basadas ejecutan el siguiente comando.
$ sudo dnf install google-authenticator -y
Para Arco distribución basada en ejecutar el siguiente comando.
$ sudo pacman -S libpam-google-authenticator
Generar token inicial para un usuario
Como primer paso para configurar MFA, debe ejecutar el siguiente comando desde su terminal. Esto se encargará de la configuración inicial generando la clave TOTP. Esta clave es para el usuario que ejecuta el comando y no se aplica a todos los usuarios del sistema.
$ google-authenticator
Hay una secuencia de pasos en los que se le solicitará el (y/norte) opción.
PASO 1 – Se le pedirá que elija tokens de autenticación basados en el tiempo. Los tokens de autenticación basados en el tiempo generarán un nuevo código cada 30 segundos. Presione «y» continuar.
PASO 2 – Se generará un token secreto junto con un código QR. Abra la aplicación móvil Google Authenticator y escanee el código QR o escriba manualmente la clave secreta para registrar el dispositivo. Una vez hecho esto, la aplicación comenzará a generar tokens cada 30 segundos.
PASO 3 – En este paso, le pedirá que actualice la .google_authenticator
archivo en su directorio de inicio. Todas las claves secretas, el código de verificación, los códigos de emergencia se guardan en este archivo. Presione «y» continuar.
ETAPA 4 – Elegir «y» en este paso, el token expirará inmediatamente una vez que lo haya utilizado para autenticarse. En este caso, incluso si algunos piratas informáticos obtienen su token, expirará.
PASO 5 – Este paso decide cuántos tokens se permitirán y el marco de tiempo. Cuando elijo «norte»permitirá 3 fichas en 90 segundos ventana. Si presiono «y»permitirá 17 fichas en 240 segundos ventana de tiempo.
PASO 6 – Este paso le pedirá que habilite la limitación de velocidad. La limitación de velocidad le permite a un atacante intente solo 3 intentos de inicio de sesión cada 30 segundosSi los tokens son incorrectos, entonces tienen que esperar a que norte hora de intentarlo de nuevo.
Hemos completado el primer paso, abre el archivo ~/.google_authenticator
y puede encontrar todas las configuraciones y códigos secretos que hicimos a través de todos estos pasos.
$ cat ~/.google_authenticator
También puede pasar argumentos al comando google-authenticator que creará las claves y otras configuraciones sin pasar por esta secuencia de pasos.
$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3
Consulte la sección de ayuda del autenticador de Google para saber qué harán esos argumentos.
$ google-authenticator –-help
Configurar SSH para autenticación multifactor
Tenemos que hacer algunos cambios de configuración en openSSH para que podamos empezar a usar MFA.
Nota:
- Como práctica recomendada, siempre haga una copia de seguridad de sus archivos de configuración antes de realizar cualquier cambio. Si algo se estropea, los cambios se pueden revertir.
- Dado que está realizando cambios en los archivos de configuración de SSH, asegúrese de tener una sesión abierta por separado, para que no se bloquee accidentalmente.
Ejecute los siguientes comandos para hacer una copia de seguridad de los archivos de configuración de SSH.
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
Primero, habilite SSH para usar MFA configurando ChallengeResponseAuthentication
opción a «sí».
A continuación, edite el /etc/pam.d/sshd
Archivo:
$ sudo vi /etc/pam.d/sshd
Y agregue las siguientes líneas al final del archivo.
auth required pam_google_authenticator.so nullok auth required pam_permit.so
Si desea que MFA sea obligatorio para todos los usuarios, elimine la palabra «anular».
Reinicie el servicio ssh para que los cambios sean efectivos.
$ sudo systemctl restart sshd
Prueba de autenticación de dos factores
Es hora de probar si los cambios que hicimos son efectivos.
Conéctese al servidor a través de SSH y se le pedirá una contraseña como primer factor seguido de un código de verificación como autenticación de segundo factor como se muestra en la imagen a continuación.
$ ssh [email protected]/IPaddress
Una vez que haya ingresado la contraseña SSH y el código de verificación, podrá iniciar sesión.
¿Recordaste que no hemos habilitado MFA como obligatorio para todos los usuarios? Vamos a probarlo y ver si puedo conectarme con otro usuario donde no tengo tokens generados y configurados.
tengo un usuario de prueba y puedo conectarme con éxito sin solicitar el código de verificación.
¿Ves? También puedo iniciar sesión sin el código de verificación.
Autenticación multifactor para la autenticación basada en claves
Si ha configurado una autenticación basada en claves, no se le promocionará para obtener la contraseña o los códigos de verificación. ¿Por qué?
Porque, de forma predeterminada, ssh usa primero la autenticación de clave pública y, si se encuentra una clave, se autentica con eso. En caso de que no se encuentre la clave, utilizará la autenticación basada en contraseña.
Puedes usar verboso Modo para comprobar esto.
$ ssh -v [email protected]/IPaddress ## With verbose
Agregue la siguiente línea al final /etc/ssh/sshd_config
Archivo:
AuthenticationMethods publickey,password publickey,keyboard-interactive
Siguiente abierto /etc/pam.d/sshd
y comentar la siguiente línea.
Si no estás comentando "@include common-auth"
luego habilitará más de dos factores para autenticar. Primero se autenticará usando claves seguidas de contraseña y tokens. Todo lo que necesito es una clave y un token para mi autenticación, por lo que lo estoy deshabilitando.
reiniciar el sshd
servicio y pruebe si los cambios funcionan bien.
$ sudo systemctl restart sshd
Ahora, si trato de conectarme, usa la clave pública como primer factor y el código de verificación como segundo factor para autenticar.
Pasos de recuperación
Puede haber escenarios en los que pierda o cambie su dispositivo móvil, en ese caso, debe reinstalar la aplicación google-authenticator y registrar la clave secreta para comenzar a generar tokens.
Si no puede acceder al sistema, debe comunicarse con el administrador del sistema para que le proporcione nuevas claves secretas para registrarse y usarlo, pero existe un enfoque alternativo en el que puede iniciar sesión y generar claves por su cuenta.
¿Recuerdas los códigos que se generan durante el paso inicial?Puedes usar el código scratch de emergencia como token para iniciar sesión. Cada código de rascar solo se puede usar una vez. Guárdalo en un lugar seguro por lo que se puede utilizar cuando más se necesita.
Los códigos se guardan en ~/.google_authenticator
Archivo.
$ cat ~/.google_authenticator
Ahora puede volver a generar sus propias claves ejecutando el siguiente comando.
$ google-authenticator
Conclusión
En este artículo, le mostré cómo instalar Google Authenticator y habilitar la autenticación multifactor para SSH con diferentes configuraciones.
Como administrador, también puede escribir guiones bash para automatizar el proceso de generación de claves secretas y compartirlas con el usuario. También debe fortalecer el ssh antes de configurar MFA, para que su sistema sea más seguro. Planeamos cubrirlos en artículos separados. ¡Estén atentos!
Lectura relacionada: