La seguridad es uno de los baluartes de CentOS 7 y nosotros como administradores o personal de IT que gestiona este tipo de máquinas debemos velar porque estos niveles de seguridad cada día sean mejor ya que lo que está en riesgo es la información de los usuarios. Existen diversas medidas de seguridad que podemos implementar en CentOS 7 y una de las principales, en la cual nos enfocaremos, es la autenticación.
Un factor de autenticación es un método que determina que un usuario cuenta con los permisos para realizar una acción dentro del sistema como el inicio de sesión o instalación de una aplicación, esto es fundamental ya que nos permite llevar un control centralizado sobre cada evento que ocurre dentro del sistema.Existen algunos componentes fundamentales en el proceso de autentificación como:
Sabemos que SSH usa contraseñas predefinidas, pero esto es un factor de autenticación y es importante añadir un canal ya que una contraseña en malas manos pone en riesgo toda la integridad de la operación. En esta oportunidad hablaremos y analizaremos cómo implementar múltiples factores de autenticación, conocidos como MFA, ya que estos aumentan de manera notable la seguridad de acceso al requerir no solo uno, sino varios parámetros de autenticación para iniciar sesión de forma correcta.
Existen diversos factores de autenticación como:
- Contraseñas y preguntas de seguridad.
- Token de seguridad.
- Voz o huella digital.
1. Cómo instalar el PAM de Google
PAM (Pluggable Authentication Module) es básicamente una infraestructura de autenticación para usuarios de entornos Linux. Este PAM genera TOTP (Time-based One-time Password) y es compatible con aplicaciones OATH-TOTP como Google Authenticator.
Para instalar PAM en CentOS 7 primero será necesario instalar el repositorio EPEL (Extra Packages for Enterprise Linux), para ello usaremos la siguiente línea. Aceptamos la descarga y respectiva instalación de los paquetes.
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Una vez instalado el repositorio EPEL instalaremos PAM en CentOS 7 usando la siguiente línea:
sudo yum install google-authenticator
Si es la primera vez que usamos este repositorio debemos aceptar el uso de la clave de EPEL pero no volverá a ser solicitada, en esta línea ingresamos la letra S:
Podemos ver que la instalación ha sido correcta.Una vez tengamos PAM instalado en CentOS 7 haremos uso de la ayuda de la utilidad para generar el TOPT para el usuario al cual se le agregará un segundo factor de autenticación. Es importante aclarar que esta clave debe ser generada por usuario pero no a nivel de sistema ya que cada acceso es personal.
2. Cómo usar el PAM de Google
Ahora veremos como ejecutar y usar PAM de Google.
Con esto en mente procedemos a iniciar google-authenticator usando el siguiente comando:
google-authenticatorSe desplegará la siguiente ventana donde obtenemos el mensaje si los tokens de seguridad estarán basados en tiempo, ingresamos Y:
PAM maneja dos tipos de token, basados en tiempo o secuenciales, los secuenciales permiten que el código inicie en un punto y luego se vaya incrementando a medida de cada uso. El token basado en tiempo permite que el código sea modificado al azar después de un tiempo determinado. Al pulsar Y, veremos lo siguiente.
Vemos un código QR el cual podemos escanear con nuestro teléfono o bien anotar la clave secreta justo debajo. Del mismo modo podemos ver el código de verificación (6 dígitos) el cual cambia cada 30 segundos.
En la pregunta que vemos al final de la línea indica que las claves serán escritas y la actualización del archivo google-authenticator, si ingresamos la letra n el programa será cerrado y la aplicación no funcionaria.
Ingresamos la letra Y, se desplegará lo siguiente:
Esta pregunta hace referencia a que si aceptamos evitamos un fallo de repetición la cual hace que cada código expire después de ser usado, esta opción evita que personas ajenas capturen estos códigos para accesos no autorizados. Al pulsar y veremos lo siguiente:
Si respondemos si a esta pregunta permitimos contra con hasta 8 códigos validos con una ventana de cuatro minutos si respondemos no tendremos solo 3 códigos validos con una ventana de minuto y medio. Allí seleccionamos la opción más adecuada siendo la más segura. Veremos de nuevo lo siguiente.
Esta pregunta hace referencia a la limitación de intentos en las cuales un atacante puede acceder antes de ser bloqueado, el máximo es 3 intentos. Pulsamos en y, de este modo hemos configurado google-authenticator en CentOS 7.
3. Cómo configurar OpenSSH en CentOS 7
En este punto crearemos una segunda conexión SSH para realizar las pruebas ya que si bloqueamos el único acceso SSH estaremos en dificultades para configurar los parámetros.
Para editar estos valores accederemos al archivo sshd usando el editor preferido, ingresaremos lo siguiente:
sudo nano /etc/pam.d/sshd
Al final del archivo agregaremos la siguiente línea:
auth required pam_google_authenticator.so nullok
Guardamos el archive usando la combinación de teclas:
Ctrl + O
Y salimos del mismo usando la combinación:
Ctrl + X
El término nullok indica a PAM que este factor de autenticación es opcional permitiendo que los usuarios sin OATH-TOTP puedan acceder usando su clave SSH. Ahora configuraremos sshd para que permita este tipo de autenticación, para ello ingresaremos la siguiente línea:
sudo nano /etc/ssh/sshd_config
- Allí ubicaremos la siguiente línea:
ChallengeResponseAuthentication
- Descomentaremos la línea:
ChallengeResponseAuthentication yes
- Comentaremos la línea:
ChallengeResponseAuthentication no
Guardamos los cambios usando Ctrl + O. y reiniciamos el servicio usando la siguiente línea:
sudo systemctl restart sshd.service
Podemos validar la conectividad accediendo desde otra terminal:
4. Cómo habilitar que SSH esté gestionando MFA en CentOS 7
Para esto accedemos nuevamente al archivo sshd.config y en la parte final del archivo agregaremos la siguiente línea:
AuthenticationMethods publickey,password publickey,keyboard-interactive
Guardamos los cambios usando Ctrl + O y a continuación accederemos al archivo sshd de PAM usando la siguiente línea:
sudo nano /etc/pam.d/sshd
Allí ubicaremos la línea auth substack password-auth y la comentaremos (#) para que PAM no requiera la contraseña de acceso por SSH:
Guardamos los cambios. Reiniciamos el servicio usando el comando:
sudo systemctl restart sshd.service
5. Cómo agregar un tercer factor de autenticación en CentOS 7
Pudimos ver que se añadieron los siguientes factores de autentificación:
publickey (Clave SSH) password publickey (Contraseña) keyboard-interactive (Codigo de verificación)
Si intentamos conectarnos solo veremos activos la clave SSH y el código de verificación, para habilitar la contraseña basta con acceder de nuevo a la ruta sudo nano /etc/pam.d/sshd y allí descomentar la línea
auth substack password-auth.
Guardamos los cambios y vamos a reiniciar el servicio usando sudo
systemctl restart sshd.serviceComo vemos entre más niveles de seguridad manejemos en CentOS 7 más oportunidad tendremos de poseer un sistema estable y confiable para todos los usuarios. Para que sigas aprendiendo cosas sobre la seguridad en tu sistema, mira cómo puedes configurar, habilitar o deshabilitar el Firewall en CentOS 7.