Jak zablokować użytkowników po 5 nieudanych próbach logowania?

12

Jak zablokować użytkowników po 5 nieudanych próbach logowania?

Zebrałem kilka dystrybucji / wersji, jak to zrobić, ale nie mogę tego przetestować.

RHEL4 : dodając:

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

do:

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

RHEL4 : ???

SLES9 : dodając:

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

do:

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

SLES11 lub SLES10 : dodając:

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

do:

/etc/pam.d/common-auth

I dodając:

account required pam_tally.so

do:

/etc/pam.d/common-account

PYTANIE : Czy ktoś może potwierdzić, że jest to dobry / dobry sposób na zablokowanie użytkowników po 5 nieudanych próbach logowania? LUB JAK TO ZROBIĆ?

ps:

/sbin/pam_tally --user USERNAME --reset

czy warto to zrobić przed zrobieniem tego? Czy mogę zablokować roota za pomocą tych? Edycja PAM jest bardzo delikatną rzeczą, ponieważ Ludzie mogą się zablokować przed serwerem (mam na myśli np .: użytkownika root). Czy masz jakieś wskazówki?

Gasko Peter
źródło
sposobem na to jest moduł Tally, ale polecam pam_tally2, ponieważ oryginalny jest dość zepsuty i nieintuicyjny. Również root jest otwarty na zablokowanie w taki sposób, ale musisz go włączyć przezno_magic_root
Bratchley,
BTW, nie zalecałbym żadnego blokowania konta root, to jest twój właz ewakuacyjny, jeśli coś pójdzie nie tak (na przykład przy blokowaniu konta), a napastnicy i tak nie powinni mieć żadnych bezpośrednich wektorów.
Bratchley,
Czy SLES10 także potrzebuje no_magic_root?
gasko peter
Wszystkie dystrybucje GNU / Linux oparte są na tym samym podstawowym zestawie projektów nadrzędnych, więc jeśli Novell nie spróbuje zmienić swojej wersji modułu pam_tally w sposób, który wprowadzałby w błąd ludzi, powinien być taki sam na SuSE jak na innych dystrybucjach.
Bratchley,
1
Czy jesteś pewien, że to dobry pomysł? W ten sposób każdy użytkownik może łatwo uniemożliwić zalogowanie się każdemu innemu. Korzystanie z dużego opóźnienia jest bardziej praktyczne, ale zdecyduj sam.
Marco

Odpowiedzi:

17

Możesz rzucić okiem na fail2ban. Można go skonfigurować tak, aby blokował konto po określonej liczbie nieudanych prób, a następnie odblokowywał po określonym czasie.

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

Jeśli naprawdę poważnie podchodzisz do korzystania pam_tally, prawdopodobnie chcesz go użyć pam_tally2. Powinny być instalowane z każdym bieżącym pakietem PAM. Możesz zrobić mężczyznę pam_tally2, aby zobaczyć, jak go używać.

Oto przykład na początek. Dodaj następujący tekst na początku sekcji uwierzytelniania w pliku pam /etc/pam.d/password-auth:

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

W tym samym pliku dodaj to do sekcji konta:

account     required      pam_tally2.so

Powyższe parametry są następujące:

  • file=/var/log/tallylog - Domyślny plik dziennika służy do przechowywania danych logowania.
  • deny=3 - Odmów dostępu po 3 próbach i zablokuj użytkownika.
  • even_deny_root - Polityka dotyczy również użytkownika root.
  • unlock_time=1200 - 20 min. (60 sek. * 20 min. = 1200 sek.)

Jeśli nie chcesz blokować rootowania, zmień even_deny_root na magic_root .

To jest wątpliwe, jeśli chcesz zablokować konto root. Możesz zamiast tego zrobić coś takiego, w którym konto root może zostać zablokowane, ale tylko na krótszy czas niż inne konta:

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

Spowoduje to zablokowanie konta root tylko na minutę, wszyscy pozostali będą normalnie 1200 sekund.

Przykładowy plik dziennika wyglądałby następująco:

$ 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

Możesz zapytać o zablokowane konta za pomocą polecenia pam_tally2:

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

Możesz odblokować ograniczenie w następujący sposób:

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

Teraz konto pojawia się w pam_tally2 w następujący sposób:

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

Bibliografia

slm
źródło
2

pam_tally2początkowo mnie zdezorientowałem, ale wymyśliłem to po następujących 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

powyższe sformułowanie jest nieco mylące, ponieważ w rzeczywistości dodajesz tylko pam_tally2.sowiersz.

dzięki czemu możesz go edytować /etc/pam.d/logini dodać poniżej wszystkich innych authwierszy:

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

lub jeśli masz /etc/pam.d/system-auth, możesz go tam dodać.

nie jest wymagane ponowne uruchomienie ani przeładowanie żadnej usługi - staje się ona natychmiast aktywna dla nowych lokalnych loginów.

Uwaga: jeśli chcesz pam_tally2również złożyć wniosek o sshdinne usługi zdalne, musisz również dodać linię do /etc/pam.d/sshdi / lub/etc/pam.d/password-auth


aby sprawdzić, czy działa, wykonaj nieudaną próbę logowania z prawidłowym użytkownikiem, a następnie uruchom pam_tally2

na przykład dla użytkownika o nazwie jacobrun:

  $ sudo pam_tally2 -u jacob

i wyświetli coś takiego:

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

jeśli zbyt wiele prób logowania się nie powiedzie, a konto zostanie zablokowane, możesz ręcznie odblokować konto:

  $ sudo pam_tally2 -u jacob --reset
infinite-etcetera
źródło