Blokada konta po kolejnej nieudanej próbie logowania.
PAM FAILLOCK (audit: printk limit exceeded)

W wcześniejszych samouczkach http://www.bit.sos.pl/blog/problematyczny-blog-1/post/skrypt-pod-shell-a-wyuskujacy-numery-ip-z-pliku-24 oraz http://www.bit.sos.pl/blog/problematyczny-blog-1/post/skrypt-informujacy-o-zalogowaniu-sie-do-powoki-protokoem-ssh-19 pokazałem jak zablokować dostęp do usług mniej lub bardziej automatycznie dla pakietów z określonym nagłówkiem numeru IP. Teraz chcę przedstawić kolejną linię obrony administratora serwera RED-HAT Enterprise Linux, CentOS, Fedory opierającą się tym razem o PLUGGABLE AUTHENTITICATION MODULES (dynamiczny mechanizm implementacji uwierzytelnienia w aplikacji i usługach systemowych), PAM potrafi blokować konta przy kolejnych nieudanych próbach logowania do usługi SSH. Odpowiada za to jedna z jego bibliotek (pam_faillock.so), której pliki konfiguracyjne to:

  • /etc/pam.d/system-auth

  • /etc/pam.d/passwdord-auth

Zawierają sekcję auth typu:

auth required pam_faillock.so preauth silent deny=3 unlock_time=never even_deny_root fail_interval=3600

Najważniejsze z powyższych parametrów, które decydują o zasadach bezpieczeństwa konta to:

  • deny - ilość nieudanych prób logowania w danej jednostce czasu po jakiej konto zostanie zablokowane

  • fail_interval - okres czasu w którym ilość błędnych logowań jest zliczana Po tym czasie powyższy licznik zostanie wyzerowany.

  • unlock_time - czas po którym konto zostanie odblokowane automatycznie (w sekundach) lub nie (never)

  • even_deny_root - konto root również podlega blokadzie

  • root_unlock_time - czas po którym konto root-a jest odblokowywane (w przypadku braku tej opcji brany jest czas z opcji unlock_time)

Przy wszelkich modyfikacjach musimy pamiętać by korygować oba pliki oraz kolejność zawartych w nich wierszy ma na tyle duże znaczenie, że istnieje możliwość zablokowania nawet sobie samemu dostępu do systemu! Zastosowanie zmian uzyskujemy ponownym uruchomieniem demona ssh:

systemctr restart sshd

Wyświetlenie stanu kont:

faillock

Odblokowanie  danego użytkownika:

faillock --user [użytkownik] --reset

Opracowanie własne na podstawie https://linux.die.net/man/8/pam_faillock.


Skrypt pod SHELL-a wyłuskujący numery IP z pliku
Ręczne wsparcie automatycznych zabezpieczeń systemu za pomocą BAN-a.