GNU/Linux >> Tutoriales Linux >  >> Linux

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

En esta guía, aprenderemos qué es la autenticación multifactor y su importancia y, finalmente, cómo configurar la autenticación multifactor para SSH en Linux mediante la aplicación Google Authenticator.

Introducción

La seguridad es un asunto serio. El número de compromisos está creciendo significativamente día a día y se estima que para 2025 el cibercrimen causará a las empresas 10,5 billones de dólares.

Es importante que se implemente una sólida capa de seguridad en todas las capas de la pila de tecnología. En este artículo, vamos a ver una implementación de seguridad de este tipo para ssh usando autenticación multifactor.

SSH, siglas de Secure Shell, es un protocolo de red que permite a los usuarios conectarse a las máquinas remotas (servidores) y acceder a los recursos.

El protocolo ssh implementa dos tipos de seguridad, a saber, autenticación basada en contraseña y autenticación basada en claves .

La autenticación basada en clave (pública -> privada) se considera más segura en comparación con la autenticación basada en contraseña y la mayoría de las instrucciones de fortalecimiento de SSH recomiendan deshabilitar la autenticación basada en contraseña y habilitar solo la autenticación basada en clave.

Independientemente del mecanismo de autenticación que elija, puede hacer que ssh sea más seguro implementando una configuración de autenticación de múltiples factores.

¿Qué es la autenticación multifactor?

Autenticación de múltiples factores (en breve MFA ) es un proceso seguro de autenticación que requiere más de una técnica de autenticación elegida de categorías independientes de credenciales.

La autenticación multifactor también se denomina a veces como "Autenticación de dos factores (2FA)" .

Hay dos factores involucrados en la validación de quién dices que eres. El primer factor será la contraseña que se crea cuando se crea su cuenta de usuario.

El segundo factor será cualquier aplicación que genere OTP o cualquier protocolo que te envíe mensajes de texto o realice una llamada a tu dispositivo.

Dependiendo de cómo se implemente la aplicación, la forma de autenticación variará. Algunas herramientas comunes que usa para MFA son:

  • Aplicación instalada en el dispositivo móvil que genera tokens.
  • Un dispositivo externo como Yubikey.
  • Huella digital.
  • Reconocimiento facial.
  • Mensaje de texto o contraseña OTP basada en llamada.

Para habilitar la autenticación multifactor para ssh, usaremos "Google Authenticator" aplicación que utiliza el protocolo OATH-TOTP. Existen otras herramientas alternativas como Twilio Authy o FreeOTP que puede instalar y probar.

Comenzaremos con la instalación de la aplicación Google Authenticator tanto en el servidor como en el dispositivo móvil e intentaremos habilitar MFA y validar.

Instalar Autenticador de Google

Primero instale la aplicación Google Authenticator en sus dispositivos Android o IOS a través de playstore /Itunes .

Ahora, instale la aplicación Google Authenticator en su sistema Linux.

Según su distribución, ejecute los siguientes comandos de instalación.

En Ubuntu y sus distribuciones derivadas ejecutan el siguiente comando.

$ sudo apt install libpam-google-authenticator

En RHEL distribuciones basadas en ejecutar el siguiente comando.

$ sudo dnf install google-authenticator -y

Para Arco distribución basada en ejecutar el siguiente comando.

$ sudo pacman -S libpam-google-authenticator

Generar token inicial para un usuario

Como primer paso para configurar MFA, debe ejecutar el siguiente comando desde su terminal. Esto se encargará de la configuración inicial al generar la clave TOTP. Esta clave es para el usuario que ejecuta el comando y no se aplica a todos los usuarios del sistema.

$ google-authenticator

Hay una secuencia de pasos en los que se le indicará con (y /n ) opción.

PASO 1 - Le pedirá que elija tokens de autenticación basados ​​en el tiempo. Los tokens de autenticación basados ​​en el tiempo generarán un nuevo código cada 30 segundos. Presiona "y" para continuar.

PASO 2 - Se generará un token secreto junto con un código QR. Abra la aplicación móvil Google Authenticator y escanee el código QR o escriba manualmente la clave secreta para registrar el dispositivo. Una vez hecho esto, ahora la aplicación comenzará a generar tokens cada 30 segundos.

PASO 3 - En este paso, se le pedirá que actualice el .google_authenticator archivo en su directorio de inicio. Todas las claves secretas, el código de verificación y los códigos de emergencia se guardan en este archivo. Presiona "y" para continuar.

PASO 4 - Elegir "y" en este paso, el token caducará inmediatamente una vez que lo haya utilizado para autenticarse. En este caso, incluso si algunos piratas informáticos obtienen su token, caducará.

PASO 5 - Este paso decide cuántos tokens se permitirán y el marco de tiempo. Cuando elijo "n" , permitirá 3 tokens en 90 segundos ventana. Si presiono "y" , permitirá 17 tokens en 240 segundos ventana de tiempo.

PASO 6 - Este paso le pedirá que habilite la limitación de velocidad. La limitación de velocidad permite a un atacante intentar solo 3 intentos de inicio de sesión cada 30 segundos . Si los tokens son incorrectos, deben esperar N es hora de volver a intentarlo.

Hemos completado el primer paso. Abra el archivo ~/.google_authenticator y puede encontrar todas las configuraciones y códigos secretos que hicimos a través de todos estos pasos.

$ cat ~/.google_authenticator

También puede pasar argumentos al comando google-authenticator que creará las claves y otras configuraciones sin pasar por esta secuencia de pasos.

$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3

Consulte la sección de ayuda del autenticador de Google para saber qué harán esos argumentos.

$ google-authenticator –-help

