J'ai ajouté la ligne
auth required pam_tally2.so deny=3 unlock_time=180
dans mon fichier /etc/pam.d/login
, et c'est très bien, après 3 tentatives, testuser
est suspendu.
Cependant, cette même ligne dans /etc/pam.d/sshd
ne produit aucun effet.
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
Comme vous pouvez le constater après 3 tentatives infructueuses, l'utilisateur peut toujours tenter de saisir un mot de passe.
Comment faire ssh
interdire un utilisateur après 3 frappes?
Pour SSH, il serait peut-être préférable d’utiliser quelque chose de différent de pam: il existe une excellente solution basée sur iptables et le fichier sshd_config
. Ce n’est qu’un moyen d’obtenir ce que vous voulez, également en fonction de la documentation, il est généralement recommandé d’utiliser des clés SSH au lieu d’une vérification de la méthode d’authentification par mot de passe https://help.ubuntu.com/community/SSH/OpenSSH/ Configuration .
Vous devrez changer le /etc/ssh/sshd_config
en ajoutant la ligne
MaxAuthTries 1
Vous devez créer les règles de pare-feu suivantes
Créer une nouvelle chaîne
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATACK -j DROP
Bloquez chaque adresse IP pendant 120 secondes et établissez plus de trois connexions en moins de 120 secondes. Dans le cas d'une quatrième tentative de connexion, la demande est déléguée à la chaîne SSHATTACK, qui est chargée de consigner la possible attaque ssh et, finalement, supprime la demande.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
Vous pouvez vérifier les tentatives effectuées sur le fichier /var/log/syslog
.
La pratique courante consiste à utiliser fail2ban
qui fonctionne au niveau du réseau au lieu de pam et qui sauvegarde vos ressources pour tout le cryptage effectué par sshd
.
Quoi qu'il en soit, avez-vous essayé, après cette tentative d'authentification, d'insérer le mot de passe correct? Est-ce accepté? Qu'est-ce qui est connecté dans /var/log/auth.log
?
Le serveur sshd
exécute toujours toute la pile pam, même si l'utilisateur n'existe pas, est suspendu ou verrouillé pour éliminer les attaques utilisant des canaux latéraux (identification des utilisateurs existants, par exemple). C'est le problème que vous semblez frapper. Cela peut fonctionner, mais vous ne pouvez pas le voir au-dessus de ssh
pour des raisons de sécurité.