Comment verrouiller les utilisateurs après 5 tentatives de connexion infructueuses?

12

Comment verrouiller les utilisateurs après 5 tentatives de connexion infructueuses?

J'ai rassemblé quelques distributions / versions pour savoir comment le faire, mais je ne peux pas le tester.

RHEL4 : en ajoutant:

auth        required      /lib/security/$ISA/pam_tally.so no_magic_root
account     required      /lib/security/$ISA/pam_tally.so deny=5 reset no_magic_root

à:

/etc/pam.d/system-auth
/etc/pam.d/login
/etc/pam.d/sshd

RHEL4 : ???

SLES9 : en ajoutant:

auth required pam_tally.so no_magic_root
account required pam_tally.so deny=5 reset no_magic_root

à:

/etc/pam.d/login
/etc/pam.d/sshd

SLES11 ou SLES10 : en ajoutant:

auth required pam_tally.so deny=5 onerr=fail per_user no_lock_time

à:

/etc/pam.d/common-auth

ET en ajoutant:

account required pam_tally.so

à:

/etc/pam.d/common-account

QUESTION : Quelqu'un peut-il confirmer qu'il s'agit du bon / bon moyen de verrouiller les utilisateurs après 5 tentatives de connexion infructueuses? OU COMMENT FAIRE?

ps:

/sbin/pam_tally --user USERNAME --reset

est une chose utile à faire avant de faire cela? Puis-je verrouiller l'utilisateur root avec ces derniers? L'édition de PAM est une chose très sensible, car les gens pourraient se verrouiller du serveur (je veux dire par exemple: l'utilisateur root). Des indices lorsque vous faites cela?

gasko peter
la source
le module tally est le moyen de le faire, mais je recommanderais pam_tally2 car l'original est assez cassé et non intuitif. De plus, root peut être verrouillé de cette manière, mais vous devez l'activer viano_magic_root
Bratchley
BTW, je ne recommanderais pas de verrouiller le compte root, c'est votre trappe d'échappement en cas de problème (comme par exemple avec le verrouillage du compte) et les attaquants ne devraient de toute façon pas avoir de vecteurs directs dessus.
Bratchley
SLES10 a-t-il également besoin de no_magic_root?
gasko peter
Toutes les distributions GNU / Linux sont basées sur le même ensemble de base de projets en amont, donc à moins que Novell ne fasse un effort pour changer sa version du module pam_tally d'une manière qui dérouterait les gens, cela devrait être le même sur SuSE que sur d'autres distributions.
Bratchley
1
Êtes-vous sûr que c'est une bonne idée? De cette façon, chaque utilisateur peut facilement empêcher tout autre utilisateur de se connecter. L'utilisation d'un délai élevé est plus pratique pour l'OMI, mais décidez vous-même.
Marco

Réponses:

17

Vous voudrez peut-être jeter un œil à fail2ban. Il peut être configuré pour verrouiller un compte après un nombre défini de tentatives infructueuses, puis se déverrouiller après une période définie.

http://www.fail2ban.org/wiki/index.php/Downloads

Si vous êtes vraiment sérieux au sujet de l'utilisation pam_tally, vous voudrez probablement l'utiliser à la pam_tally2place. Doit être installé avec tout package PAM actuel. Vous pouvez faire un homme pam_tally2 pour voir comment l'utiliser.

Voici un exemple pour vous aider à démarrer. Ajoutez ce qui suit au début de la section d' authentification dans le fichier pam /etc/pam.d/password-auth:

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200

Dans le même fichier, ajoutez ceci à la section compte:

account     required      pam_tally2.so

Les paramètres ci-dessus sont les suivants:

  • file=/var/log/tallylog - Le fichier journal par défaut est utilisé pour conserver le nombre de connexions.
  • deny=3 - Refuser l'accès après 3 tentatives et verrouiller l'utilisateur.
  • even_deny_root - La politique s'applique également à l'utilisateur root.
  • unlock_time=1200 - 20 min. (60 sec. * 20 min. = 1200 sec.)

Si vous ne voulez pas verrouiller root, remplacez even_deny_root par magic_root .

Il est douteux que vous souhaitiez verrouiller le compte root. Vous voudrez peut-être faire quelque chose comme ceci à la place, où le compte root peut être verrouillé, mais uniquement pour une durée plus courte que les autres comptes:

auth        required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200 root_unlock_time=60

Cela ne bloquera le compte root que pendant une minute, tout le monde les 1200 secondes normales.

Un exemple de fichier journal se présenterait comme suit:

$ ssh me@somemachine
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Account locked due to 4 failed logins
Account locked due to 5 failed logins
Last login: Mon Jun 4 21:21:06 2013 from someothermachine

Vous pouvez vous renseigner sur les comptes verrouillés en utilisant la commande pam_tally2:

$ pam_tally2 --user=me
Login           Failures  Latest    failure     From
me                   5    06/04/13  21:21:06    someothermachine

Vous pouvez déverrouiller la restriction comme suit:

pam_tally2 --user=me --reset
Login           Failures  Latest    failure     From
me                  5     06/04/13  21:21:06    someothermachine

Maintenant, le compte apparaît dans pam_tally2 comme ceci:

$ pam_tally2 --user=me
Login           Failures   Latest   failure     From
me                 0

Les références

slm
la source
2

pam_tally2m'a d'abord confondu, mais je l'ai compris après avoir suivi man pam_tally2-

  EXAMPLES
   Add the following line to /etc/pam.d/login to lock the account after 4 failed logins.
   Root account will be locked as well. The accounts will be automatically unlocked after
   20 minutes. The module does not have to be called in the account phase because the
   login calls pam_setcred(3) correctly.

   auth     required       pam_securetty.so
   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200
   auth     required       pam_env.so
   auth     required       pam_unix.so

la formulation ci-dessus est un peu déroutante, car vous n'ajoutez en fait que la pam_tally2.soligne.

vous pouvez donc soit l'éditer /etc/pam.d/loginet l'ajouter sous toutes les autres authlignes:

   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200

ou si vous en avez, /etc/pam.d/system-authvous pouvez l'ajouter ici.

aucun redémarrage ou rechargement d'un service n'est requis - il devient immédiatement actif pour les nouvelles connexions locales.

Remarque: si vous souhaitez vous inscrire pam_tally2à sshdou à d'autres services à distance, vous devrez également ajouter la ligne à /etc/pam.d/sshdet / ou/etc/pam.d/password-auth


pour vérifier que cela fonctionne, faites une tentative de connexion échouée avec un utilisateur valide, puis exécutez pam_tally2

par exemple, pour un utilisateur nommé jacobrun:

  $ sudo pam_tally2 -u jacob

et il produira quelque chose comme:

  Login           Failures Latest   failure     From
  jacob           1        01/01/01 11:00:00    tty1

si trop de tentatives de connexion échouent et que le compte est verrouillé, vous pouvez déverrouiller manuellement le compte:

  $ sudo pam_tally2 -u jacob --reset
infinite-etcetera
la source