Wie sperre ich Benutzer nach 5 erfolglosen Anmeldeversuchen?

12

Wie sperre ich Benutzer nach 5 erfolglosen Anmeldeversuchen?

Ich habe ein paar Distributionen / Versionen zusammengestellt, aber ich kann es nicht testen.

RHEL4 : durch Hinzufügen von:

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

zu:

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

RHEL4 : ???

SLES9 : durch Hinzufügen von:

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

zu:

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

SLES11 oder SLES10 : durch Hinzufügen von:

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

zu:

/etc/pam.d/common-auth

UND durch Hinzufügen der:

account required pam_tally.so

zu:

/etc/pam.d/common-account

FRAGE : Kann jemand bitte bestätigen, dass dies der funktionierende / gute Weg ist, Benutzer nach 5 erfolglosen Anmeldeversuchen zu sperren? ODER WIE IST DAS ZU TUN?

ps:

/sbin/pam_tally --user USERNAME --reset

ist eine nützliche Sache, bevor Sie dies tun? Kann ich den Root-Benutzer damit sperren? Das Bearbeiten von PAM ist eine sehr heikle Sache, da sich die Leute vom Server aussperren könnten (ich meine zB den Root-Benutzer). Irgendwelche Hinweise dabei?

gasko peter
quelle
Das Tally-Modul ist der richtige Weg, aber ich würde pam_tally2 empfehlen, da das Original ziemlich kaputt und nicht intuitiv ist. Auch root ist offen dafür, auf diese Weise gesperrt zu werden, aber Sie müssen es überno_magic_root
Bratchley
Übrigens würde ich nicht empfehlen, das Root-Konto zu sperren. Dies ist Ihre Notluke, sollte etwas schief gehen (wie zum Beispiel beim Sperren des Kontos) und Angreifer sollten sowieso keine direkten Vektoren darauf haben.
Bratchley
Benötigt SLES10 auch no_magic_root?
Gasko Peter
Alle GNU / Linux-Distributionen basieren auf denselben grundlegenden Upstream-Projekten. Sofern Novell nicht versucht hat, die Version des pam_tally-Moduls so zu ändern, dass die Benutzer verwirrt werden, sollte sie in SuSE dieselbe sein wie in anderen Distributionen.
Bratchley
1
Sind Sie sicher, dass dies eine gute Idee ist? Auf diese Weise kann jeder Benutzer leicht verhindern, dass sich ein anderer Benutzer anmeldet. Die Verwendung einer hohen Verzögerung ist IMO praktischer, aber entscheiden Sie selbst.
Marco

Antworten:

17

Vielleicht möchten Sie einen Blick auf fail2ban werfen. Es kann so konfiguriert werden, dass ein Konto nach einer festgelegten Anzahl fehlgeschlagener Versuche gesperrt und nach einem festgelegten Zeitraum entsperrt wird.

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

Wenn Sie es wirklich ernst meinen pam_tally, möchten Sie wahrscheinlich pam_tally2stattdessen verwenden. Sollte mit jedem aktuellen PAM-Paket installiert werden. Sie können eine tun Mann pam_tally2 machen, um zu sehen, wie man es benutzt.

Hier ist ein Beispiel, um Ihnen den Einstieg zu erleichtern. Fügen Sie am Anfang des Auth- Abschnitts in der Pam-Datei Folgendes hinzu /etc/pam.d/password-auth:

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

Fügen Sie dies in derselben Datei zum Kontoabschnitt hinzu:

account     required      pam_tally2.so

Die obigen Parameter sind wie folgt:

  • file=/var/log/tallylog - Die Standardprotokolldatei wird verwendet, um die Anzahl der Anmeldungen aufrechtzuerhalten.
  • deny=3 - Verweigern Sie den Zugriff nach 3 Versuchen und sperren Sie den Benutzer.
  • even_deny_root - Die Richtlinie gilt auch für Root-Benutzer.
  • unlock_time=1200 - 20 Minuten (60 Sekunden * 20 Minuten = 1200 Sekunden)

Wenn Sie root nicht sperren möchten, ändern Sie even_deny_root in magic_root .

Es ist fraglich, ob Sie das Root-Konto sperren möchten. Möglicherweise möchten Sie stattdessen so etwas tun, bei dem das Root-Konto gesperrt werden kann, jedoch nur für eine kürzere Dauer als bei anderen Konten:

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

Dadurch wird das Root-Konto nur für eine Minute gesperrt, für alle anderen die normalen 1200 Sekunden.

Eine Beispielprotokolldatei würde wie folgt aussehen:

$ 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

Mit dem Befehl pam_tally2 können Sie nach gesperrten Konten fragen:

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

Sie können die Einschränkung folgendermaßen entsperren:

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

Jetzt wird der Account in pam_tally2 wie folgt angezeigt:

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

Verweise

slm
quelle
2

pam_tally2anfangs verwirrte mich, aber ich fand es heraus, nachdem ich gefolgt war 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

Der obige Wortlaut ist etwas verwirrend, da Sie eigentlich nur die pam_tally2.soZeile hinzufügen .

Sie können es also entweder bearbeiten /etc/pam.d/loginund unter allen anderen authZeilen hinzufügen :

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

oder wenn du hast /etc/pam.d/system-auth , können Sie es dort hinzufügen.

Es ist kein Neustart oder Neuladen eines Dienstes erforderlich - er wird sofort für neue lokale Anmeldungen aktiv.

Hinweis: Wenn Sie pam_tally2sich auch für sshdandere Remote-Dienste bewerben möchten, müssen Sie die Leitung auch zu /etc/pam.d/sshdund / oder hinzufügen/etc/pam.d/password-auth


Um zu überprüfen, ob es funktioniert, führen Sie einen fehlgeschlagenen Anmeldeversuch mit einem gültigen Benutzer durch und führen Sie ihn aus pam_tally2

Beispiel: Für einen Benutzer mit dem Namen jacobrun:

  $ sudo pam_tally2 -u jacob

und es wird etwas ausgeben wie:

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

Wenn zu viele Anmeldeversuche fehlschlagen und das Konto gesperrt ist, können Sie das Konto manuell entsperren:

  $ sudo pam_tally2 -u jacob --reset
unendlich-etcetera
quelle