web-dev-qa-db-fra.com

pam_tally2 ne compte pas échoue sur ssh

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?

5
Sergiy Kolodyazhnyy

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 .

  1. Vous devrez changer le /etc/ssh/sshd_config en ajoutant la ligne

    MaxAuthTries 1
    
  2. 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    
      
  3. Vous pouvez vérifier les tentatives effectuées sur le fichier /var/log/syslog.

2
Miguel Garcia

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é.

1
Jakuje