AlmaLinux es un reemplazo directo de CentOS que también resulta ser un reemplazo binario 1:1 para Red Hat Enterprise Linux. Es muy probable que pronto implementes esta distribución de servidor Linux lista para la empresa. Cuando lo haga, querrá asegurarse de que sea lo más seguro posible.
Una forma de reforzar la seguridad de cualquier servidor Linux es habilitar la autenticación de dos factores (2FA) para los inicios de sesión SSH. Esta configuración es bastante fácil y hace que las conexiones remotas sean considerablemente más seguras.
En lugar de simplemente escribir una contraseña o frase de contraseña para la autenticación SSH, también deberá ingresar un código 2FA de seis dígitos de su aplicación de autenticación favorita (como Authy o Google Authenticator).
Lo que necesitarás
- Una instancia en ejecución de AlmaLinux
- Una aplicación de autenticación
- Un usuario con privilegios de sudo
Nota: Debe realizar la conexión SSH inicial a su servidor y permanecer en esa conexión y realizar la prueba desde una nueva ventana de terminal; de esa manera, puede solucionar el problema si es necesario.
Cómo instalar Google Authenticator en AlmaLinux
No es lo mismo que la aplicación Google Authenticator que instala en su dispositivo móvil. Este Autenticador de Google está instalado en su servidor y permite agregar 2FA a los inicios de sesión SSH.
Para instalar Google Authenticator en AlmaLinux, primero debe agregar el repositorio EPEL con el comando:
sudo dnf install epel-release -y
Una vez que se haya solucionado, instale Google Authenticator con el comando:
sudo dnf install google-authenticator qrencode qrencode-libs -y
Una vez completada la instalación, ejecute el comando para crear una nueva clave secreta que se alojará en su directorio ~/.ssh:
google-authenticator -s ~/.ssh/google_authenticator
Responda y a la primera pregunta y luego asegúrese de cambiar el tamaño de la ventana de su terminal para mostrar el código QR completo. Abra su aplicación TOTP (ya sea Authy o Google Authenticator) en su dispositivo móvil y agregue una nueva cuenta. Escanee el código QR y luego, cuando se le solicite en el terminal AlmaLinux, escriba el código de seis dígitos presentado por la aplicación. Responda y a la pregunta restante y estará listo para configurar SSH y PAM en el servidor.
Cómo configurar SSH y PAM
Lo primero que debemos hacer es configurar el demonio SSH. Abra el archivo con el comando:
sudo nano /etc/ssh/sshd_config
Le mostraré cómo configurar esto para contraseña estándar/2FA y clave SSH/2FA. El método más seguro es utilizar la autenticación de clave SSH y la combinación 2FA. Primero, le mostraré cómo configurar la contraseña estándar /autenticación 2FA. Abra el archivo de configuración del demonio SSH con el comando:
sudo nano /etc/ssh/sshd_config
En ese archivo, asegúrese de que UsePAM y ChallengeResponseAuthentication estén configurados en Sí. Guarde y cierre el archivo.
Abra el archivo de configuración de PAM sshd con el comando:
sudo nano /etc/pam.d/sshd
En ese archivo, agregue la siguiente línea en la parte inferior:
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Guarde y cierre el archivo.
Reinicie el demonio SSH con el comando:
sudo systemctl restart sshd
Si prefiere configurar la autenticación de clave SSH / 2FA, abra el archivo de configuración del demonio SSH con el comando:
sudo nano /etc/ssh/sshd_config
En ese archivo, asegúrese de que UsePAM y ChallengeResponseAuthentication estén configurados en Sí. Además, asegúrese de que PubkeyAuthentication esté configurado en Sí y, en la parte inferior del archivo, agregue la siguiente línea:
AuthenticationMethods publickey,keyboard-interactive
Guarde y cierre el archivo.
A continuación, abra el archivo de configuración de PAM con el comando:
sudo nano /etc/pam.d/sshd
En la parte inferior de este archivo, comente (agregue un # inicial) la línea:
auth substack password-auth
Finalmente, agregue la siguiente línea en la parte inferior:
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Guarde y cierre el archivo.
Reinicie SSH con el comando:
sudo systemctl restart sshd
Cómo iniciar sesión con 2FA
Cuando intente iniciar sesión en su servidor AlmaLinux, se le pedirá su contraseña de usuario y un código 2FA o su contraseña de clave SSH y un código 2FA. De cualquier manera, sin el código 2FA, no obtendrá acceso al servidor.
Comprenda, esto significa que cada vez que necesite SSH en su servidor AlmaLinux, necesitará su dispositivo móvil a mano, para que pueda generar el código 2FA de seis dígitos. Ese es un inconveniente sólido para la capa adicional de seguridad obtenida con esta configuración.