GNU/Linux >> Tutoriales Linux >  >> Linux

Configuración de la autenticación multifactor en sistemas Linux

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. ]


Linux
  1. Una introducción al espacio de intercambio en sistemas Linux

  2. 10 momentos que dieron forma a la historia de Linux

  3. 4 herramientas para construir sistemas Linux embebidos

  4. ¿Administración masiva/remota de Linux?

  5. ¿Cómo codificar un módulo del kernel de Linux?

Instalar el código de Microsoft Visual Studio en Linux

Cómo configurar la autenticación multifactor para SSH en Linux

Configurando logrotate en Linux

Instalación de código de Microsoft Visual Studio en Linux

Los 3 mejores sistemas operativos de servidor Linux en 2021

Configuración de la zona horaria en Linux