Linux check passwords against a dictionary attack

by on December 20, 2006 · 2 comments· LAST UPDATED December 21, 2006

in , ,

Dictionary attack is used for detecting password.

Wikipedia defines:
A dictionary attack is a technique for defeating a cipher or authentication mechanism by trying to determine its decryption key or passphrase by searching a large number of possibilities.

A dictionary attack also exploits the tendency of people to choose weak passwords, and is related to the previous attack. Password cracking programs usually come equipped with "dictionaries", or word lists, with thousands or even millions of entries of several kinds, including:
=> Words in various languages
=> names of people
=> Places
=> Commonly used passwords etc

However you can use the existence of these dictionary attack tools demonstrates the relative strengths of different password choices against such attacks.

Check user passwords against a dictionary attack

You can be configured to verify that passwords (read as weak password) cannot be guessed easily using Linux PAM module called pam_cracklib.so. It will check the passwd against dictionary words. User is not allowed to set new password until and unless conditions satisfied (i.e. weak password is not allowed).

Open password configuration file according to your Linux distribution. And make modification as follows.

Redhat/Fedora/CentOS Linux

cracklib PAM module is installed by default so no need to install anything. Just open config file:
# vi /etc/pam.d/system-auth
Append/modify as follows:
password required /lib/security/pam_cracklib.so retry=2 minlen=10 difok=6

Debian or Ubentu Linux

First install libpam-cracklib PAM module to enable cracklib support.
# apt-get install libpam-cracklib
or
$ sudo install libpam-cracklib
Now open config file:
# vi /etc/pam.d/system-auth
Append/modify as follows:
password required pam_cracklib.so retry=2 minlen=10 difok=6

Save and close the file

Where,

  • retry=2 : Prompt user at most 2 times before returning with error
  • minlen=10 : minimum length allowed for an account password is set to 10 characters. This is the minimum simplicity count for a good password. And you are allowed only 2 times using retry option.
  • difok=6: How many characters can be the same in the new password relative to the old. User will see error - BAD PASSWORD: is too similar to the old one
  • You can also apply following options to compute the 'unsimplicity' of the password.
    • dcredit=N : Digits characters
    • ucredit=N : Upper characters
    • lcredit=N : Lower characters
    • ocredit=N : Other characters

Please note that restrictions are only applied to normal users (not to root user).

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 2 comments… read them below or add one }

1 HT August 5, 2011 at 6:56 pm

When a user’s password is expired and need to enter the new password. However the user does not the password complexity set by the PAM, i.e. uppercase letter, lowercase letter and alphanumeric value. Is there a way to prompt the user for password but also display the text telling the user what the password complexity is? Is this a good practice to tell the user the password complexity setting?

Reply

2 csa July 10, 2014 at 4:45 pm

@HT No, that will make a cracker job easier!

Reply

Leave a Comment

Previous post:

Next post: