A continuación veremos algunas configuraciones que nos permitirán estar más tranquilos en ese sentido y estar preparados para vaguear un poco.
Las políticas de contraseñas en GNU/Linux se implementan haciendo uso de PAM (Pluggable Authentication Modules), el cual viene instalado por defecto en la mayoría de distribuciones actuales. Esto nos permite saltarnos el paso de la instalación de PAM para ir directamente a configurar.
Solo en caso de de Debian y derivadas, es necesario instalar cracklib, un paquete que provee capacidades adicionales para control de contraseñas. En Red Hat y derivadas, cracklib ya viene instalado.
[fraterneo@rainbow3 ~]$ sudo apt-get install -y libpam-cracklibEntrando ya en materia, para aplicar políticas de contraseñas trabajeremos con algunos ficheros de configuración ubicados en /etc/pam.d/, lo que nos permitirá que los cambios surtan efecto inmediatamente. Es importante aclarar que estas políticas aplican solo para los usuarios; el super usuario (root) está excento de ellas.
Prevenir el uso de contraseñas anteriores
Esto se logra haciendo uso del parámetro remember en la línea de password que tiene a "pam_unix.so". Si le damos, por ejemplo, un valor de 5, no permitirá la re-utilización de las últimas cinco contraseñas almacenadas en /etc/security/opasswd.
En Debian y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/common-password password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5En Red Hat y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/system-auth password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5Tamaño mínimo de la contraseña
Esto se logra con el parámetro minlen usado en una línea "password" con "pam_cracklib.so". Si le damos un calor de 10. Esto forzará a colocar contraseñas de 10 caracteres de largo. Sim embargo como existen 4 tipos de caracteres para las contraseñas (upper-case, lower-case, numeric, y symbol) debemos restar 4 a minlen para obtener el tamaño final permitido, que este caso sería de 6.
En Debian y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3En Red Hat y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10Complejidad de la contraseña
Esto lo haremos con los parámetros ucredit, lcredit, dcredit y ocredit en una línea que contenga "password" y "pam_cracklib.so", dándole los siguientes valores: "ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1". Esto forzará a incluir al menos un caŕacter en mayúscula (ucredit), dos en minúscula (lcredit), uno numérico (dcredit) y un símbolo (ocredit).
En Debian y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1En Red Hat y derivadas:
[fraterneo@rainbow3 ~]$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1Vencimiento de la contraseña
Para establecer el período de vencimiento global (para todos los usuarios) de las contraseñas, lo haremos editando el fichero /etc/login.defs.
[fraterneo@rainbow3 ~]$ sudo vi /etc/login.defs PASS_MAX_DAYS 60 PASS_MIN_DAYS 0 PASS_WARN_AGE 14De esta manera los usuarios deberán cambiarla cada 60 días (dos meses), con advertencias desde 14 días antes del vencimiento.
Si queremos hacerlo para un usuario específico, usaremos el comando chage. Primero vemos la política de vencimiento de la contraseña de dicho usuario.
[fraterneo@rainbow3 ~]$ sudo chage -l fraterneo Last password change : Nov 12, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7Como podemos observar la contraseña de fraterneo nunca expira. Con el mismo comando chage cambiamos esta situación.
[fraterneo@rainbow3 ~]$ sudo chage -E 6/30/2014 -m 10 -M 90 -I 30 -W 14 fraterneoEl comando anterior pondrá como fecha de expiración el 30 de marzo de 2014. Además, el número max/min de días entre cambios lo establece a 10 y 90; la cuenta se bloqueará a 30 días del vencimiento de la contraseña, si esta no ha sido cambiada; y la advertencia será enviada al usuario 14 días antes del vencimiento.
En modo gráfico (Red Hat y derivadas)
Para los que se sienten mejor trabajando con una GUI (aunque no es lo mejor administrativamente), en Red Hat y derviadas tenemos la herramienta authconfig-gtk, que trabaja con system-config-authentication, y por supuesto siempre tenemos a system-config-users.
Estas herramientas no vienen instaladas por defecto, pero están disponibles en los repositorios.
Excelente Post... Muy útil!!!!
ResponderEliminarMuy interesante.
ResponderEliminarGracias.
Seria bueno destacar que algunos pasos fuera diferente en systemd
ResponderEliminarEsta Bien verga la injfor
ResponderEliminarmacion