PAM Cracklib: Configure Password Complexity
Introduction
If you're tired of users choosing passwords that are too simple on your systems, compromising security in the process, there's a solution. PAM Cracklib allows you to specify the minimum size of passwords, the number of lowercase letters, uppercase letters, digits, and more.
It's almost essential, especially if you rely on a backend like LDAP.
Installation
Installation is straightforward:
Configuration
We only have one file to edit, which greatly simplifies things. Since we're using Debian, they've made our lives easier - we just need to uncomment some lines that already come with clear explanations!
I've commented the first line in bold and then uncommented the last two. On the last line, I also removed 'nullok' which allows empty passwords. Any account with an empty password will be rejected (be careful though if you have a system user that needs this type of account for maintenance operations).
Now, let's explain the pam_cracklib.so line parameters:
- retry: the number of times the user can retry if they enter the wrong password
- minlen: the minimum length of the password
- difok: this is a clever one, and a bit tricky - it remembers previous passwords that users have set. Here a user can't reuse a previously used password until the 5th time.
- dcredit: if the number is negative, it means the password must contain at least x decimal digits to be validated (here at least one digit is required)
- ucredit: if the number is negative, it means the password must contain at least x uppercase letters to be validated (here at least one uppercase letter is required)
- lcredit: if the number is negative, it means the password must contain at least x lowercase letters to be validated (here at least one lowercase letter is required)
I could have also added ocredit which allows you to specify special characters. For dcredit, ucredit, lcredit and ocredit, if they equal a positive number, they subtract from minlen when used.
Check the references below if you want more information :-)
References
http://www.deer-run.com/~hal/sysadmin/pam_cracklib.html
http://linux.die.net/man/8/pam_cracklib