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.