GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configurar la autenticación de dos factores SSH (2FA) en el servidor Ubuntu

Este tutorial le mostrará cómo configurar la autenticación de dos factores SSH en el servidor Ubuntu utilizando el conocido Google Authenticator. Mejorará en gran medida la seguridad del servicio SSH en su servidor Ubuntu.

Cómo funciona la autenticación de dos factores

Normalmente, solo necesita ingresar una contraseña o usar la clave SSH para iniciar sesión en su servidor Ubuntu de forma remota. La autenticación de dos factores (2FA) requiere que ingrese dos datos para iniciar sesión. Por lo tanto, también deberá ingresar una contraseña de un solo uso basada en el tiempo para iniciar sesión en su servidor SSH. Esta contraseña de un solo uso se calcula utilizando el algoritmo TOTP, que es un estándar IETF. Actualmente, muchos sitios web y servicios (Facebook, Google, Twitter, etc.) ofrecen 2FA para que los usuarios aseguren sus cuentas y es una buena idea habilitar también 2FA en su servidor SSH.

Este tutorial le mostrará cómo configurar

  • Autenticación de contraseña con 2FA
  • Autenticación de clave pública con 2FA

Nota :El software de servidor de código abierto que usaremos en este artículo se llama libpam-google-authenticator , que se instala desde el repositorio predeterminado de Ubuntu. Google, la empresa, no se involucra en el proceso de autenticación de ninguna forma. El software del servidor y la aplicación móvil no necesitan acceso a la red.

Paso 1:Instale y configure Google Authenticator en Ubuntu Server

Inicie sesión en su servidor Ubuntu y ejecute el siguiente comando para instalar Google Authenticator desde el repositorio de paquetes predeterminado de Ubuntu.

sudo apt install -y libpam-google-authenticator

Luego ejecute el google-authenticator comando para crear una nueva clave secreta en su directorio de inicio.

google-authenticator

Cuando se le preguntó "¿Desea que los tokens de autenticación se basen en el tiempo?" Responda y .

Luego verá un código QR que puede escanear usando una aplicación TOTP en su teléfono. Hay dos aplicaciones que recomiendo:

  • Autenticador de Google es la aplicación móvil TOTP más conocida. Puede instalarlo a través de Google Play o la tienda de aplicaciones de Apple en su teléfono móvil.
  • El autenticador de Google La aplicación móvil no es de código abierto. Si no confía en Google, puede usar FreeOTP, una aplicación móvil TOTP de código abierto desarrollada por Red Hat.

Escanee el código QR con Google Authenticator o FreeOTP en su teléfono móvil. Tenga en cuenta que debe ampliar la ventana de la terminal para escanear el código QR completo.

El código QR representa la clave secreta, que solo es conocida por su servidor SSH y su aplicación móvil TOTP. Una vez que se escanea el código QR, puede ver una contraseña de un solo uso de seis dígitos en su teléfono. Por defecto, cambia cada 30 segundos. Deberá ingresar esta contraseña de un solo uso más adelante para iniciar sesión en el servidor de Ubuntu a través de SSH.

En la ventana de la terminal, puede ver la clave secreta, el código de verificación y el código de emergencia. Se recomienda que guarde esta información en un lugar seguro para su uso posterior.

Luego puede ingresar y para responder a todas las preguntas restantes. Esto actualizará su archivo de configuración de Google Authenticator, deshabilitará múltiples usos del mismo token de autenticación, aumentará la ventana de tiempo y habilitará la limitación de velocidad para proteger contra intentos de inicio de sesión de fuerza bruta.

Paso 2:configurar SSH Daemon para usar Google Authenticator

  • Autenticación de contraseña con 2FA
  • Autenticación de clave pública con 2FA

Autenticación de contraseña con 2FA

Si no usa la clave SSH, siga las instrucciones a continuación.

Abra el archivo de configuración del servidor SSH.

sudo nano /etc/ssh/sshd_config

Busque los siguientes dos parámetros en el archivo y asegúrese de que ambos estén configurados en .

UsePAM yes

ChallengeResponseAuthentication yes

PAM significa módulo de autenticación enchufable. Proporciona una manera fácil de conectar diferentes métodos de autenticación en su sistema Linux. Para habilitar Google Authenticator con SSH, PAM y la autenticación Desafío-Respuesta deben estar habilitadas.

Si desea permitir que el usuario raíz use 2FA, busque PermitRootLogin parámetro y establezca su valor en yes . No puede ser PermitRootLogin no o PermitRootLogin prohibit-password .

PermitRootLogin yes

Guarde y cierre el archivo. A continuación, edite el archivo de reglas PAM para el demonio SSH.

sudo nano /etc/pam.d/sshd

Al comienzo de este archivo, puede ver la siguiente línea, que habilita la autenticación de contraseña cuando ChallengeResponseAuthentication está establecido en yes .

@include common-auth

