Autenticación con segundo factor de autenticación en SSH
Escrito por
el .
gnu-linux
seguridad
software-libre
Enlace permanente
Comentarios
El servicio SSH permite el acceso a equipos remotos a un usuario desde cualquier ubicación en la que se encuentre el usuario siempre que tenga conectividad desde el punto de acceso a internet y el equipo remoto. La autenticación se realiza mediante un usuario y contraseña o mediante clave privada y pública, adicionalmente SSH también se puede configurar para requerir un segundo factor de autenticación o 2FA que consituye una segunda clave.
Una forma de acceso a sistemas remotos para realizar tareas de administración es mediante SSH. La red permite acceder a sistemas remotos con SSH siempre que haya conectividad entre el la red del usuario y la red del servidor, con el auge de los servidores ofrecidos por los proveedores de hospedaje o los servicios de computación en la nube en la que lo servidores ya no son físicos sino lógicos SSH es la forma de acceder a los sistemas desde cualquier lugar.
SSH es un protocolo seguro y cifrado que utiliza como método de autenticación un usuario y contraseña o para mayor seguridad una clave SSH, también se puede configurar para añadir adicionalmente un segundo factor de autenticación o 2FA para mayor seguridad.
En el artículo específico comento como configurar SSH con autenticación mediante clave pública y privada, en otro artículo comento como tener acceso simple y seguro a sistemas remotos con Boundary.
Es recomendable usar segundo factor de autenticación en servicios como Google, Amazon y Paypal y otros relevantes que lo ofrezcan. También es recomendable utilizar un gestor de contraseñas como KeePassXC para guardar las contraseñas únicas y como aplicación para generar los tokens de 2FA.
Contenido del artículo
Instalar el módulo SSH de Google 2FA
Usar 2FA con SSH requiere instalar un módulo de autenticación que valide el proceso de autenticación. El módulo permite usar los tokens de un solo uso en el proceso de autenticación adicionalmente a la contraseña o clave SSH.
En los sistemas basados en Debian como Ubuntu hay que instalar el siguiente paquete que añade un nuevo módulo de PAM para 2FA.
|
|
Posteriormente hay que configurar SSH para que haga uso del módulo PAM de Google Authenticator añadiendo la siguiente línea en el archivo /etc/pam.d/sshd.
|
|
|
|
También hay que modificar el archivo de configuración de SSH /etc/ssh/sshd_config.
|
|
|
|
Configurar el módulo SSH de Google 2FA
La autenticación con 2FA es una segunda contraseña o código a introducir al iniciar sesión en el sistema remoto. Para utilizar 2FA hay que configurar previamente una aplicación que proporcione los códigos temporales.
El siguiente comando ejecutado con el usuario permite generar un código QR y la información para generar los tokens o configurar una aplicación como KeePassXC para generarlos. El comando realiza varias preguntas a las que se puede contestar con los siguientes valores.
- Make tokens “time-base”: yes
- Update the .google_authenticator file: yes
- Disallow multiple uses: yes
- Increase the original generation time limit: no
- Enable rate-limiting: yes
|
|
El resultado del comando es un código QR que se puede escanear con la aplicación de Google Authenticator para teléfono inteligente o con la clave secreta utilizar KeePassXC para generar los tokens.
Una vez modificada la configuración hay que reiniciar el servicio de SSH.
|
|
Usar autenticación 2FA con claves SSH
Al utilizar la autenticación mediante claves públicas y privadas con la configuración por defecto es suficiente para otorgar acceso al sistema remoto, con lo que no se solicitará el segundo factor de autenticación.
|
|
Para que se pida el segundo factor de autenticación aún utilizando la autenticación mediante clave pública y privada hay que modificar la configuración de SSH de nuevo con los siguientes cambios de adicionales.
La siguiente línea del archivo /etc/pam.d/sshd ha de estar comentada de esta forma y añadir al final de archivo los métodos de autenticación.
|
|
Nuevamente hay que modificar el archivo /etc/ssh/sshd_config y añadir esta línea al final.
|
|
Y después reiniciar el servicio de SSH.
|
|
Probar la autenticación SSH
Una vez realizada la configuración es recomendable probar que la autenticación se realiza de forma correcta tanto con usuario y contraseña como en el caso de claves. Una vez proporcionado el usuario y la contraseña se solicita el token del segundo factor de autenticación que es generado por la aplicación Google Authenticator, KeePassXC u otra aplicación configurada para generarlos.
En este caso realizando la autenticación con usuario y contraseña se solicita el token 2FA.
|
|
En este otro caso con clave privada y pública también se solicita el token 2FA.
|
|