Question Verrouillage de compte avec pam_tally2 dans RHEL6


j'utilise pam_tally2 pour verrouiller les comptes après 3 connexions échouées par stratégie, l'utilisateur qui se connecte ne reçoit pas l'erreur indiquant l'action de pam_tally2. (Via SSH.)

Je m'attends à voir à la 4ème tentative:

Account locked due to 3 failed logins

Aucune combinaison de Champs obligatoires ou requis ou l'ordre dans le fichier semble aider. C'est sous Chapeau rouge 6et j'utilise /etc/pam.d/password-auth. Le lock-out fonctionne comme prévu mais l'utilisateur ne reçoit pas l'erreur décrite ci-dessus. Cela provoque beaucoup de confusion et de frustration car ils n'ont aucun moyen de savoir pourquoi l'authentification échoue quand ils sont sûrs d'utiliser le bon mot de passe.

La mise en œuvre suit les NSA Guide de sécurisation de la saturation de Red Hat Enterprise Linux 5. (p.45) Je crois comprendre que cette seule chose modifié dans PAM est que /etc/pam.d/sshd inclut maintenant /etc/pam.d/password-auth au lieu de system-auth.

Si votre stratégie de sécurité requiert le verrouillage de comptes après un certain nombre de tentatives de connexion incorrectes, implémentez l'utilisation de pam_tally2.so.

Pour appliquer le verrouillage du mot de passe, ajoutez ce qui suit dans /etc/pam.d/system-auth. Tout d'abord, ajoutez en haut des lignes d'authentification:

auth required pam_tally2.so deny=5 onerr=fail unlock_time=900

Deuxièmement, ajoutez en haut des lignes du compte:

account required pam_tally2.so

MODIFIER:

Je reçois le message d'erreur en réinitialisant pam_tally2 lors d'une des tentatives de connexion.

user@localhost's password: (bad password)
Permission denied, please try again.
user@localhost's password: (bad password)
Permission denied, please try again.

(réinitialise pam_tally2 depuis un autre shell)

user@localhost's password: (good password)
Account locked due to ...
Account locked due to ...
Last login: ...
[user@localhost ~]$

6
2017-11-09 20:15


origine




Réponses:


Tu as aussi besoin ChallengeResponseAuthentication yes dans /etc/ssh/sshd_config.

Pour afficher l'erreur, pam a besoin d'une fonction de conversation.

Cette option indique à ssh de fournir une fonction de conversation PAM plus complète, qui consiste notamment à fournir une sortie et à demander une entrée arbitraire (au lieu de simplement lui donner un mot de passe). sshd).

Modifier: Vous voudrez PasswordAuthentication no pour vous assurer que la saisie du mot de passe passe toujours par cette conversation PAM.


6
2017-11-13 02:28



C'est proche! Mais, aucune idée pourquoi il indique "Compte verrouillé en raison de 4 connexions échouées" après seulement 3? - Aaron Copley
Vous n'avez probablement pas désactivé PasswordAuthentication, n'est-ce pas? Il aurait ensuite passé deux fois dans la pile PAM. Edit: sinon, j'aimerais passer en revue votre /etc/pam.d. - Pierre Carrier
PasswordAuthentication est défini sur no. (Le service a redémarré.) Je ne pense pas que cela se répète deux fois. Ce que vous décrivez devrait être incrémenté de 6 à 6, ce qui semble tout simplement être incrémenté avant l'authentification. La ligne d'authentification pour pam_tally2 devrait aller après pam_unix maintenant pour éviter cela? - Aaron Copley
De plus, les seules modifications apportées à une configuration sshd par défaut sont celles que vous avez fournies. - Aaron Copley
Je pense que sshd tente d’abord de se connecter avec un mot de passe vide, peu importe la situation, afin que le client ne soit pas exposé à une invite de mot de passe si le compte n’a pas de mot de passe. Cela expliquerait une tentative infructueuse. openssh.org/faq.html#3.1 - 200_success


Malheureusement, ce que vous recherchez n'est pas disponible. OpenSSH n'autorisera ou ne refusera que l'authentification. Cela ne permettra pas à un attaquant ou à un utilisateur maladroit de connaître d'autres informations. Il s'agit d'un comportement standard. PAM n'a aucune connaissance de la communication réseau utilisée par OpenSSH ni d'aucun autre comportement spécifique à l'application utilisée.. C'est juste un tas de modules pour l'authentification avec.

De plus, pam_tally2 ne fournit aucune sorte de directive de message d'erreur définie par l'utilisateur. Vous ne pouvez donc vous fier qu'à ce qu'il y a dans votre journal système.

Une méthode que vous pouvez étudier est la modification de la base de code OpenSSH (pas trop difficile), mais cela sort du cadre de cette question.


0
2017-11-13 01:13



Je ne demande pas une erreur définie par l'utilisateur, j'essaie plutôt de faire en sorte que l'erreur intégrée fonctionne comme prévu. (Voir mon édition où cela est possible - ne fonctionne tout simplement pas comme souhaité.) OpenSSH n'a rien à voir avec l'autorisation ou le refus de l'authentification, qui est transmise à PAM. Pourriez-vous soutenir votre affirmation selon laquelle il y a un risque à dire à un attaquant pourquoi il ne pourra jamais se connecter au compte? Je serais intéressé à lire plus loin. Enfin, pour une prime de +250, je dirais que rien n’est en dehors du champ de la question. :) - Aaron Copley
Oui, vous avez raison, OpenSSH ne transmet que l'authentification à PAM. Je suis désolé si je ne l'ai pas bien communiqué. Il semble que le message d'erreur "Compte verrouillé en raison de 4 connexions échouées" s'affiche après la réinitialisation du décompte de l'utilisateur. Donc, je ne suis pas sûr de ce que tu recherches d'autre. En ce qui concerne l’exemple de risque allégué que j’ai fait: supposons que nous ayons refusé = 3 avec pam_tally2 et qu’un attaquant tente plusieurs combinaisons de nom d’utilisateur et de mot de passe. S'ils savent que le compte X est maintenant verrouillé, ils peuvent confirmer son existence. Cependant, cela ne pose pas de problème si nous signalons cela également pour des comptes inexistants. - atx
Ok, je vois où certains environnements peuvent ne pas vouloir divulguer les noms d’utilisateurs de l’extérieur de cette façon. Dans mon cas, ce n'est pas un problème car il n'y a pas d'accès externe. - Aaron Copley
Il convient également de noter les éléments suivants: les attaquants internes, savoir que vous verrouillez les comptes permet de forcer moins le jeu et d'essayer d'autres vecteurs d'attaque, etc. Cependant, dans votre cas, cela semble moins pertinent. Je pense que ce que tu veux est déjà résolu? Vous pouvez obtenir le message d'erreur du compte verrouillé à afficher, non? - atx
Je ne vois le message d'erreur que dans des circonstances spécifiques. Si je réinitialise faillog pendant processus d'authentification d'un compte verrouillé. Après la première (ou deuxième) tentative infructueuse, je réinitialise le fichier faillog et l'utilisateur entre le bon mot de passe. L'authentification réussit et les messages précédemment supprimés s'affichent. Il doit être affiché à l'utilisateur lorsque l'authentification a échoué pour cette raison. - Aaron Copley