Para habilitar 2FA en SSH, agregue las siguientes dos líneas.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Guarde y cierre el archivo. Luego reinicie el demonio SSH para que el cambio surta efecto.

sudo systemctl restart ssh

A partir de ahora, el demonio SSH requerirá que ingrese la contraseña de usuario y un código de verificación (la contraseña de un solo uso generada por Google Authenticator). La siguiente captura de pantalla muestra una sesión de inicio de sesión SSH desde un cuadro de CentOS a un servidor Ubuntu 20.04.

Autenticación de clave pública con 2FA

Si usa la clave SSH para iniciar sesión en el servidor SSH, siga las instrucciones a continuación.

Abra el archivo de configuración del servidor SSH.

sudo nano /etc/ssh/sshd_config

Busque los siguientes dos parámetros en el archivo y asegúrese de que ambos estén configurados en .

UsePAM yes

ChallengeResponseAuthentication yes

PAM significa módulo de autenticación enchufable. Proporciona una manera fácil de conectar diferentes métodos de autenticación en su sistema Linux. Para habilitar Google Authenticator con SSH, PAM y la autenticación Desafío-Respuesta deben estar habilitadas.

Si desea permitir que el usuario raíz use 2FA, busque PermitRootLogin parámetro y establezca su valor en yes . No puede ser PermitRootLogin no o PermitRootLogin prohibit-password .

PermitRootLogin yes

A continuación, agregue la siguiente línea al final de este archivo. Esto le dice al demonio SSH que el usuario debe pasar tanto la autenticación de clave pública como la autenticación de desafío-respuesta.

AuthenticationMethods publickey,keyboard-interactive

Guarde y cierre el archivo. A continuación, edite el archivo de reglas PAM para el demonio SSH.

sudo nano /etc/pam.d/sshd

Al comienzo de este archivo, puede ver la siguiente línea, que habilita la autenticación de contraseña cuando ChallengeResponseAuthentication está establecido en yes . Necesitamos comentar esta línea, porque usaremos la clave SSH en lugar de la contraseña.

@include common-auth

Para habilitar 2FA en SSH, agregue las siguientes dos líneas.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Guarde y cierre el archivo. Luego reinicie el demonio SSH para que el cambio surta efecto.

sudo systemctl restart ssh

A partir de ahora, debe usar la clave SSH y el código de verificación de Google Authenticator para iniciar sesión.

Notas

  • Cada usuario en su servidor Ubuntu necesita ejecutar google-authenticator comando y escanee el código QR para usar la autenticación de dos factores. Si el usuario no configuró e intenta iniciar sesión, aparece el mensaje de error "Permiso denegado (teclado interactivo) ” se mostrará.
  • El código Scratch de emergencia es su código de respaldo. Si pierde su teléfono, puede ingresar uno de los cinco códigos de emergencia en lugar de una contraseña de un solo uso para completar la verificación de dos pasos. Estos códigos son para un solo uso.
  • Si desea cambiar la clave secreta, simplemente inicie sesión en su servidor y ejecute google-authenticator comando de nuevo para actualizar el ~/.google_authenticator archivo.
  • Dado que la contraseña de un solo uso se calcula con la clave secreta compartida y la hora actual, es una buena idea habilitar la sincronización de hora NTP en su servidor de Ubuntu para mantener la hora precisa, aunque anteriormente hemos permitido un sesgo de tiempo de 4 minutos. entre el servidor Ubuntu y la aplicación móvil. Su servidor Ubuntu y la aplicación móvil TOTP pueden usar diferentes zonas horarias.

Cómo deshabilitar la autenticación de dos factores SSH

Edite el archivo de reglas PAM para el demonio SSH.

sudo nano /etc/pam.d/sshd

Comente la siguiente línea.

auth   required   pam_google_authenticator.so

Guarde y cierre el archivo. Si agregó la siguiente línea en /etc/ssh/sshd_config archivo,

AuthenticationMethods publickey,keyboard-interactive

Eliminar el keyboard-interactive método de autenticación.

AuthenticationMethods publickey

Guarde y cierre el archivo. Luego reinicie el demonio SSH.

sudo systemctl restart ssh

Ubuntu
  1. Cómo generar claves SSH en Ubuntu 18.04

  2. Cómo instalar y configurar el servidor sftp en Ubuntu 20.04

  3. SSH seguro usando autenticación de dos factores en Ubuntu 16.04

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

  5. Configure la autenticación de dos factores usando Google Authenticator

Cómo instalar el servidor SSH en Ubuntu 22.04

Cómo instalar OpenSSH en Ubuntu 20.04

Cómo configurar la autenticación de dos factores SSH en Ubuntu 16.04 con Google Authenticator

Cómo habilitar el servidor SSH en Ubuntu 22.04

Cómo configurar la autenticación de dos factores en Ubuntu 20.04 LTS

Cómo usar la autenticación de dos factores con Ubuntu