Post

Habilitar 2FA para SSH en Linux

Índice

Definición

La Autenticación en Dos Factores (2FA, por sus siglas en inglés) es un método de seguridad que requiere dos formas distintas de verificación para acceder a una cuenta o sistema. Estos factores suelen incluir algo que el usuario sabe (como una contraseña) y algo que el usuario tiene (como un código enviado a un dispositivo móvil). Esta combinación reduce significativamente el riesgo de acceso no autorizado, ya que incluso si la contraseña es comprometida, el acceso no se otorgará sin el segundo factor.

Instalación

  • Google Authenticator (Paquete en linux)
  • Authenticator (App en movil)

Comenzamos instalando el paquete de google authenticator en nuestro servidor.

1
sudo apt install libpam-google-authenticator -y

PackageInstall

Seguido instalamos la app en nuestra Android o IOS, como cualquier aplicación normal.

Configuración

Configuración de Google Authenticator

Una vez que ya tenemos instalado todo lo necesario, vamos a generar el QR para agregarlo a nuesta aplicación.

1
google-authenticator -s ~/.ssh/google_authenticator

Escaneamos el siguiente QR dentro de la APP.

PackageConfig

Indicamos el código que nos devuelve la APP en el movil cuando lo escaneamos. Y seguimos configurando de la siguiente forma.

PackageConfig2

Configuración de autenticación

Ejecutamos el siguiente comando para agregar la linea necesaria al fichero PAM de ssh.

1
echo 'auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/google_authenticator nullok' >> /etc/pam.d/sshd
  • Tener en cuenta con que usuario lo ejecutamos. Si es root la ruta no es esa es:
    • /root/.ssh/google_authenticator

De forma que quede así:

PackageConfig3

Agregamos las siguiente keys al fichero de ssh.

  • Si es un ubuntu 22.04 o superior, ejecutamos la siguiente linea:
1
echo 'KbdInteractiveAuthentication yes' >> /etc/ssh/sshd_config 
  • Si es ubuntu 21.10 o menor, ejecutamos la siguiente:
1
echo 'ChallengeResponseAuthentication yes' >> /etc/ssh/sshd_config 

PackageConfig4

Reiniciamos el servicio de ssh y listo.

1
service sshd restart

Comprobación

Intentamos acceder por SSH a nuestro servidor con Termius, ya que aquí se ve claro como lo pide.

PackageConfig5

Introduccimos el código, y listo, ya estamos dentro.

PackageConfig6

Referencias

This post is licensed under CC BY 4.0 by the author.