Búsqueda de sitios web

Cómo configurar la autenticación de dos factores para SSH en Linux


De forma predeterminada, SSH ya utiliza comunicación de datos segura entre máquinas remotas, pero si desea agregar alguna capa de seguridad adicional a sus conexiones SSH, puede agregar un Google Authenticator (autenticación de dos factores) que le permite ingresar un código de verificación de contraseña única aleatoria (TOTP) mientras se conecta a servidores SSH. Tendrás que introducir el código de verificación desde tu smartphone o PC cuando te conectes.

El Google Authenticator es un módulo de código abierto que incluye implementaciones de tokens de verificación de códigos de acceso de un solo uso (TOTP) desarrollados por Google.

Es compatible con varias plataformas móviles, así como con PAM (módulo de autenticación conectable). Estos códigos de acceso de un solo uso se generan utilizando estándares abiertos creados por la OATH Iniciativa para la Autenticación Abierta).

En este artículo, le mostraré cómo instalar y configurar SSH para la autenticación de dos factores en distribuciones de Linux basadas en RedHat y Debian, como Fedora, CentOS Stream, Rocky Linux y AlmaLinux. Ubuntu, Debian y Mint.

Instalación de Google Authenticator en Linux

Abra la máquina en la que desea configurar la autenticación de dos factores e instale las siguientes bibliotecas PAM junto con las bibliotecas de desarrollo necesarias para que el módulo PAM funcione correctamente con < móduloGoogle authenticator.

En sistemas basados en RedHat, instale el paquete 'pam-devel' usando el siguiente comando yum.

yum install google-authenticator -y

En sistemas basados en Debian, instale el paquete 'libpam0g-dev' usando el siguiente comando apt.

sudo apt install libpam-google-authenticator -y

Generar tokens de autenticación de Google

Una vez que ejecute el comando 'google-authenticator', le formulará una serie de preguntas.

google-authenticator

Simplemente escriba “y” () como respuesta en la mayoría de las situaciones. Si algo sale mal, puede escribir nuevamente el comando "google-authentiator" para restablecer la configuración.

  • ¿Quiere que los tokens de autenticación se basen en el tiempo (s/n) y?

Después de esta pregunta, obtendrá su 'clave secreta' y sus 'códigos de emergencia'. Anota estos detalles en algún lugar; necesitaremos la 'clave secreta' más adelante para configurar la aplicación Google Authenticator.

google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339

A continuación, siga el asistente de configuración y, en la mayoría de los casos, escriba la respuesta como “y” (), como se muestra a continuación.

Do you want me to update your "/root/.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, tokens are good for 30 seconds and 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. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. 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 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

Configuración de SSH para usar Google Authenticator en Linux

Abra el archivo de configuración PAM/etc/pam.d/sshd‘ y agregue la siguiente línea al final del archivo.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

A continuación, abra el archivo de configuración SSH/etc/ssh/sshd_config‘ y desplácese hacia abajo para encontrar la línea que dice.

ChallengeResponseAuthentication no

Cámbielo a "". Entonces, se vuelve así.

ChallengeResponseAuthentication yes

Finalmente, reinicie el servicio SSH para realizar nuevos cambios.

systemctl restart sshd
Or
sudo systemctl restart sshd

Configuración de la aplicación Google Authenticator

Inicie la aplicación Google Authenticator en su teléfono inteligente. Presione + y elija “Ingresar una clave de configuración”. Si no tiene esta aplicación, puede descargar e instalar la aplicación Google Authenticator en sus dispositivos Android/iPhone/Blackberry.

Agregue su cuenta 'Nombre' e ingrese la 'clave secreta' generada anteriormente.

Generará una contraseña de un solo uso (código de verificación) que cambiará constantemente cada 30 segundos en su teléfono.

Ahora intente iniciar sesión a través de SSH; se le solicitará un código de autenticación de Google (código de verificación) y una contraseña . cada vez que intente iniciar sesión a través de SSH. Tienes solo 30 segundos para ingresar este código de verificación; si lo pierdes, se regenerará un nuevo código de verificación.

login as: tecmint
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125
[root@tecmint ~]#

Si no tienes un teléfono inteligente, también puedes usar un complemento de Firefox llamado Authenticator para realizar la autenticación de dos factores.

Importante: La autenticación de dos factores funciona con el inicio de sesión SSH basado en contraseña. Si está utilizando cualquier sesión SSH de clave pública/privada, ignorará la autenticación de dos factores e iniciará sesión directamente.