Con el creciente número de filtraciones y compromisos de contraseñas, necesitamos tantas capas de seguridad como sea posible.
Una forma de lograr mayor seguridad es agregar una capa adicional de autenticación. Autenticación multifactor (MFA) es un método para solicitar más de una credencial para probar su identidad.
¿Qué es MFA?
Por lo general, cuando inicia sesión en una cuenta o dispositivo, se le solicita un nombre de usuario y una contraseña. Cuando accede a una máquina Linux mediante SSH, es posible que se le solicite un par de claves SSH. La autenticación multifactor requiere que los usuarios proporcionen más de una información para autenticarse correctamente en una cuenta o host Linux. La información adicional puede ser una contraseña de un solo uso (OTP) enviada a su teléfono celular por SMS o credenciales de una aplicación como Google Authenticator, Twilio Authy o FreeOTP.
Los módulos de autenticación conectables (PAM) son el mecanismo de autenticación utilizado en Linux. En este artículo, usamos el módulo PAM de Google para habilitar MFA para que los usuarios puedan iniciar sesión utilizando códigos de contraseña de un solo uso (TOTP) basados en el tiempo.
Implementar el módulo de autenticación de Google
Primero, instale el módulo de autenticación de Google en una máquina Linux. Para hacerlo, abra una ventana de Terminal y ejecute el siguiente comando:
# sudo dnf install google-authenticator -y
A continuación, configure google-authenticator
para generar códigos OTP. Ejecute el siguiente comando para comenzar el proceso de configuración:
# google-authenticator
Esta herramienta hace una serie de preguntas. Para la mayoría de estas preguntas, responda sí (y ), a menos que necesite algo que no sea el predeterminado.
Do you want authentication tokens to be time-based (y/n) y
Esto genera un código QR en la pantalla, una clave secreta y códigos de recuperación. Usando una aplicación de autenticación como Google Authenticator en un teléfono inteligente, escanee el código QR generado a partir del comando anterior. Responda el resto de las preguntas para completar el proceso.
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, a new token is generated every 30 seconds by the mobile app. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. This allows for a time skew of up to 30 seconds between authentication server and client. If you experience problems with poor time synchronization, you can increase the window from its default size of 3 permitted codes (one previous code, the current code, the next code) to 17 permitted codes (the 8 previous codes, the current code, and the 8 next codes). This will permit for a time skew of up to 4 minutes between client and server.
Do you want to do so? (y/n) y
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than three login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y
Configure SSH para solicitar el código OTP
Edite un par de archivos de configuración de SSH para solicitar un código OTP como autenticación de segundo factor.
Usando su editor de texto favorito, abra /etc/pam.d/sshd
para editar:
# sudo vi /etc/pam.d/sshd
Agregue las siguientes líneas de configuración:
auth required pam_google_authenticator.so nullok
Esta línea de configuración permite que PAM use el módulo PAM de Google Authenticator, que instalamos en el paso anterior.
Con el nullok
entrada en la línea, SSH no requerirá un código OTP para los usuarios en la máquina que no están configurados para MFA. Elimine por completo esta opción para obligar a todos los usuarios a usar MFA en este sistema.
A continuación, comente la siguiente línea para deshabilitar la autenticación de contraseña para los inicios de sesión:
#auth substack password-auth
Guarde y cierre el archivo.
En el siguiente paso, modifique la configuración de SSH para mostrar la solicitud del código OTP después de la autenticación exitosa del par de claves SSH.
Usando su editor de texto favorito, abra /etc/ssh/sshd_config
para editar:
# sudo vi /etc/ssh/sshd_config
Busque y comente la línea ChallengeResponseAuthentication no y agregue una nueva línea de configuración ChallengeResponseAuthentication yes . Esta línea permite que SSH solicite una Respuesta de desafío . En nuestro caso, la respuesta es un código OTP después de una autenticación exitosa basada en clave SSH. Aquí está la línea:
#ChallengeResponseAuthentication no
ChallengeResponseAuthentication yes
Finalmente, informe a SSH para solicitar ambos una clave SSH y un código de verificación para autenticarnos. SSH busca un par de claves SSH (publickey ) y luego el código OTP (keyboard-interactive ). En la parte inferior del archivo, agregue:
AuthenticationMethods publickey,keyboard-interactive
Para habilitar el par de claves SSH y la autenticación OTP solo para un usuario específico, agregue algo como esto:
Match user <username>
AuthenticationMethods publickey,keyboard-interactive
Guarda el archivo y cierra. Reinicie el servicio SSH para que los cambios surtan efecto:
# sudo systemctl restart sshd
Probar la configuración
Probemos nuestra configuración. Abra una ventana de Terminal y acceda a través de SSH al host de Linux. Se le solicita un código OTP de la aplicación de autenticación.
Para que se le solicite una contraseña junto con un par de claves SSH y un código OTP, luego abra el /etc/pam.d/ssd
archivo para editar y descomentar esta línea:
auth substack password-auth
A continuación, abra /etc/ssh/sshd_config
archivo para editar y agregar un método de autenticación más:
AuthenticationMethods publickey,password publickay,keyboard-interactive
No olvide reiniciar SSH después de realizar estos cambios.
Resumir
Con MFA, agregamos otra capa de autenticación, lo que hace que nuestros sistemas sean más seguros. Además de la autenticación tradicional basada en nombre de usuario y contraseña, utilizamos métodos más seguros como un par de claves SSH y TOTP (Autenticador de Google) para iniciar sesión en el sistema. Al implementar estas medidas, mejoramos la seguridad del sistema y hacemos que los dispositivos Linux sean más difíciles de acceder.
[ ¿Quiere obtener más información sobre seguridad? Consulte la lista de verificación de cumplimiento y seguridad de TI. ]