Suricata IDS/IPS na pfSense

Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał

Wykrywanie zagrożeń i zapobieganie im

Spis treści #

Wprowadzenie #

Aby zapewnić bezpieczeństwo w sieci, można wdrożyć system IDS lub IPS. Różnica tkwi w drugiej literze – D oznacza wykrywanie (detection), a P zapobieganie (prevention). Najpierw uruchamia się system w trybie IDS i dopiero potem konfiguruje go tak, by stał się systemem IPS. Włączenie Suricaty w trybie IPS od samego początku może wprowadzać zamieszanie. Warto najpierw zobaczyć, co dzieje się w sieci, aby mieć pewność, że nie wygeneruje się zbyt wielu fałszywie pozytywnych alertów i blokad.

Rys. Diagram ruchu

Dlaczego IDS/IPS? #

Możesz zapytać, po co mi system wykrywania lub zapobiegania włamaniom. To zasadne pytanie, bo możesz nie chcieć wiedzieć, co dzieje się w Twojej sieci albo jaki złośliwy ruch uderza w Twoje serwery. Ale jeśli zależy Ci na Twoich danych, to powinieneś mieć taki system. W niektórych scenariuszach może on też pomóc ograniczyć ruch złej jakości.

O samym pfSense #

Jestem wielkim fanem pfSense chyba od 2017 roku. Wcześniej używałem packet filter i szukałem interfejsu użytkownika. Na szczęście znalazłem pfSense, który spełnił moje wymagania. Domyślnie zawiera firewall i router, ale można go rozbudować o różne pakiety, takie jak HAProxy, OpenVPN czy IPsec.

Instalacja i konfiguracja Suricaty w trybie IDS #

Ten system IDS/IPS można oczywiście zainstalować jako samodzielny pakiet bez pfSense, ale jest on szczególnie przydatny w połączeniu z instalacją firewalla/routera. Pakiet można znaleźć w menedżerze pakietów pfSense w System, Package Manager, Available Packages:

Rys. pfSense Package Manager

Po instalacji stronę konfiguracji Suricaty można znaleźć w menu Services. Możesz zacząć od Global Settings. Zaznacz „Install ETOpen Emerging Threats rules” oraz „Hide Deprecated Rules Categories”.

Rys. Konfiguracja pobierania reguł

Poniżej wybierz żądaną częstotliwość aktualizacji z listy rozwijanej „Update Interval”. Ja wybieram „1 DAY”. Możesz też zaznaczyć „Live Rule Swap on Update”, co sprawi, że przy aktualizacji reguły będą przeładowywane zamiast restartu usługi.

Rys. Konfiguracja częstotliwości

Dla „Remove Blocked Hosts Interval” wybieram od 6 do 24 godzin, w zależności od specyfiki systemu. Nawet jeśli nie zaczynasz w trybie IPS, koniecznie ustaw to przy pierwszej konfiguracji. Lepiej zrobić to teraz, niż pamiętać, żeby wrócić tu po jakimś czasie. Możesz po prostu o tym zapomnieć.

Następnie trzeba wymusić pobranie reguł w zakładce Updates. Przeważnie nie uruchamia się ono automatycznie, więc przy pierwszej okazji kliknij tu przycisk Update.

Rys. Pobieranie reguł

Jeśli masz przestarzałą instalację pfSense, to istnieje duże prawdopodobieństwo, że pakiet również będzie przestarzały i będzie próbował pobrać nieistniejące reguły. Skończy się to błędem. Nie będę tu opisywał, jak zaktualizować pfSense – zostanie to omówione w osobnym artykule. Jeśli pobieranie reguł działa bez problemu, to wszystko w porządku; jeśli nie, przygotuj się na dodatkową pracę.

Kolejną rzeczą jest konfiguracja interfejsu. Przejdź do zakładki Interfaces i dodaj interfejs. Jest tam kilka rzeczy do wybrania, zaczynając od pola wyboru Enable, jeśli chcesz, żeby Suricata działała na tym interfejsie.

Rys. Ogólne ustawienia interfejsu

