Fail2ban na bramie VPN: co naprawia, a czego nie
Fail2ban blokuje źródła, które zawodzą w twoich logach, i to wszystko. Czy pomaga bramie VPN, zależy od powierzchni logowania i od tego, kto dzieli adres.
Każda wystawiona usługa dostaje tę samą radę: załóż na niej fail2ban. Dla bramy VPN ta rada nie jest ani błędna, ani wystarczająca, i właśnie traktowanie jej jako punktu w hartowaniu sprawia, że ludzie zostają z więzieniem (jail), które nie blokuje niczego użytecznego. Fail2ban czyta zapisy niepowodzeń, na które go wskazujesz, i prosi backend egzekwowania o zablokowanie pasujących źródeł. Cała jego wartość zależy od tego, która powierzchnia uwierzytelniania wytworzyła zapis, czy adres w nim to prawdziwy klient, i co dzieje się ze wszystkimi innymi za tym adresem.
Czym jest fail2ban mechanicznie
Filtr dopasowuje linie w logu, więzienie liczy dopasowania na źródło, a akcja stosuje blokadę przez backend zapory. Trzy ruchome części, a każda może być błędna niezależnie.
Żadna z tych trzech nie dotyka ścieżki uwierzytelniania: fail2ban reaguje na dowody po fakcie i nigdy sam nie weryfikuje poświadczeń. Więzienie może więc działać czysto, podczas gdy powierzchnia, którą nazywa, pozostaje dokładnie tak wystawiona jak wcześniej.
Odbiornik tunelu to nie formularz logowania
Odbiornik OpenVPN chroniony przez tls-auth lub tls-crypt odrzuca pakiety bez ochrony kanału sterującego, zanim zacznie się zwykłe przetwarzanie TLS. Skaner, który nigdy nie ma klucza, nie generuje niczego, co filtr mógłby policzyć. Uwierzytelnianie certyfikatem dodaje kolejną bramę, bo nie ma hasła do zgadnięcia. Projekt Fail2ban dokumentuje ogólny model oparty na logach, a ogólny filtr VPN nie zamienia nieuwierzytelnionego pakietu w znaczące zdarzenie niepowodzenia.
Jeśli brama akceptuje tylko certyfikaty, historia brute-force, przed którą się bronisz, może w ogóle nie istnieć na tym porcie.
Więc którą powierzchnię chronisz?
Ten sam host często wystawia trzy różne rzeczy: odbiornik tunelu, portal profili klienta lub samoobsługi oraz stronę administracyjną. Portal i strona administracyjna mają formularze hasła i tworzą linie logu, które filtr może policzyć. Tunel może tworzyć tylko błędy uzgadniania, które znaczą coś zupełnie innego. Dopasuj więzienie do powierzchni, a nie do nazwy produktu.
Jedno więzienie obserwujące zły log jest gorsze niż żadne, bo tworzy zaufanie bez pokrycia. Skieruj filtr logowania na błędy uzgadniania tunelu, a licznik zadziała na skanerach, które nigdy nie miały klucza, podczas gdy atak hasłem na portal pozostanie niepoliczony. Przeczytaj linię logu, którą filtr dopasowuje, zanim zaufasz liczbie więzienia.
Przypisanie źródła to słabe ogniwo
Blokada jest tylko tak dobra, jak adres, na który celuje. Gdy usługa stoi za lokalnym odwrotnym proxy, adres klienta w logu może być adresem proxy, a zablokowanie go usuwa wszystkich. Zaufanie do przekazanego nagłówka z niezaufanego źródła daje atakującemu możliwość blokowania dowolnych adresów. W UDP adresy źródłowe można fałszować, więc ich liczenie wymaga więcej ostrożności niż liczenie zakończonego logowania TCP.
Zapisz metodę przypisania źródła w README więzienia, bo przekazany nagłówek z niezaufanego przeskoku zamienia blokadę w broń.
Koszt uboczny to inni ludzie
Kilku pracowników za jednym biurowym NAT dzieli adres, więc jedno nieaktualne zapisane hasło może zablokować całe biuro, gdy próg zostanie przekroczony. Log pokazuje jedno źródło i jedno konto, które zawiodły, a nie awarię całego biura.
Krótkie blokady i umiarkowane progi to zmniejszają, a udokumentowana ścieżka odblokowania zmniejsza obciążenie wsparcia, gdy jednak do tego dojdzie. Adres to zgrubny sygnał, a nie tożsamość, a osoba otwierająca zgłoszenie opisze awarię, nie próg.
Kiedy to wdrożyć, a kiedy naprawić coś innego
Wdróż to, gdy na powierzchni, którą kontrolujesz, występuje realne, przypisywalne, powtarzające się niepowodzenie logowania online i gdy backend egzekwowania rzeczywiście pokrywa tę powierzchnię. Napraw coś innego, gdy problemem jest słaba polityka poświadczeń, strona zarządzania wystawiona do internetu albo konto, które loguje się skutecznie, bo zostało przejęte. Blokada nie naprawi żadnego z nich i nie wchłonie ruchu, który już nasycił twoje łącze nadrzędne. Ten ostatni problem należy wyżej, do kogoś, kto potrafi filtrować, zanim pakiety do ciebie dotrą.
Trzymaj każde więzienie związane z jedną powierzchnią, przeglądaj fałszywe alarmy i mierz unikniętą pracę uwierzytelniania, a nie liczbę zablokowanych adresów.