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
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.
Indicamos el código que nos devuelve la APP en el movil cuando lo escaneamos. Y seguimos configurando de la siguiente forma.
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í:
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
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.
Introduccimos el código, y listo, ya estamos dentro.