Możesz tu wypróbować różne opcje dla TLS, file-store i packet log. Poza TLS pozostałe wymagają w obciążonej sieci mnóstwa miejsca na dysku. Pamiętaj więc, aby przydzielić tu wystarczająco dużo przestrzeni. W tej sekcji jest jeszcze jedna rzecz do skonfigurowania – „Detect-Engine Profile”, który zwykle ustawiam na „High” zamiast domyślnego „Medium”. Na razie nie zaznaczasz blokowania sprawców – na początku pozostajemy w trybie IDS zamiast IPS.

Wyborowi tylko określonych kategorii reguł poświęcony jest osobny artykuł (można go znaleźć pod tym linkiem), więc pominę ten temat. Do celów testowych sugeruję włączenie kategorii reguł „3coresec”, „compromised” i „scan”. Gdy to zrobisz, przejdź do zakładki Interfaces i zrestartuj Suricatę na tym interfejsie. Jeśli się nie uruchamia, przejdź do zakładki Logs View i przejrzyj suricata.log w poszukiwaniu informacji diagnostycznych. Najczęściej problem dotyczy rozmiaru pamięci w stosunku do konfiguracji w zakładce Flow/Stream, ale to również temat na inny artykuł.

Włączanie trybu IPS #

Aby przygotować się do trybu zapobiegania, najpierw przejdź do zakładki Alerts i przeglądaj ją przez jakiś czas. W zależności od scenariusza możesz spędzić dzień, a nawet miesiąc, po prostu próbując zrozumieć, co dzieje się w Twojej sieci/sieciach. W sieciach korporacyjnych ciekawszy będzie ruch wychodzący niż przychodzący. W przypadku dostawców usług jest odwrotnie, więc to ruch przychodzący należy obserwować.

Warto pamiętać, że pakiet Suricata w pfSense doda Twoje lokalne adresy sieciowe, adresy interfejsów, a nawet podsieci tuneli do listy pass, chroniąc je przed blokowaniem. Jeśli chcesz blokować jakieś adresy wewnętrzne, koniecznie sprawdź tę domyślną listę pass albo nawet utwórz własną.

Gdy już poświęcisz trochę czasu na zbadanie, co dzieje się w Twojej sieci, a także w ruchu przychodzącym, czas włączyć tryb blokowania. Przejdź do ustawień interfejsu i zaznacz opcję „Block Offenders”.

Rys. Włączanie trybu IPS, który blokuje sprawców

Preferuję dwie rzeczy. Pierwsza to wybór IPS Mode jako „Legacy Mode”, który kopiuje pakiety zamiast przechwytywać je między kartą sieciową a systemem operacyjnym. Na początek jest to po prostu proste, bo w przeciwieństwie do „Inline Mode” wymaga niewiele dodatkowej pracy. Druga opcja, którą preferuję, to blokowanie tylko adresów źródłowych – „Which IP to Block” ustawione na „SRC”.

W przypadku ruchu wychodzącego adres źródłowy będzie lokalny, ale nie zostanie zablokowany, ponieważ znajduje się na liście pass sieci domowej. Jak wspomniałem wcześniej, konfiguracja zależy od charakterystyki sieci, które chcesz monitorować. Jeśli masz więcej ruchu wychodzącego, rozważ blokowanie adresu docelowego. Z jakiegoś powodu zaleca się blokowanie zarówno adresów źródłowych, jak i docelowych. Nie jestem do końca pewien dlaczego, bo wyraźnie nie pasuje to do wszystkich przypadków.

Analiza zagrożeń #

Po zapisaniu konfiguracji zrestartuj usługę Suricata na interfejsie i chwilę poczekaj. Publiczne adresy IPv4 są dobrze znane, więc nie zdziw się, gdy w ciągu kilku minut zostaniesz przeskanowany i zbadany przez różnego rodzaju crawlery. Dotyczy to nawet świeżo przydzielonych adresów publicznych. W większości instalacji widzę od 50 do 500 zablokowanych adresów publicznych w ciągu jednego dnia działania Suricaty. W sieciach domowych i biurowych zobaczysz sprawdzanie łączności i aktualizacji z różnych urządzeń. W środowiskach enterprise ruch będzie inny, a ponieważ to szeroki temat, zostanie omówiony w kolejnym odcinku. Bądź więc na bieżąco.

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Suricata IDS/IPS na pfSense”, 25 września 2022, https://michalasobczak.pl/pl/posts/suricata-ids-and-ips-on-pfsense.html