===== Comment définir la politique de mot de passe sur Linux ===== {{:systeme:linux_logo.jpeg?nolink&100|}}La gestion des logins est l'un des emplois les plus critiques des administrateurs système.\\ En particulier, la sécurité des mots de passe doit être considérée comme la principale préoccupation pour tout système Linux sécurisé.\\ Je vais décrire comment configurer la politique de mot de passe sur Linux. ~~READMORE~~ Je suppose que vous utilisez [[http://www.linux-pam.org/|PAM (Pluggable Authentication Modules)]] sur votre système Linux, ce qui est le cas sur toutes les distributions récentes de Linux. ==== Preparation ==== Installer le module PAM ''cracklib'' pour activer le support, il peut fournir des capacités de contrôle de mot de passe supplémentaires.\\ Sur Debian ou équivalent : aptitude install libpam-cracklib Le module PAM ''cracklib'' est installé par défault sur CentOS ou équivalent, donc l'installation de cette module n'est pas nécessaire sur ces distribution. ==== Empêcher la réutilisation d'anciens mots de passe ==== Pour appliquer une politique de mot de passe, nous avons besoin de modifier un fichier de configuration PAM liées à l'authentification situé à ''/etc/pam.d''.\\ Le changement de politique prendra effet immédiatement après le changement. Notez que les règles de mot de passe présentés dans cette article seront appliquées uniquement lorsque les logins non-root modifies leurs mots de passe, mais pas avec le privilège root. Recherchez une ligne qui contient à la fois ''password'' et ''pam_unix.so'' et ajouter ''remember=3'' à cette ligne.\\ Elle permettra d'éviter que l'utilisateur reprenne les trois mots de passe les plus récemment utilisés (en les stockant dans ''/etc/security/opasswd''). Sur Debian ou équivalent : vim /etc/pam.d/common-password password [success=1 default=ignore] pam_unix.so obscure sha512 remember=3 Sur CentOs ou équivalent : vim /etc/pam.d/system-auth password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=3 ==== Définir la taille minimum du mot de passe ==== Recherchez une ligne qui contient à la fois ''password'' et ''pam_cracklib.so'' et ajouter ''minlen=10'' à cette ligne.\\ Cela va appliquer un mot de passe d'une longueur (10 - <# de types>), où ''<# de types>'' indique combien de types de caractères différents sont utilisés dans le mot de passe.\\ Il existe quatre types (majuscules, minuscules, numériques et symboles) de caractères.\\ Donc, si vous utilisez une combinaison de tous les types et que ''minlen'' est fixée à 10, le mot de passe le plus court autorisé serait 6 caractères. Sur Debian ou équivalent : vim /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3 Sur CentOS ou équivalent : vim /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ==== Définir la complexité du mot de passe ==== Recherchez une ligne qui contient ''password'' et ''pam_cracklib.so'' et ajouter ''ucredit = -1 lcredit = -2 dcredit = -1 ocredit = -1'' à cette ligne.\\ Cela va forcer qu'il y est au moins une lettre majuscule (ucredit), deux lettres minuscules (lcredit), un chiffre (dcredit) et un symbole (ocredit) dans le mot de passe. Sur Debian ou équivalent : vim /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 Sur Centos ou équivalent : vim /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 ==== Définir la période d’expiration du mot de passe ==== Pour définir la période de validité du mot de passe actuel, modifier les variables suivantes de ''/etc/login.defs''.\\ vim /etc/login.defs PASS_MAX_DAYS 150 PASS_MIN_DAYS 0 PASS_WARN_AGE 7 Cela va forcer tous les utilisateurs à changer leur mot de passe une fois tous les six mois et envoyer un message d'avertissement sept jours avant l'expiration du mot de passe. Si vous souhaitez définir une période de péremption sur chaque utilisateur, utilisez la commande ''chage'' au lieu de cela.\\ Pour voir la politique d'expiration de mot de passe pour un utilisateur spécifique : chage -l toto Dernier changement de mot de passe : oct. 21, 2015 Fin de validité du mot de passe : jamais Mot de passe désactivé : jamais Fin de validité du compte : jamais Nombre minimum de jours entre les changements de mot de passe : 0 Nombre maximum de jours entre les changements de mot de passe : 99999 Nombre de jours d'avertissement avant la fin de validité du mot de passe : 7 Par défaut les mots de passe n’expire jamais Pour changer la période de péremption du mot de passe de toto : chage -E 8/25/2015 -m 5 -M 90 -I 30 -W 14 toto La commande ci-dessus fais expiré le mot de passe le 25/08/2015.\\ Le nombre maximum/minimum de jours entre les changements de mot de passe est réglé sur 5 et 90.\\ Le compte sera bloqué 30 jours après l'expiration d'un mot de passe et un message d'avertissement sera envoyé 14 jours avant l'expiration du mot de passe. Pour désactivé le changement de mot de passe pour un login utilisez ça: chage -I -1 -m 0 -M 99999 -E -1 toto avec la commande ''chage'' vous pouvez vérifier # chage -l toto Last password change : oct. 21, 2015 Password expires : jamais Password inactive : jamais Account expires : jamais Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 28 Source :[[http://xmodulo.com/set-password-policy-linux.html|xmodulo.com]]