Integraciones · Linux SSH
2FA en SSH de Linux con pam_radius y aprobación en el teléfono
Para equipos que administran servidores Linux por SSH y quieren que cada shell, cada sudo y cada su exijan una aprobación en el teléfono además de la contraseña. Linux PAM dispone de un módulo RADIUS estándar: apúntelo al auth-proxy de Notakey y todo el parque se suma a la misma configuración que su VPN.
Cómo se conecta
De PAM a RADIUS y al proxy, nada más en el servidor
sshd y sudo se autentican a través de PAM. El módulo pam_radius envía el nombre de usuario y la contraseña al auth-proxy de Notakey por RADIUS; el proxy reenvía la comprobación de la contraseña a su servidor RADIUS, envía una solicitud de aprobación al teléfono del usuario y solo devuelve Access-Accept cuando ambas cosas se cumplen. La guía cubre Debian/Ubuntu con libpam-radius-auth; en las distribuciones de la familia RHEL, el módulo se empaqueta como pam_radius y los archivos de PAM siguen la misma estructura de /etc/pam.d/.
Con el módulo configurado como sufficient, un Access-Accept da acceso al usuario de inmediato, y cualquier otra respuesta pasa a la comprobación habitual de la contraseña local. Su administrador de emergencia conserva una contraseña puramente local; el resto de cuentas pueden crearse sin ella. Su única vía de acceso es entonces RADIUS a través del proxy, es decir, contraseña y aprobación en el teléfono, y no queda nada local que atacar por fuerza bruta.
El mismo proxy y el mismo servidor RADIUS que ya protegen la VPN y la administración del router sirven también al parque Linux. En el lado del proxy no cambia nada.
Qué debe saber antes de empezar
- El tiempo de espera por defecto del módulo es de 3 segundos. Configúrelo al menos con el valor de vpn_message_ttl del proxy (30 segundos); con 60 hay margen de sobra. Un fallo inmediato sin notificación push suele indicar un tiempo de espera o un secreto compartido incorrectos.
- Los inicios de sesión SSH con clave pública se saltan por completo la fase auth de PAM, así que un acceso con clave no dispara ninguna notificación push. Para combinar clave y push, configure AuthenticationMethods publickey,keyboard-interactive y pruebe esa variante por separado.
- La contraseña viaja como PAP entre el servidor y el proxy. Mantenga ese enlace en una red de gestión o ejecute el proxy como contenedor en el propio host.
- El mismo nombre de usuario debe existir en el servidor RADIUS de destino, en el servicio de Notakey con un teléfono registrado y como cuenta local o de directorio en la máquina Linux. PAM solo autentica; el usuario sigue necesitando una cuenta con la que iniciar sesión.
- Proteger sudo significa que cada sudo consulta al teléfono. La caché de credenciales de sudo lo hace llevadero.
- sshd necesita UsePAM yes y KbdInteractiveAuthentication yes; ambos son los valores por defecto en Debian/Ubuntu.
De cero a la primera aprobación
- 01
Prepare primero la salida de emergencia
Antes de tocar PAM, asigne a root o a un administrador de emergencia dedicado una contraseña local robusta y compruébela en la consola. La configuración siempre recurre a las contraseñas locales como alternativa, así que esa cuenta es su vía de acceso si el proxy, RADIUS o la red fallan.
- 02
Instale pam_radius y apúntelo al proxy
Instale libpam-radius-auth, añada una línea a /etc/pam_radius_auth.conf con la dirección del proxy, el secreto compartido que corresponde al vpn_secret_in del proxy y un tiempo de espera de 60 segundos, y restrinja el archivo al modo 0600.
- 03
Actívelo en PAM y pruebe desde un segundo terminal
Añada auth sufficient pam_radius_auth.so encima del include de common-auth en /etc/pam.d/sshd (y en sudo, su o login si lo desea), añada try_first_pass a la línea pam_unix de common-auth y conéctese por SSH desde un segundo terminal con un nombre de usuario de RADIUS y apruebe la notificación push. Confirme que la cuenta de emergencia sigue funcionando antes de cerrar la sesión original.
Preguntas frecuentes
- ¿Me quedaré sin acceso si el proxy o RADIUS no funcionan?
- No, si mantiene un administrador de emergencia con contraseña local. pam_radius se configura como sufficient, de modo que cualquier respuesta distinta de Access-Accept pasa a la comprobación habitual de la contraseña local.
- ¿Los inicios de sesión SSH con clave generan una notificación push?
- No. Los inicios de sesión con clave pública se saltan por completo la fase de autenticación de PAM. Para exigir clave y notificación push, configure AuthenticationMethods publickey,keyboard-interactive y pruebe esa variante por separado.
- ¿Qué distribuciones de Linux cubre la guía?
- Debian y Ubuntu con libpam-radius-auth. En las distribuciones de la familia RHEL, el módulo se distribuye en el paquete pam_radius y los archivos de PAM siguen la misma estructura de /etc/pam.d/.