Zablokowanie adresu i zablokowanie konta to dwa różne mechanizmy i zawodzą w przeciwnych kierunkach. Zakaz adresu zatrzymuje jedno źródło, a konto docelowe pozostaje osiągalne z innego miejsca; blokada konta zatrzymuje tę tożsamość wszędzie, także na laptopie samego użytkownika.

W VPN, który deleguje uwierzytelnianie do PAM, licznikiem jest to, do czego dociera stos PAM, a nie to, co zapisał nasłuch.

Dwa liczniki, dwie różne ofiary

Ogranicznik szybkości patrzy na źródło i pyta, ile prób przyszło z niego ostatnio. Blokada patrzy na tożsamość i pyta, ile niepowodzeń zebrało to konto. Pierwszy chroni dostępność, drugi poświadczenia; żaden nie zastępuje drugiego.

Dlatego zdanie blokujemy IP po pięciu niepowodzeniach nie jest odpowiedzią na raport o wypełnianiu poświadczeń. Napastnik zmienia źródła, każde dostaje mało prób, a konto nigdy nie jest liczone. Odwrotnie, blokada bez kontroli źródeł pozwala napastnikowi trzymać konto zablokowane bez końca, celowo się myląc.

Oba mechanizmy mają też inne historie odzyskiwania. Zakaz adresu wygasa według zegara, o którym nikt nie musi myśleć; blokada konta może wymagać administratora, udokumentowanego okresu oczekiwania lub resetu samoobsługowego.

Znajdź magazyn, który już ma licznik

Zanim cokolwiek dodasz, ustal, czy magazyn niepowodzeń już istnieje. Lokalne konto Linux, usługa katalogowa i zewnętrzny dostawca tożsamości prowadzą własne liczniki, a moduł PAM przed nimi tworzy drugi, zamiast rozszerzać pierwszy.

grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20

Przeczytaj plik usługi, który VPN naprawdę wskazuje, i prześledź jego linie dołączania. W wielu dystrybucjach usługa VPN dołącza wspólny plik, co oznacza, że licznik, który dostrajasz, dotyczy także SSH i logowań lokalnych.

Jeśli katalog już wymusza blokadę, użyteczne pytanie brzmi, jak rozmowa PAM dochodzi do tej decyzji i jak VPN to raportuje. Lokalny licznik dodany na wierzchu nie staje się licznikiem katalogu, a obie polityki mogą się nie zgadzać co do momentu odblokowania konta.

pam_faillock ma trzy pozycje wywołania, nie jedną

Moduł rozdziela trzy operacje, które jedna skopiowana linia zwykle rozmywa: sprawdzenie, czy konto jest już zablokowane, zapisanie niepowodzenia i wyczyszczenie historii po sukcesie.

Tu właśnie migracja ze starszego modułu liczenia zwykle się myli. Skopiowanie linii z działającego przykładu pam_tally2 do stosu pam_faillock nie jest zmianą nazwy; udokumentowana konfiguracja jest inna, a wywołanie w złym miejscu może zapisywać niepowodzenia, nigdy ich nie sprawdzając.

faillock --user alice
faillock --user alice --reset

Narzędzie inspekcyjne to najszybszy sposób, by zobaczyć, czy licznik jest prawdziwy: pokazuje zapisane niepowodzenia konta i potrafi je wyczyścić. Jeśli kontrolowane niepowodzenie nie zmienia tego wyniku, pozycja wywołania jest zła.

Własna nazwa usługi nie jest izolacją

Własny plik usługi PAM dla VPN czyni zamierzoną politykę widoczną, ale nie ogranicza efektu. Każde dołączenie wspólnego pliku wnosi to, co ten plik robi, łącznie z licznikami dla całego systemu.

Zdecyduj wyraźnie, czy blokada ma obejmować tylko dostęp przez VPN, czy każdą usługę uwierzytelniającą to samo konto. Obie odpowiedzi są obronne; błędem jest sądzić, że wybrano jedną, podczas gdy stos realizuje drugą.

Potem policz koszt. Blokadę może wywołać napastnik, a cierpi właściciel konta. Próg, okres oczekiwania i administracyjna droga odzyskiwania są częścią polityki, a odzyskiwanie nie może zależeć od rekonfiguracji VPN w trakcie incydentu.

Przyjmij sekwencję, nie jedno odrzucenie

Testuj z wyznaczonymi tożsamościami według zatwierdzonego planu i testuj łańcuch, a nie jedno zdarzenie: prawidłowe konto się uwierzytelnia, celowo błędne hasło przesuwa licznik, skonfigurowana blokada wchodzi w życie, a udokumentowane odzyskiwanie przywraca dostęp.

faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'

Obserwuj zachowanie przy sukcesie równie uważnie jak przy niepowodzeniu. Jeśli udane logowanie nie czyści historii, konto zablokuje się po powolnym nagromadzeniu zwykłych błędów. Jeśli czyści wszystko z każdej usługi, licznik jest słabszy, niż twierdzi polityka.

Na koniec zatrzymaj klientów bez nadzoru, zanim ogłosisz zwycięstwo. Zapisane poświadczenia, które ponawiają w tle, odtworzą niepowodzenia kilka minut po odzyskaniu i znów zablokują konto. Ograniczanie szybkości według źródła może zostać jako dodatkowa kontrola, ale nie jest polityką konta.

Powiązane artykuły