Alert VPN wywołany nowym krajem wydaje się rozstrzygający, a zwykle nie jest. Uwierzytelnienie mówi, że próba została przyjęta; sesja mówi, które połączenie ją niosło; zapisy zasobów mówią, co wydarzyło się w tym połączeniu. Każdy odpowiada na inne pytanie. Reguła, która scala wszystkie trzy, produkuje trzydzieści zgłoszeń w poniedziałek i pomija prawdziwy przypadek w piątek.

Zagraniczny adres to pytanie, nie odpowiedź

Podróże, operatorzy komórkowi wychodzący w innym kraju, firmowe proxy internetowe i ponownie przydzielona pula carrier-grade NAT przesuwają pozorne źródło, nie przesuwając napastnika. Zapis logowania odzwierciedla, skąd połączenie weszło do sieci, a nie kto trzymał urządzenie.

Odwrotna porażka jest gorsza, bo jest cicha. Skradzione hasło użyte z miasta samego użytkownika daje logowanie zgodne z każdym wcześniejszym przy sprawdzaniu geografii.

Traktowanie geografii jako wyroku ma mierzalny koszt. Podróżujące laptopy generują stały strumień przeglądów, przeglądający uczą się zamykać je bez czytania, a nawyk trwa, dopóki prawdziwy przypadek nie trafi do tej samej kolejki.

Trzy typy zapisów odpowiadają na trzy różne pytania

Zacznij od tego, co wdrożone produkty naprawdę emitują, a nie od tego, co sugeruje broszura produktu. Decyzja uwierzytelnienia wskazuje twierdzoną tożsamość, metodę i wynik. Cykl życia sesji wskazuje połączenie, bramę i przypisany adres, od początku do zatrzymania.

RecordQuestion it answersWhat it cannot prove
Authentication decisionWhich identity was accepted or rejected, by which method, at what timeThat the person operating the device was the account owner
Session lifecycleWhich connection, gateway and assigned address were active, and for how longWhat the session did with that access
Resource eventWhich read, write or denied operation a service observedWhich human behind the session triggered it
Policy changeWhether an administrator altered the rule that governs the accessWhether the change was reviewed or intended

Pusta komórka to luka w zbieraniu, nie uniewinnienie. Jeśli zdarzenia zasobów nigdy nie docierają, brak podejrzanego odczytu oznacza, że potok nie ma nic do zgłoszenia, a cichy pulpit opisuje potok, nie sieć. Zapisz, które zapisy wdrożenie rzeczywiście tworzy, zanim obiecasz regułę, która od nich zależy, i wskaż właściciela każdego brakującego strumienia.

Szczegóły księgowe to miejsce, w którym sesje stają się sprawdzalne. Księgowanie RADIUS opisane w RFC 2866 niesie aktualizacje rozpoczęcia, zatrzymania i pośrednie powiązane z identyfikatorem sesji, więc sesja z początkiem i bez zatrzymania to luka, którą można nazwać, a nie zagadka.

Łącz po sesji, nie po nazwie użytkownika

Jedno konto legalnie utrzymuje kilka sesji naraz: laptop, telefon, maszyna laboratoryjna zostawiona podłączona na noc. Połączenie każdego zdarzenia dla tej nazwy użytkownika scala trzy urządzenia w jedną historię, a potem czyta kombinację jako kompromitację. Przydzielone adresy też są recyklingowane, więc złączenie, które nadal pasuje do adresu po zakończeniu sesji, wciąga urządzenie z zeszłego miesiąca do dzisiejszego incydentu. Trzymaj klucz sesji obok adresu i ogranicz dopasowanie do okna czasowego, które sesja rzeczywiście obejmowała.

Tam, gdzie tłumaczenie usuwa oryginalne źródło, zanim usługa je zobaczy, użyj tożsamości, która przetrwa na tej granicy, na przykład podmiotu wzajemnego TLS lub twierdzenia jednokrotnego logowania. Wymyślanie mapowania jeden do jednego między adresem a osobą to ten sam błąd z dodatkowymi krokami.

Alert bez właściciela to pulpit

Każda reguła potrzebuje warunku, łagodnych wyjaśnień, które ją wywołują, dowodów do zebrania i osoby, która działa. Powtarzana odrzucona operacja administracyjna, wybuch nieudanych haseł i milczący kolektor to trzy różne incydenty z trzema różnymi zegarami.

Powiadomienie nie jest powstrzymaniem, a lista dystrybucyjna niczego nie ogranicza. Zmiana żywej sesji wymaga komponentu, który to potrafi, czy to bramy zrywającej połączenie, czy dostawcy tożsamości unieważniającego sesję. Przestarzałe strumienie i brakujące zapisy zatrzymania również należą do treści reguły, bo kolektor, który przez dobę nic nie wysłał, z pulpitu wygląda dokładnie jak cicha sieć. Różnica jest widoczna tylko w samym potoku.

Sprawdź ścieżkę zbierania, zanim zaufasz cichému tygodniowi

Udowodnij potok od początku do końca, zanim dostroisz choćby jedną regułę. Poniższe polecenia potwierdzają, że nasłuchy uwierzytelnienia i księgowania działają, że poświadczenie testowe jest odrzucane z właściwego powodu i że zdarzenia sesji wciąż nadchodzą:

ss -uanp | grep -E ':(1812|1813)\b'
radtest alice 'not-the-password' 127.0.0.1 0 testing123
journalctl -u openvpn-server@server --since '-30 min' | grep -c 'Peer Connection Initiated'
timedatectl | grep -E 'System clock|synchronized'

Access-Reject z testu dowodzi, że żądanie dotarło do serwera i że wspólny sekret się zgadzał, i to jest część, którą ludzie pomijają. Limit czasu wskazuje natomiast na sekret, nasłuch lub filtr przed nim, a każde powiadomienie poniżej jest nieweryfikowalne, dopóki to nie zostanie naprawione.

Stan zegara ma znaczenie, bo okna korelacji zakładają zgodność. Brama odchylona o kilka minut sprawia, że inaczej czyste złączenie sesji wygląda na niemożliwe, a przeglądający kompensują, rozszerzając okno, aż złączenie przestanie rozróżniać. Sprawdź odchylenie przed edycją reguły.

Następnie przepuść jedną regułę przez nieszkodliwy test: wygeneruj logowanie z nieoczekiwanego adresu, potwierdź, że alert się uruchamia, potwierdź, że reagujący może pobrać sesję i jej zdarzenia zasobów, i potwierdź, że zgłoszenie niesie identyfikator sesji. Reguła, która daje spójną historię, przechodzi. Reguła, która daje stos wierszy dziennika, wciąż jest pulpitem. Zapisz wynik przy regule, aby następny przegląd zaczynał się od dowodów, a nie od intuicji.

Powiązane artykuły