Comment verrouiller et déverrouiller l’utilisateur après l’échec des tentatives de connexion SSH
La sécurité SSH est une priorité absolue lors de la configuration de votre serveur. Les paramètres SSH par défaut ne sont généralement pas assez robustes pour protéger votre serveur contre les attaques externes.
Par conséquent, des ajustements supplémentaires sont nécessaires pour fournir une sécurité décente contre les attaques par force brute. L’une d’entre elles consiste à mettre en œuvre fail2ban pour éloigner les utilisateurs non autorisés après un certain nombre de tentatives de connexion incorrectes. De même, vous pouvez tirer parti du module pam_faillock pour mettre en œuvre une politique de verrouillage de compte.
Ce guide vous montrera comment verrouiller le compte d’un utilisateur système après un nombre spécifié d’échecs de tentatives de connexion SSH dans les distributions basées sur RedHat. Sur les distributions basées sur Debian, vous devez utiliser le module pam_tally2 pour verrouiller les connexions SSH ayant échoué.
Ici, l’objectif est d’appliquer une sécurité simple du serveur en verrouillant le compte d’un utilisateur après un certain nombre consécutif d’authentifications SSH infructueuses.
Qu’est-ce qu’pam_faillock module ?
Le module pam_faillock fait partie de Linux PAM (Pluggable Authentication Modules), un utilitaire composé de bibliothèques partagées qui sépare les applications des méthodes d’authentification standard.
Il accepte les vérifications d’authentification de programmes tels que sshd, gdm, login et bien d’autres et authentifie l’utilisateur auprès de ces services ou applications dans les systèmes Linux. Nous avons brièvement expliqué la configuration de PAM pour auditer l’activité du shell de connexion de l’utilisateur.
Le module enregistre les tentatives d’authentification infructueuses par utilisateur et verrouille temporairement le compte utilisateur si les tentatives d’authentification infructueuses dépassent une certaine limite. Les tentatives de connexion infructueuses sont stockées dans des fichiers par utilisateur dans le répertoire tally qui est /var/run/faillock/ par défaut.
Le module pam_faillock remplace les modules pam_tally et pam_tally2 qui ont été déconseillés dans RHEL 7 et RHEL 8. Il offre plus de flexibilité et d’options que les deux modules.
Comment verrouiller l’utilisateur après l’échec des connexions SSH
Vous pouvez configurer la fonctionnalité ci-dessus dans les fichiers /etc/pam.d/system-auth et /etc/pam.d/password-auth, en ajoutant les entrées ci-dessous à la section auth.
$ sudo vim /etc/pam.d/system-auth
sudo vim /etc/pam.d/password-auth
Pour verrouiller ou refuser aux utilisateurs l’accès au système après 3 tentatives SSH infructueuses et déverrouiller le compte utilisateur après 1200 secondes, ajoutez les lignes suivantes dans la section d’authentification.
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=1200
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
Où:
Audit– Permet l’audit des utilisateurs.Deny– utilisé pour définir le nombre de tentatives (3 dans ce cas), après quoi le compte utilisateur doit être verrouillé.unlock_time– définit la durée (600 secondes=10 minutes) pendant laquelle le compte doit rester verrouillé.
Notez que l’ordre de ces lignes est très important, des configurations incorrectes peuvent entraîner le verrouillage de tous les comptes utilisateurs.
La section d’authentification dans les deux fichiers doit avoir le contenu ci-dessous organisé dans cet ordre :
#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authselect is run.
auth required pam_env.so
auth sufficient pam_unix.so try_first_pass nullok
auth required pam_deny.so
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=1200
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
Ensuite, accédez à la section du compte et ajoutez la ligne suivante dans les deux fichiers ci-dessus.
account required pam_faillock.so
Après avoir ajouté les paramètres ci-dessus, il devrait apparaître comme suit.
Comment verrouiller Root après l’échec des connexions SSH
Vous pouvez ajouter le paramètre even_deny_root à la section auth pour verrouiller à la fois l’utilisateur et l’utilisateur normal. Dans cet exemple, le temps de déverrouillage pour les utilisateurs réguliers est de 1200 secondes (20 minutes) et de 3600 secondes (60 min ou 1 heure) pour l’utilisateur racine après 3 tentatives de connexion SSH infructueuses.
auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=3600
Une fois que vous avez tout configuré. Vous pouvez redémarrer les services d’accès à distance comme sshd, pour que la politique ci-dessus prenne effet, c’est-à-dire si les utilisateurs utilisent ssh pour se connecter au serveur.
$ sudo systemctl restart sshd
Ensuite, nous allons exécuter un test et vérifier si la configuration fonctionne.
Comment tester les tentatives de connexion infructueuses d’un utilisateur SSH
À partir des paramètres ci-dessus, nous avons configuré le système pour verrouiller le compte d’un utilisateur après 3 tentatives d’authentification infructueuses.
Dans ce scénario, l’utilisateur tecmint tente de passer à l’utilisateur aaronkilik, mais après 3 connexions incorrectes à cause d’un mot de passe erroné, indiqué par le message « Autorisation refusée », le compte de l’utilisateur aaronkilik est verrouillé comme le montre le message « échec de l’authentification » à partir de la quatrième tentative.
L’utilisateur root est également informé des tentatives de connexion infructueuses sur le système, comme illustré dans la capture d’écran ci-dessous.
Comment afficher les échecs de connexion SSH
Vous pouvez voir tous les journaux d’échec de l’authentification SSH à l’aide de l’utilitaire de verrouillage d’échec, qui est utilisé pour afficher et modifier le journal d’échec de l’authentification.
Vous pouvez afficher les tentatives de connexion infructueuses d’un utilisateur particulier comme ceci.
# faillock --user aaronkilik
Pour afficher toutes les tentatives de connexion infructueuses, exécutez faillock sans aucun argument comme suit :
# faillock
Comment déverrouiller un utilisateur après l’échec des connexions SSH
Pour effacer les journaux d’échec d’authentification d’un utilisateur, exécutez cette commande.
# faillock --user aaronkilik --reset
OR
fail --reset #clears all authentication failure records
Désactiver le verrouillage de l’utilisateur après l’échec des connexions SSH
Enfin, pour indiquer au système de ne pas verrouiller un utilisateur ou les comptes d’un utilisateur après plusieurs tentatives de connexion infructueuses, ajoutez l’entrée en gras, juste au-dessus de l’endroit où pam_faillock est appelé pour la première fois sous la section auth dans les deux fichiers (/etc/pam.d/system-auth et /etc/pam.d/password-auth) comme suit.
#%PAM-1.0
This file is auto-generated.
User changes will be destroyed the next time authselect is run.
auth required pam_env.so
auth sufficient pam_unix.so try_first_pass nullok
auth required pam_deny.so
auth [success=1 default=ignore] pam_succeed_if.so user in tecmint:aaronkilik
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=1200
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
Comment désactiver le module Faillock
Pour désactiver le module pam_failock, exécutez la commande suivante :
# authconfig --disablefaillock --update
Pour plus d’informations, reportez-vous aux pages de manuel pam_faillock et faillock.
# man pam_faillock
man faillock
C’est tout! Dans cet article, nous avons montré comment appliquer la sécurité simple d’un serveur en verrouillant le compte d’un utilisateur après un nombre x de connexions incorrectes ou de tentatives d’authentification infructueuses.
C’est un moyen pratique de renforcer votre sécurité SSH contre les attaques par force brute. Utilisez le formulaire de commentaire ci-dessous pour nous faire part de vos questions ou de vos réflexions.




