Sécuriser SSH avec pam_faillock

Un mémo sur la mise en place du module de sécurité pam_faillock sur Debian 12. Ce module permet de verrouiller temporairement un compte utilisateur connu du système après plusieurs tentatives de connexion infructueuses via ssh.

Prérequis

  • Une machine tournant sous Debian 12 (Bookworm).
  • Un accès root ou des privilèges sudo.
  • Une compréhension de base des fichiers PAM (Pluggable Authentication Modules).

Étape 1 : Installer les paquets nécessaires

pam_faillock est inclus dans le paquet libpam-modules, qui est installé par défaut sur Debian 12.

Étape 2 : Configurer pam_faillock

  • Modifier le fichier PAM de gestion des connexions locales :
    • Éditer le fichier /etc/pam.d/common-auth :
      auth    required                        pam_faillock.so preauth
      auth    [success=1 default=ignore]      pam_unix.so nullok
      auth    [default=die]                   pam_faillock.so authfail
      auth    sufficient                      pam_faillock.so authsucc
      auth    requisite                       pam_deny.so
      auth    required                        pam_permit.so
      
  • Éditer le fichier /etc/pam.d/common-account :

    account required                        pam_faillock.so

  • Configurer le fichier /etc/security/faillock.conf :
    • deny = 3
    • unlock_time = 900
    • audit
    • ignore_users = root
    • silent

  • Étape 3 : Tester la configuration

    • Vérifier les logs :
      • Les échecs de connexion sont enregistrés dans les journaux système :
      • sudo journalctl -xe | grep pam_faillock
      • Simuler des échecs de connexion :
        • Tester plusieurs fois des connexions avec un mauvais mot de passe :

          • Vérifier les comptes verrouillés :
            • Utilisez la commande suivante pour lister les utilisateurs verrouillés :
            • sudo faillock

            • Pour réinitialiser les tentatives d’échec d’un utilisateur spécifique :
            • sudo faillock --reset --user utilisateur

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.