Configurar SSH para autenticación multifactor

Tenemos que hacer algunos cambios de configuración en openSSH para poder empezar a usar MFA.

Nota:

  • Como práctica recomendada, siempre haga una copia de seguridad de sus archivos de configuración antes de realizar cualquier cambio. Si algo se estropea, los cambios se pueden revertir.
  • Ya que está realizando cambios en los archivos de configuración de SSH, asegúrese de tener una sesión abierta por separado, para que no se le bloquee accidentalmente.

Ejecute los siguientes comandos para hacer una copia de seguridad de los archivos de configuración de SSH.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

Primero, habilite SSH para usar MFA configurando ChallengeResponseAuthentication opción a "sí" .

A continuación, edite el /etc/pam.d/sshd archivo:

$ sudo vi /etc/pam.d/sshd

Y agregue las siguientes líneas al final del archivo.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Si desea que la MFA sea obligatoria para todos los usuarios, elimine la palabra "nullok" .

Reinicie el servicio ssh para que los cambios sean efectivos.

$ sudo systemctl restart sshd

Prueba de autenticación de dos factores

Es hora de probar si los cambios que hicimos son efectivos.

Conéctese al servidor a través de SSH y se le pedirá una contraseña como primer factor seguido de un código de verificación como autenticación de segundo factor como se muestra en la imagen a continuación.

$ ssh [email protected]/IPaddress

Una vez que haya ingresado la contraseña SSH y el código de verificación, podrá iniciar sesión.

¿Recordó que no hemos habilitado MFA como obligatorio para todos los usuarios? Probémoslo y veamos si puedo conectarme con otro usuario donde no he generado ni configurado tokens.

Tengo un usuario de prueba y puedo conectarme correctamente sin solicitar el código de verificación.

¿Ver? También puedo iniciar sesión sin el código de verificación.

Autenticación multifactor para la autenticación basada en claves

Si ha configurado una autenticación basada en claves, no se le promocionará para obtener la contraseña o los códigos de verificación. ¿Por qué?

Porque, de forma predeterminada, ssh usa primero la autenticación de clave pública y, si se encuentra una clave, se autentica usando eso. En caso de que no se encuentre la clave, utilizará la autenticación basada en contraseña.

Puede usar detallado modo para verificar esto.

$ ssh -v [email protected]/IPaddress ## With verbose

Agregue la siguiente línea al final /etc/ssh/sshd_config archivo:

AuthenticationMethods publickey,password publickey,keyboard-interactive

A continuación, abra /etc/pam.d/sshd y comenta la siguiente línea.

Si no está comentando "@include common-auth" , entonces habilitará más de dos factores para autenticar. Primero se autenticará usando claves seguidas de contraseña y tokens. Todo lo que necesito es una clave y un token para mi autenticación, así que lo estoy deshabilitando.

Reinicie el sshd servicio y pruebe si los cambios funcionan bien.

$ sudo systemctl restart sshd

Ahora, si intento conectarme, utiliza la clave pública como primer factor y el código de verificación como segundo factor para autenticarse.

Pasos de recuperación

Puede haber escenarios en los que puede perder o cambiar su dispositivo móvil. En ese caso, debe reinstalar la aplicación de autenticación de Google y registrar la clave secreta para comenzar a generar tokens.

Si no puede acceder al sistema, debe comunicarse con el administrador del sistema para que le proporcione nuevas claves secretas para registrarse y utilizarlo. Pero existe un enfoque alternativo en el que puede iniciar sesión y generar claves por su cuenta.

¿Recuerdas los códigos que se generan durante el paso inicial? Puedes usar el código de raspado de emergencia como token para iniciar sesión. Cada código de rascar solo se puede usar una vez. Guárdalo en un lugar seguro para que pueda usarse cuando más se necesite.

Los códigos se guardan en ~/.google_authenticator archivo.

$ cat ~/.google_authenticator

Ahora puede volver a generar sus propias claves ejecutando el siguiente comando.

$ google-authenticator

Conclusión

En este artículo, le mostré cómo instalar el autenticador de Google y habilitar la autenticación multifactor para SSH con diferentes configuraciones.

Como administrador, también puede escribir scripts bash para automatizar el proceso de generación de claves secretas y compartirlas con el usuario. También debe fortalecer el ssh antes de configurar MFA, para que su sistema sea más seguro. Estamos planeando cubrirlos en artículos separados. ¡Estén atentos!

Lectura relacionada:

  • Cómo configurar la autenticación basada en clave SSH en Linux
  • Encuentre si un usuario está usando autenticación SSH basada en contraseña o clave
  • Cómo permitir o denegar el acceso SSH a un usuario o grupo en particular en Linux
  • Deshabilitar la autenticación de contraseña SSH para un usuario o grupo específico

Linux
  1. Configurar la autenticación multifactor para SSH en Ubuntu 20.04

  2. Cómo configurar Rsync con SSH en UNIX/Linux (rsync sin contraseña)

  3. Cómo configurar el túnel SSH inverso en Linux

  4. Cómo configurar la vinculación de Etherchannel de Linux para la interfaz de red HA

  5. Cómo configurar el inicio de sesión SSH sin contraseña en Linux

Cómo configurar el inicio de sesión SSH sin contraseña en Linux con claves

Cómo deshabilitar la autenticación de contraseña SSH en Linux VPS

Cómo crear un alias SSH en Linux

¿Cómo configurar la autenticación basada en clave Ssh para Github usando el archivo ~/.ssh/config?

Cómo SSH al servidor a través de Linux

¿Cómo deshabilitar el inicio de sesión SSH para el usuario raíz en Linux?