In een ander artikel (Veilig wachtwoord kiezen) hebben we al gesproken over hoe een veilig wachtwoord te kiezen dat ook nog eens eenvoudig te onthouden is. Dit artikel gaat erover hoe we in linux systemen het wachtwoord beleid kunnen afdwingen zodat gebruikers gedwongen worden om een veilig wachtwoord te verzinnen. Hierbij gaan we ervan uit dat uw linux systeem gebruik maakt van PAM. (Meestal standaard)
Voorbereiding
Installeer libpam-cracklib op uw systeem. Deze module is standaard al geïnstalleerd in Centos, Fedora of RHEL. Dus op die besturingssystemen hoeft u niets extra's te doen.
Op Debian, Ubuntu of Linux Mint kunt u het volgende uitvoeren om libpam-cracklib te installeren:
# apt-get install libpam-cracklib
Met deze module geïnstalleerd kunnen we aanpassingen maken aan de authenticatie gerelateerde PAM configuratie bestanden in /etc/pam.d
Wijzigingen hierin worden direct actief ! En de voorbeelden in dit artikel zijn alleen van toepassing op reguliere (niet root) gebruikers.
Hergebruik oude wachtwoorden
Hergebruik van oude wachtwoorden moet voorkomen worden, zodat gebruikers niet continue tussen wachtwoorden blijven wisselen. Om een gebruiker bijvoorbeeld de laatste 7 gebruikte wachtwoorden niet meer te kunnen laten gebruiken kan “remember=7” worden toegevoegd aan de regel met “password” en “pam_unix.so”.
Op Debian, Ubuntu of Linux Mint bevindt zich deze regel in /etc/pam.d/common-password
# vi /etc/pam.d/common-password
…
password [success=1 default=ignore] pam_unix.so obscure sha512 try_first_pass remember=7
…
Op Centos, Fedora of RHEL bevindt zich deze regel in /etc/pam.d/system-auth
# vi /etc/pam.d/system-auth
…
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=7
…
Minimale wachtwoord lengte
De lengte van een wachtwoord is tevens afhankelijk van de verscheidenheid van het wachtwoord. Zoals we hebben kunnen lezen in Veilig wachtwoord kiezen is het aan te raden hoofdletters, kleine letters, cijfers en tekens in een wachtwoord te gebruiken. Hoe meer verschillende types men gebruikt, hoe korter het wachtwoord mag zijn ten opzichte van de afgedwongen lengte. De lengte die ingesteld wordt is dus de lengte nodig voor een wachtwoord dat slechts één van de verschillende type karakters bevat. Bij het instellen van een minimale wachtwoord lengte van 9 en het gebruik van alle verschillende type karakters, wordt de minimale wachtwoord lengte 5 !
Om een minimale wachtwoord lengte in te stellen dienen we in dezelfde bestanden als hierboven op zoek te gaan naar de regel met “password” en “pam_cracklib.so”
Op Debian, Ubuntu of Linux Mint :
# vi /etc/pam.d/common-password
…
password requisite pam_cracklib.so retry=3 minlen=9 difok=3
…
Op Centos, Fedora of RHEL :
# vi /etc/pam.d/system-auth
…
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=9
…
Wachtwoord complexiteit
Zoals al aan gegeven kan een wachtwoord complexer gemaakt worden door gebruik te maken van een mix van hoofdletters, kleine letters, cijfers en tekens.
Het gebruik hiervan kan ook worden afgedwongen via PAM. Kijk hiervoor opnieuw naar de regel met “password” en “pam_cracklib.so” en voeg hier aan toe "ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1". Hiermee wordt afgedwongen dat er minimaal één hoofdletter (ucredit), minimaal één kleine letter (lcredit), minimaal één cijfer (dcredit) en minimaal één teken (ocredit) in het wachtwoord moeten voorkomen.
Op Debian, Ubuntu of Linux Mint :
# vi /etc/pam.d/common-password
…
password requisite pam_cracklib.so retry=3 minlen=9 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
…
Op Centos, Fedora of RHEL :
# vi /etc/pam.d/system-auth
…
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=9 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
…
Verplichte wachtwoord wijziging
Wachtwoorden dient men regelmatig te wijzigen. Ook dit kan worden afgedwongen op het systeem. Als een gebruiker zichzelf aan meld met een wachtwoord wat over de houdbaarheidsdatum heen is, zal hij verplicht worden het wachtwoord te wijzigen voordat hij verder mag.
Dit kan worden bereikt door een aanpassing te maken in /etc/login.defs
# vi /etc/login.defs
…
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 14
…
De waardes in dit voorbeeld geven aan dat elke 90 dagen (PASS_MAX_DAYS) het wachtwoord gewijzigd moet worden. Vanaf 14 dagen voor het verlopen wordt de gebruiker al gewaarschuwd dat de verplichte wachtwoord wijziging er aan komt (PASS_WARN_AGE). Met PASS_MIN_DAYS kan men eventueel aan geven hoeveel dagen er tussen wachtwoord wijzigingen mogen zitten. Dit om bijvoorbeeld creatieve gebruikers te laten voorkomen dat de ze met een aantal wijzigingen van het wachtwoord kort achter elkaar weer het oude wachtwoord kunnen gaan gebruiken.