Más seguridad en tu servidor SSH: configurar OTP para el acceso
Si quieres ponerle un cerrojo más a tu acceso SSH, las contraseñas de un solo uso (OTP) son baratas de montar y difíciles de saltar. Una clave o una contraseña robada ya no basta por sí sola: el atacante necesita además el código que genera tu móvil cada 30 segundos.
Así es como lo monto yo, paso a paso.
Paso 1: instalar libpam-google-authenticator
Abre un terminal e instala el módulo de PAM:
$ sudo apt update && sudo apt install --assume-yes libpam-google-authenticator # variantes de Ubuntu y Debian
Paso 2: cambiar la configuración de SSHd
Abre el fichero de configuración de SSHd con el editor que uses:
$ sudo vi /etc/ssh/sshd_config
Busca la línea ChallengeResponseAuthentication, quítale la # del principio y ponla a yes:
ChallengeResponseAuthentication yes
Si solo quieres el método keyboard-interactive para un usuario concreto, añade estas líneas:
Match User username
AuthenticationMethods keyboard-interactive
Nota: el método keyboard-interactive viene activado por defecto para todos los usuarios.
Paso 3: fijar los métodos de autenticación
Si necesitas dejar a algunos usuarios fuera del segundo factor OTP y que entren con otros métodos, ajusta la configuración de SSHd a lo que necesites. Por ejemplo:
auth required pam_unix.so no_warn try_first_pass
auth required pam_google_authenticator.so
Paso 4: reiniciar el servicio SSH
Reinicia SSH para que los cambios se apliquen:
$ sudo systemctl restart ssh
Paso 5: configurar OTP para los usuarios
Abre el fichero de configuración de PAM para SSHd:
$ sudo vi /etc/pam.d/sshd
Añade estas dos líneas al final. La primera pide la contraseña; la segunda ejecuta el módulo de Google Authenticator justo después:
auth required pam_unix.so no_warn try_first_pass
auth required pam_google_authenticator.so
Paso 6: generar las credenciales OTP
Ejecuta google-authenticator para configurar el usuario y obtener el código QR:
$ google-authenticator
Repite este paso con el resto de usuarios.
Contesta y cuando pregunte por los tokens basados en tiempo, escanea el QR con una app de autenticación y escribe el código que te dé la app.
Paso 7: actualizar la configuración y las políticas
Contesta y para actualizar el fichero /home/user/.google_authenticator, confirma que cada token basado en tiempo solo se pueda usar una vez y acepta las políticas de generación y uso de códigos.
Paso 8: activar la limitación de intentos (opcional)
Contesta y para activar la limitación de intentos. Pone un tope al número de intentos de login, y eso le quita casi toda la gracia a un ataque de fuerza bruta.
Ya está. Tu servidor SSH pide ahora un segundo factor en cada login.
Acuérdate de repetir el paso 6 con cada usuario que necesite acceso. Son unos minutos y cierran la puerta a la mayoría de los intentos de entrar con una contraseña robada.