¿Cómo podemos agregar palabras adicionales a la lista de palabras verificadas por el diccionario de contraseñas de pam_cracklib en Red Hat Enterprise Linux 6?
¿Qué es PAM cracklib?
Red Hat Enterprise Linux se puede configurar para verificar que las contraseñas no se puedan adivinar fácilmente. En Red Hat Enterprise Linux, esta verificación la realiza el módulo de autenticación conectable (PAM) /lib/security/pam_cracklib.so . Comprueba para asegurarse de que las contraseñas tengan una longitud mínima y verifica que una contraseña no aparezca en un diccionario.
El diccionario utilizado por este módulo se encuentra en /usr/lib/ y está en formato cracklib. De forma predeterminada, cada uno de los archivos de diccionario tiene como prefijo el nombre de archivo cracklib_dict .
Este módulo tiene una serie de parámetros, algunos de los más útiles se encuentran a continuación:
Parámetro | Descripción |
---|---|
minlen | Especifica la longitud mínima permitida para una cuenta |
difok | Especifica el número mínimo de caracteres que deben diferir de la contraseña anterior |
Un ejemplo de implementación de esto sería agregar la siguiente línea al archivo /etc/pam.d/system-auth:
password required /lib/security/pam_cracklib.so retry=3 type= minlen=8 difok=3Nota :El argumento type=no necesita un valor a menos que desee definir este parámetro. Definirlo alterará el mensaje impreso como aviso al usuario.
Puede encontrar información adicional sobre el módulo pam_cracklib en la documentación del sistema en:/usr/share/doc/pam-
Agregar nuevas palabras al diccionario cracklib
Siga los pasos a continuación para agregar palabras al diccionario que cracklib usa para validar contraseñas contra palabras conocidas del diccionario.
1. Asegúrese de tener los siguientes rpm instalados en su servidor CentOS/RHEL/Fedora:
pam-1.1.1-22.0.1.el6.x86_64 cracklib-2.8.16-4.el6.x86_64 cracklib-dicts-2.8.16-4.el6.x86_64 words-3.0-17.el6.noarch
Tenga en cuenta que la versión de rpm cambiará según la versión del sistema operativo.
2. Verifique si la nueva palabra que se agregará al diccionario ya existe en el diccionario o no.
# echo "pwd1234@" | cracklib-check pwd1234@: OK
El "OK" en la salida indica que la nueva palabra aún no está incluida en el diccionario.
3. Modifique /usr/share/dict/linux.words y agregue "pwd1234@" al final.
# vi /usr/share/dict/linux.words pwd1234@
3. Verifique el archivo en el que se ha agregado la entrada.
# tail /usr/share/dict/linux.words Zyzomys Zyzzogeton zyzzyva zyzzyvas ZZ Zz zZt ZZZ pwd1234@
4. Actualice el diccionario cracklib con el siguiente comando:
# create-cracklib-dict /usr/share/dict/linux.words
5. Ahora verifique una vez más si se ha agregado lo mismo al diccionario o no.
# echo "pwd1234@" | cracklib-check pwd1234@: it is based on a dictionary word
La nueva palabra ya está en el diccionario como se ve en el resultado anterior.
6. Ahora pruebe también con la misma contraseña del usuario
$ passwd Changing password for user test. Changing password for test. (current) UNIX password: New password: >>>>>>>>>>>>> Input pwd1234@ BAD PASSWORD: it is based on a dictionary word
Como puede ver en el resultado anterior, la nueva palabra agregada al diccionario no se puede usar como contraseña ahora.