Red Hat 6.x / CentOS 6.x
Moduł pam_tally2 to swoisty licznik nieudanych logowań użytkowników do systemu. Działanie to pozwala nam wykrywać próby złamania hasła usera i włamania na serwer. Poza monitorowaniem prób pam_tally2 pozwala nam również proaktywnie na nie odpowiadać np. poprzez blokowanie konta użytkownika dla którego wykryto zbyt dużą ilość nieudanych prób autoryzacji.Uruchomienie procesu monitorowania logowań
Jak w przypadku wszystkich modułów pam, uruchomienie i tego wymagać będzie dodania go do odpowiedniej sekcji konfiguracji. Jako, że moduł ma nadzorować próby autoryzacji (typ auth) będzie on koniecznym (required) elementem konfiguracji dla wszelkich aplikacji dokonujących autoryzacji użytkownika w systemie, więc dodany musi zostać w plikach /etc/pam.d/system-auth oraz /etc/pam.d/password-auth. Słowem wyjaśnienia password-auth odpowiada za procesy autoryzacyjne przy zdalnym dostępie do systemu (np. ssh), system-auth natomiast za dostęp bezpośredni (np. konsola serwera).Moduł powinien być uruchamiany przed zautoryzowaniem użytkownika, dlatego wpis należy umieścić przed modułem pam_unix, który jako sufficient po zautoryzowaniu użytkownika nie dopuści do weryfikacji modułów występujących po nim. Dodana linia wyglądać będzie następująco:
auth required pam_env.so
auth required pam_tally2.so [opcje]
auth sufficient pam_unix.so nullok try_first_pass
auth required pam_tally2.so [opcje]
auth sufficient pam_unix.so nullok try_first_pass
Opcje modułu
Pełną listę opcji znajdziemy oczywiście w manualu modułu. Najprzydatniejsze w moim wypadku okazały się:* deny=N, która zablokuje dostęp do konta po N nieudanych próbach logowania. Jeśli w konfiguracji nie zdefiniowaliśmy unlock_time po zablokowaniu konto będzie musiało być odblokowane przez administratora systemu ręcznie.
* lock_time=N - definiuje czas (w sekundach) na jaki dostęp dla konta zostanie zablokowany po nieudanej próbie autoryzacji
* unlock_time=N to czas określony w sekundach, na jaki konto zostanie zablokowane po blokadzie określonej przez deny nieudanych prób logowania.
* even_deny_root spowoduje, że konto roota również będzie blokowane, tak jak zwykłe konto (domyślnie nie jest). Parametr ten używany jest najczęściej z root_unlock_time=N, który definiuje czas po jakim dostęp zostanie odblokowany.
* silent zagwarantuje brak wyświetlania informacji o logowaniu userowi
* file=/sciezka/do/pliku pozwoli nam zdefiniować inny od standardowego var/log/tallylog plik przechowywania informacji o logowaniach.
Dla przykładu zdefiniujmy sobie taką regułę:
auth required pam_tally2.so deny=3 lock_time=10 unlock_time=60
Jaki będzie skutek? Moduł zablokuje dostęp do konta na 10 sekund po każdej nieudanej próbie logowania (podaniu błędnego hasła). Po trzech nieudanych próbach (w tym wypadku nieudane próby liczone są co 10 sekund) na 60 sekund zostanie zablokowana możliwość zalogowania się na konto.
System nie informuje użytkownika o powodzie nieudanego logowania i każda próba po blokadzie czasowej konta wygląda, jakby wprowadzane hasło było niepoprawne.
Statystyki nieudanych logowań
Moduł posiada niewielki interfejs pozwalający administratorowi na weryfikację ilości nieudanych logowań oraz czasu i adresu źródłowego wystąpienia ostatniego z nich.
[root@ipaclient1 pam.d]# pam_tally2
Login Failures Latest failure From
root 1 10/02/15 17:42:15 server.ipa.local
test 8 10/02/15 17:38:41 server.ipa.local
Login Failures Latest failure From
root 1 10/02/15 17:42:15 server.ipa.local
test 8 10/02/15 17:38:41 server.ipa.local
Jak widać system odnotował 8 nieudanych prób logowania na konto użytkownika test, z czego ostatnie o 17:38:41 z maszyny server.ipa.local, oraz jedną nieudaną próbę logowania na root-a... Wyświetlane wyniki możemy ograniczyć do jednego tylko usera poprzez parametr -u username.
Dzięki interfejsowi możemy dodatkowo zrealizować jeszcze jedno zadanie, mianowicie zresetować licznik nieudanych logowań dla użytkownika. Może to być przydatne w sytuacji, kiedy sami zapomnieliśmy hasła, a nie chcemy zaciemniać statystyk nieautoryzowanych prób logowania poprzez własne nieudane próby.
[root@ipaclient1 pam.d]# pam_tally2 -u test
Login Failures Latest failure From
test 8 10/02/15 17:38:41 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2 --reset=4 -u test
Login Failures Latest failure From
test 8 10/02/15 17:38:41 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2 -u test
Login Failures Latest failure From
test 4 10/02/15 17:38:41 server.ipa.local
Login Failures Latest failure From
test 8 10/02/15 17:38:41 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2 --reset=4 -u test
Login Failures Latest failure From
test 8 10/02/15 17:38:41 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2 -u test
Login Failures Latest failure From
test 4 10/02/15 17:38:41 server.ipa.local
Możemy również użyć krótkiej opcji -r, która wyzeruje licznik nieudanych logowań, a w przypadku kiedy nie określimy użytkownika, dla którego licznik ma być zresetowany, uwzględnione zostaną wszystkie konta.
[root@ipaclient1 pam.d]# pam_tally2 -r
Login Failures Latest failure From
root 1 10/02/15 17:53:17 server.ipa.local
test 1 10/02/15 17:53:40 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2
Login Failures Latest failure From
root 1 10/02/15 17:53:17 server.ipa.local
test 1 10/02/15 17:53:40 server.ipa.local
[root@ipaclient1 pam.d]# pam_tally2
Jak widać podczas resetowania liczników pam_tally2 wyświetla ostatni status nieudanych logowań, a następnie je zeruje.
Brak komentarzy:
Prześlij komentarz