Tecnologías de la información
Hardening Linux 3 - Reglas
Sistemas Operativos / Linux
Estas políticas sirven como ejercicio de PAM. Exigir cierta cantidad de mayúsculas no debe presentarse como la política ideal para cualquier sistema; el contexto y la versión del módulo importan.
Índice
- Política de Contraseña mínimo 3 mayúsculas
- Política de Contraseña 3 números y 2 intentos fallidos
- SSH
Política de Contraseña: mínimo 3 mayúsculas
Aplicaremos una política que exija al menos 3 mayúsculas.
En Ubuntu deberiamos tener el archivo /etc/security/pwquality.conf
La ausencia de ese archivo no demuestra que no haya ninguna política de contraseñas. Para este ejercicio usaremos libpam-pwquality y revisaremos también la configuración efectiva de PAM (Pluggable Authentication Modules).
sudo apt-get update
sudo apt-get install libpam-pwquality
Antes

Despues

Los pasos son los siguientes:
-
Abrir el archivo
sudo nano /etc/security/pwquality.conf -
Agregar o editar una línea en específico
ucredit=-3
Con esto forzamos que sean al menos 3 mayúsculas -
Guardar y cerrar
-
Probar:
passwd <usuario>
Ejemplo público de laboratorio: no guardar ni reutilizar contraseñas reales dentro de los apuntes.
Política de Contraseña: 3 números y 2 intentos fallidos
-
Volvemos al mismo archivo:
sudo nano /etc/security/pwquality.conf -
Agregamos o modificamos la línea
dcredit = -3
-
Con eso tenemos el requisito de 3 números.
Para los 2 intentos debemos ir a otro archivo:
/etc/pam.d/common-auth
y agregamos lo siguiente en versiones antiguas de Ubuntu:
auth required pam_tally2.so deny=2 unlock_time=10 onerr=fail
Importante: verificar qué versión estamos porque no basta un corte por versión 20.04: comprobar paquetes, módulos disponibles y la pila PAM efectiva antes de escoger pam_faillock o material histórico de pam_tally2
Como es mi caso, usamos faillock así que lo agregamos de la siguiente forma:

- Verificamos:
Contraseña con menos de 3 dígitos

Intentos fallidos
nota: usamos faillock para ver los intentos inválidos y validos registrados
SSH
Esto es una continuación básicamente de un Ejercicio de SSH que había realizado previamente así que se asume que el lector tiene acceso a él.
Debemos primero instalar el servidor SSH si no lo está:
sudo apt update && sudo apt install openssh-server -y
y verificamos con
sudo systemctl status ssh
Abrimos el archivo sudo nano /etc/ssh/sshd_config y cambiamos la línea del puerto:

Ahora: podemos realizar verificaciones de varias formas pero la más común es:
sudo netstat -tulnp | grep ":44"
En mi instalación no estaba disponible netstat; para consultar sockets utilicé sudo ss -tulnp | grep ":44"
Sin embargo... dada las configuraciones realizadas en el ejercicio de Hardening previo, la regla anterior acepta TCP/22, pero por sí sola no demuestra que solo ese puerto esté permitido: depende de la política y del resto de reglas. Obviamente tenemos un conflicto porque SSH está ahora en el :44. Esto nos lleva a mi conclusión previa sobre las configuraciones causando conflicto entre ellas, por lo cual es importante llevar documentación acorde (como esta).
La verdad es que no lo voy a cambiar en este momento, pero a modo gráfico con este pantallazo vemos que la configuración está hecha y activa en el puerto 44:

Alcance del ejercicio: las reglas de composición anteriores son una práctica de configuración, no una recomendación universal. NIST SP 800-63B-4 prioriza longitud, listas de contraseñas bloqueadas y limitación de intentos, y no exige mezclas obligatorias de tipos de caracteres. No trasladar estas reglas de laboratorio a una política sin revisar su contexto.
Política del ejercicio: las cuotas de mayúsculas y números permiten practicar configuración, pero no representan por sí solas una buena política actual. Contrastar longitud, contraseñas comprometidas y limitación de intentos con NIST SP 800-63B-4.
Contraste: pam_faillock, pwquality.conf, OpenSSH. Los créditos negativos exigen mínimos cuando pam_pwquality está integrado y aplica al cambio de contraseña; la política para root puede diferir. Faillock requiere orden y llamadas apropiadas en auth/account: una línea aislada no es receta universal. Bloqueos de dos intentos pueden permitir denegación de servicio. Cambiar Port exige validar configuración efectiva y reiniciar/recargar el servicio o socket correspondiente antes de inspeccionar; grep :44 también coincide con otros puertos.
+----------------------------------------+
| Floure & |
| Tachibana's guild |
| [Hikari · Nozomi · Vesper] |
| SEAL: sha256/12: d765fa6d02d8 |
| STATUS: LITURGY_IN_PROGRESS |
+----------------------------------------+