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

Secure Shell, o SSH, es un protocolo de red criptográfico que permite el acceso seguro a dispositivos a través de una red no segura. Encuentra sus aplicaciones en varios casos de uso, como inicio de sesión remoto, acceso remoto a la línea de comandos y ejecución remota de comandos.

Si ha utilizado SSH, ya sabrá que utiliza un mecanismo de autenticación de factor único que requiere una clave SSH o una contraseña para la autenticación. Aunque esto puede no parecer alarmante al principio, deja al sistema expuesto a varias vulnerabilidades abiertas.

Por lo tanto, a menudo se recomienda habilitar la autenticación de dos factores (2FA) para SSH para fortalecer su seguridad. En este artículo, analizaremos la autenticación de dos factores en detalle, junto con una guía completa sobre cómo habilitar 2FA para SSH.

¿Qué es la autenticación de dos factores?

La autenticación de dos factores , o 2FA, es una forma de mecanismo de autenticación de múltiples factores (MFA) que requiere un segundo factor de autenticación, además del primer factor, para autenticar su inicio de sesión y proteger su cuenta del acceso no autorizado.

Puede pensar en 2FA como un código de verificación generado por una aplicación generadora de códigos o un generador de tokens de hardware, que debe proporcionar en el momento de iniciar sesión, después de ingresar su contraseña, para acceder a su cuenta.

Cuando se registra para obtener una cuenta en cualquier servicio en línea, crea una contraseña para protegerla. Esta contraseña actúa como su primer factor de autenticación y el servicio la requiere para autenticarlo cada vez que inicie sesión en su cuenta.

¿Por qué debería habilitar 2FA para SSH?

SSH , de forma predeterminada, lo autentica con una clave pública o una contraseña antes de establecer una conexión entre usted y el otro dispositivo / servidor.

En general, esta configuración funciona absolutamente bien y puede salirse con la suya en la mayoría de los casos. Sin embargo, para los momentos en que se conecta a un dispositivo / servidor que contiene información confidencial o personal a través de SSH, necesita una capa adicional de protección en ese sistema.

Una forma de hacerlo es habilitar la autenticación de dos factores en el servidor / computadora host, lo que protege su acceso a través de SSH y requiere un segundo factor de autenticación para autenticar el inicio de sesión del cliente.

Como resultado, incluso si alguien logra obtener la contraseña del cliente / host, aún no puede acceder al sistema a través de SSH a menos que también proporcione el código 2FA.

Relacionado Cómo configurar SSH en Linux y probar su configuración

Cómo configurar 2FA para SSH en Linux

Poner en funcionamiento 2FA para SSH en Linux implica una serie de pasos. Aquí hay un desglose de cada paso para guiarlo a través del proceso.

Prerrequisitos

No hace falta decir que necesita un programa de servidor SSH instalado en el sistema en el que desea habilitar 2FA. Para verificar esto, abra la terminal y escriba:

 ssh -V

Si tiene un servidor SSH instalado, continúe con el siguiente paso. Si no es así, ingrese el siguiente comando para instalarlo:

 sudo apt install openssh-server

Una vez que se complete la instalación, verifique si SSH está habilitado en el sistema. Para hacer esto, ingrese:

 sudo systemctl status ssh

Si su estado refleja Activo: activo (en ejecución) , puede continuar. Pero en caso de que muestre lo contrario, ingrese el siguiente comando:

 sudo systemctl enable ssh

En algunos casos, la configuración del firewall puede interferir con SSH y es posible que deba ejecutar el comando que se proporciona a continuación para habilitar el servidor SSH en su sistema.

 sudo ufw allow ssh

Paso 1: Instalación de Google Authenticator PAM

Con el servidor OpenSSH en funcionamiento en su máquina host, lo primero que debe hacer es instalar un Módulo de autenticación conectable (PAM), que ofrece la infraestructura necesaria para integrar la autenticación multifactor para SSH en Linux.

Google Authenticator PAM es la opción más popular en este sentido, ya que es más fácil de implementar y usar que algunos de los otros módulos de autenticación. Ofrece toda la infraestructura necesaria para autenticar a los usuarios mediante códigos de contraseña de un solo uso basados ​​en el tiempo (TOTP) y tiene aplicaciones generadoras de código disponibles en Android e iOS.

Para instalar Google Authenticator PAM, abra una ventana de terminal y ejecute el siguiente comando:

 sudo apt install libpam-google-authenticator

Ingrese y en el indicador de instalación para confirmar el proceso.

Paso 2: configurar SSH

Con Google Authenticator PAM ahora instalado en su sistema, es hora de hacer que SSH use este módulo para la autenticación. Para ello, necesita editar un par de archivos de configuración.

Recomendamos realizar una copia de seguridad de estos archivos para evitar problemas si algo sale mal durante el proceso. Una vez hecho esto, continúe con los siguientes pasos:

  1. Abra el archivo de configuración de PAM con nano . No dude en utilizar cualquier otro editor de texto de Linux .
     sudo nano /etc/pam.d/sshd
  2. Agregue la siguiente línea al archivo.
     auth required pam_google_authenticator.so
  3. Guarde y salga de la ventana de edición de archivos.
  4. Reinicie el servicio sshd usando systemctl.
     sudo systemctl restart sshd.service

A continuación, edite el archivo de configuración SSH, que es responsable de la configuración SSH.

  1. Abra el archivo usando nano.
     sudo nano /etc/ssh/sshd_config
  2. En este archivo, busque la línea ChallengeResonseAuthentication no y cambie su estado de " no " a " ". Esto le indicará a SSH que solicite un código de autenticación cada vez que alguien intente iniciar sesión en el sistema.
  3. Guarde el archivo y reinicie el demonio SSH.
     sudo systemctl restart sshd.service

Paso 3: configurar el autenticador en Linux

Ahora que ha instalado y configurado SSH, debe configurar Google Authenticator para generar códigos TOTP.

Para ello, abra el terminal e inicie Google Authenticator con el siguiente comando:

 google-authenticator

Google Authenticator ahora le presentará una serie de preguntas. Responda estas preguntas con un ( y ) o un no ( n ). Para la mayoría de las preguntas, la respuesta predeterminada es sí, a menos que elija seleccionar una opción no predeterminada.

Aquí hay una lista de preguntas, en forma abreviada, que la aplicación le hará:

  • Hacer tokens de autenticación basados ​​en el tiempo (y / n): y
  • Actualice su archivo " ~ / .google_authenticator " (s / n): y
  • ¿Deshabilitar múltiples usos del mismo token de autenticación ?: y
  • Aumentar la frecuencia de generación de código (y / n): n
  • Habilitar la limitación de velocidad (y / n): y

Paso 4: configurar el autenticador en el teléfono

Tan pronto como responda a la primera pregunta de Autenticación de Google con un sí, Google PAM generará un código QR en su pantalla junto con una clave secreta y algunos códigos de recuperación. Siga los pasos a continuación para registrar Google Authenticator en su teléfono.

Pero primero, debe descargar la aplicación Google Authenticator en su teléfono inteligente.

Descargar: Autenticador de Google para Android | iOS (gratis)

  1. Haga clic en el signo más ( + ) y seleccione Escanear un código de las opciones del menú.
  2. Apunte la cámara de su dispositivo al código QR en la pantalla de su computadora para crear automáticamente una entrada en la aplicación.
  3. Alternativamente, seleccione Ingresar una clave de configuración en el menú Más (+) y complete las entradas requeridas. Para esto, primero, dé un nombre a su entrada – debe ser algo que pueda reconocer fácilmente – y luego, escriba la clave secreta que se muestra debajo del código QR en su pantalla.
  4. Finalmente, toque Agregar para guardar la entrada.

Como medida de precaución, copie todos los códigos de recuperación que se muestran debajo del código QR y guárdelos en un lugar seguro. Es posible que los necesite si no puede acceder a Google Authenticator en su teléfono o pierde su acceso.

Relacionado Cómo cambiar el Autenticador de Google a un teléfono nuevo

Asegurar el acceso SSH en Linux con 2FA

Si siguió las instrucciones anteriores correctamente, debe tener habilitada la autenticación de dos factores para SSH en su sistema Linux.

Ahora, cada vez que desee acceder a este servidor / dispositivo a través de SSH, primero deberá ingresar la contraseña SSH (primer factor) y, posteriormente, ingresar el código TOTP (segundo factor) de la aplicación Google Authenticator para autenticar su acceso. Esta es una excelente manera de administrar y proteger sus inicios de sesión SSH remotos de intrusos en Internet.