La autenticación en dos pasos (2FA) añade una capa extra de seguridad al proceso de inicio de sesión, reduciendo el riesgo de accesos no autorizados incluso si la contraseña es comprometida. En este artículo se detalla cómo implementar 2FA en un sistema Linux para acceso SSH utilizando Google Authenticator.
1. Instalación de Google Authenticator
En sistemas basados en Debian/Ubuntu, el paquete necesario se instala desde los repositorios oficiales.
Primero, actualizamos la lista de paquetes:
sudo apt update
Después, instalamos el módulo PAM de Google Authenticator:
sudo apt install libpam-google-authenticator
Este módulo se integrará con el sistema de autenticación de Linux para requerir un código temporal adicional al iniciar sesión.
2. Configuración del usuario para 2FA
Cada usuario que requiera 2FA debe ejecutar el comando:
google-authenticator
Durante este proceso, se generará un código QR que deberá escanearse con la aplicación Google Authenticator o cualquier otra app compatible (Authy, Microsoft Authenticator, etc.).
El asistente preguntará:
- Si quiere que los tokens sean basados en tiempo (TOTP). Recomendado: Sí.
- Si quiere actualizar el archivo de configuración (
~/.google_authenticator
). - Si quiere limitar el uso de un mismo código a una vez.
- El tiempo de tolerancia para evitar problemas de sincronización.
3. Edición de la configuración de SSH
Para que SSH requiera el código 2FA, es necesario modificar el archivo PAM y la configuración del demonio SSH.
Editar el archivo PAM
Abrir el archivo PAM de SSH:
sudo nano /etc/pam.d/sshd
Añadir la siguiente línea al final (o asegurarse de que esté activa):
auth required pam_google_authenticator.so
Habilitar ChallengeResponseAuthentication
En el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Asegurarse de que las siguientes líneas estén configuradas:
ChallengeResponseAuthentication yes
PasswordAuthentication yes
UsePAM yes
Si se usa autenticación con clave pública más 2FA, se debe ajustar
AuthenticationMethods
:
AuthenticationMethods publickey,keyboard-interactive
4. Reinicio del servicio SSH
Aplicar los cambios reiniciando el servicio:
sudo systemctl restart ssh
5. Prueba de autenticación
Para verificar el correcto funcionamiento, iniciar sesión por SSH:
ssh usuario@servidor
El sistema pedirá primero la contraseña (o validará la clave pública) y luego solicitará el código de verificación temporal que se muestra en Google Authenticator.
Beneficios de esta configuración
- Mayor seguridad: incluso si una contraseña es filtrada, el atacante necesitará el código temporal.
- Implementación rápida: se configura en minutos.
- Compatibilidad: funciona con cualquier app TOTP.
Compartir: