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


Todos los días parece que se informan muchas violaciones de seguridad en las que nuestros datos están en peligro. A pesar de que SSH es una forma segura de establecer una conexión de forma remota a un sistema Linux, un usuario desconocido puede obtener acceso a su máquina Linux si roba sus claves SSH, incluso si deshabilita las contraseñas o solo permite conexiones SSH a través de claves públicas y privadas.

En este artículo, explicaremos cómo configurar la autenticación de dos factores (2FA) para SSH en la distribución de Fedora Linux utilizando Google Authenticator para acceder a un sistema Linux remoto de una manera más segura al proporcionar un TOTP (The Time-based One-time Contraseña) número generado aleatoriamente por una aplicación de autenticación en un dispositivo móvil.

Tenga en cuenta que puede utilizar cualquier aplicación de autenticación bidireccional para su dispositivo móvil que sea compatible con el algoritmo TOTP. Hay numerosas aplicaciones gratuitas disponibles para Android o IOS que admiten TOTP y Google Authenticator, pero este artículo utiliza Google Authenticator como ejemplo.

Instalación de Google Authenticator en Fedora

Primero, instale la aplicación Google Authenticator en su servidor Fedora usando el siguiente comando dnf.

$ sudo dnf install -y google-authenticator

Una vez instalado Google Authenticator, ahora puede ejecutar la aplicación.

$ google-authenticator

La aplicación le presenta una serie de preguntas. Los siguientes fragmentos le muestran cómo responder para una configuración razonablemente segura.

Do you want authentication tokens to be time-based (y/n) y Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y

La aplicación le proporciona una clave secreta, un código de verificación y códigos de recuperación. Guarde estas claves en un lugar seguro, ya que estas claves son la única forma de acceder a su servidor si pierde su dispositivo móvil.

Configuración de la autenticación del teléfono móvil

En su teléfono móvil, vaya a la tienda de aplicaciones Google Play o iTunes y busque Google Authenticator e instale la aplicación.

Ahora abra la aplicación Google Authenticator en su teléfono móvil y escanee el código QR que se muestra en la pantalla del terminal Fedora. Una vez que se complete el escaneo del código QR, obtendrá un número generado aleatoriamente por la aplicación de autenticación y usará este número cada vez que se conecte a su servidor Fedora de forma remota.

Finalizar la configuración del Autenticador de Google

La aplicación Google Authenticator genera más preguntas y el siguiente ejemplo muestra cómo responderlas para configurar la configuración segura.

Ahora debe configurar SSH para usar la nueva autenticación bidireccional como se explica a continuación.

Configurar SSH para usar Google Authenticator

Para configurar SSH para usar la aplicación de autenticación, primero debe tener una conexión SSH que funcione usando claves SSH públicas, ya que deshabilitaremos las conexiones de contraseña.

Abra el archivo /etc/pam.d/sshd en su servidor.

$ sudo vi /etc/pam.d/sshd

Comente la línea auth subck password-auth en el archivo.

#auth       substack     password-auth

A continuación, coloque la siguiente línea al final del archivo.

auth sufficient pam_google_authenticator.so

Guarde y cierre el archivo.

A continuación, abra y edite el archivo/etc/ssh/sshd_config.

$ sudo vi /etc/ssh/sshd_config

Busque la línea ChallengeResponseAuthentication y cámbiela a yes .

ChallengeResponseAuthentication yes

Busque la línea PasswordAuthentication y cámbiela a no .

PasswordAuthentication no

A continuación, coloque la siguiente línea al final del archivo.

AuthenticationMethods publickey,password publickey,keyboard-interactive

Guarde y cierre el archivo y luego reinicie SSH.

$ sudo systemctl restart sshd

Prueba de autenticación de dos factores en Fedora

Ahora intente conectarse a su servidor de forma remota, le pedirá que ingrese un código de verificación.

$ ssh [email protected]

Verification code:

El código de verificación se genera aleatoriamente en su teléfono móvil mediante su aplicación de autenticación. Dado que el código generado cambia cada pocos segundos, debe ingresarlo rápidamente antes de que cree uno nuevo.

Si ingresa el código de verificación incorrecto, no podrá conectarse al sistema y obtendrá un siguiente error de permiso denegado.

$ ssh [email protected]

Verification code:
Verification code:
Verification code:
Permission denied (keyboard-interactive).

Al implementar esta sencilla autenticación bidireccional, ha agregado una capa adicional de seguridad a su sistema y, además, esto dificulta que un usuario desconocido obtenga acceso a su servidor.