Tutoriales

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 utilizando 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, veremos una implementación de seguridad de este tipo para ssh que utiliza la autenticación multifactor.

SSH, que significa 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ñay 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 multifactor (en breve AMF) 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 dice ser: 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 en que se autentica varía. Algunas herramientas comunes que utiliza para MFA son:

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

Para habilitar la autenticación multifactor para ssh, usaremos «Autenticador de Google» aplicación que utiliza el JURAMENTO-TOTP protocolo Hay otras herramientas alternativas como Twilio Authy o GratisOTP 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 el Autenticador de Google

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

Aplicación de autenticación de Google

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 Las distribuciones basadas ejecutan 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 generando 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 solicitará el (y/norte) opción.

PASO 1 – Se 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. Presione «y» continuar.

Ejecute el comando de autenticación de Google
Ejecute el comando de autenticación de Google

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, la aplicación comenzará a generar tokens cada 30 segundos.

Claves secretas y códigos de verificación
Claves secretas y códigos de verificación

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

Actualizar archivo google_authenticator
Actualizar archivo google_authenticator

ETAPA 4 – Elegir «y» en este paso, el token expirará inmediatamente una vez que lo haya utilizado para autenticarse. En este caso, incluso si algunos piratas informáticos obtienen su token, expirará.

No permitir múltiples usos de la misma autenticación
No permitir múltiples usos de la misma autenticación

PASO 5 – Este paso decide cuántos tokens se permitirán y el marco de tiempo. Cuando elijo «norte»permitirá 3 fichas en 90 segundos ventana. Si presiono «y»permitirá 17 fichas en 240 segundos ventana de tiempo.

Número de fichas
Número de fichas

PASO 6 – Este paso le pedirá que habilite la limitación de velocidad. La limitación de velocidad le permite a un atacante intente solo 3 intentos de inicio de sesión cada 30 segundosSi los tokens son incorrectos, entonces tienen que esperar a que norte hora de intentarlo de nuevo.

Limitación de velocidad
Limitación de velocidad

Hemos completado el primer paso, abre 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
Ver la configuración de google_authenticator
Ver la configuración de 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
Mostrar la sección de ayuda de google-authenticator
Mostrar la sección de ayuda de google-authenticator

Configurar SSH para autenticación multifactor

Tenemos que hacer algunos cambios de configuración en openSSH para que podamos 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.
  • Dado 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 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í».

Configurar SSH para usar MFA
Configurar SSH para usar MFA

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
Editar archivo de configuración sshd Pam
Editar archivo de configuración sshd Pam

Si desea que MFA sea obligatorio para todos los usuarios, elimine la palabra «anular».

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
Prueba de autenticación de dos factores
Prueba de autenticación de dos factores

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

¿Recordaste que no hemos habilitado MFA como obligatorio para todos los usuarios? Vamos a probarlo y ver si puedo conectarme con otro usuario donde no tengo tokens generados y configurados.

tengo un usuario de prueba y puedo conectarme con éxito sin solicitar el código de verificación.

Conectar usando un usuario alternativo
Conectar usando un usuario alternativo

¿Ves? 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 con eso. En caso de que no se encuentre la clave, utilizará la autenticación basada en contraseña.

Puedes usar verboso Modo para comprobar esto.

$ ssh -v [email protected]/IPaddress ## With verbose
SSH con modo detallado
SSH con modo detallado

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

AuthenticationMethods publickey,password publickey,keyboard-interactive

Siguiente abierto /etc/pam.d/sshd y comentar la siguiente línea.

autenticación común
autenticación común

Si no estás comentando "@include common-auth"luego 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, por lo que lo estoy deshabilitando.

Autenticación de tres factores
Autenticación de tres factores

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

$ sudo systemctl restart sshd

Ahora, si trato de conectarme, usa la clave pública como primer factor y el código de verificación como segundo factor para autenticar.

Clave y código de verificación
Clave y código de verificación

Pasos de recuperación

Puede haber escenarios en los que pierda o cambie su dispositivo móvil, en ese caso, debe reinstalar la aplicación google-authenticator 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 usarlo, 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 scratch 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 por lo que se puede utilizar cuando más se necesita.

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

$ cat ~/.google_authenticator
Códigos de rascar
Códigos de rascar

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 Google Authenticator y habilitar la autenticación multifactor para SSH con diferentes configuraciones.

Como administrador, también puede escribir guiones 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. Planeamos cubrirlos en artículos separados. ¡Estén atentos!

Lectura relacionada:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba