Snort zbada sieć

{{a:HTTP://www.snort.org}}Snort{{/a}} jest oprogramowaniem Open Source, które umożliwia monitorowanie sieci komputerowej, zaczynając od prostego podsłuchiwania pakietów, a kończąc na zaawansowanym systemie IDS/IPS, opartym na regułach. Początkowo był on przeznaczony wyłącznie dla systemów uniksowych, ale później został również przeniesiony na systemy Windows.

Każdy, kto korzystał w przeszłości z rozwiązań Open Source, w szczególności w systemach uniksowych/linuksowych, jest przyzwyczajony do tego, że nie wszystko jest robione za użytkownika podczas ich instalacji. Dodatkowo, sam proces konfiguracji jest często przeprowadzany poprzez ręczną edycję plików tekstowych, a nie klikanie w ładnym graficznym interfejsie użytkownika. Nie inaczej jest w Snorcie, więc należy o tym pamiętać.

W Uniksie/Linuksie Snort korzysta z zewnętrznych programów (najczęściej dostępnych od momentu instalacji wybranego systemu), takich jak sterowniki niskopoziomowe do podsłuchiwania pakietów czy wbudowana zapora sieciowa, przy pomocy której może ustalać zachowanie się systemu IDS.

W Windows trzeba uzupełniać brakujące elementy ręcznie. Dotyczy to przede wszystkim instalacji opensource'owej WinPcap, usługi do monitorowania pakietów. Chociaż większość funkcjonalności Snorta jest także dostępna w tym systemie, tzn. będzie on mógł analizować ruch sieciowy oraz wysyłać ostrzeżenia, to jednak nie będzie mógł wymusić odrzucania wybranych pakietów, gdyż nie integruje się w zaporą systemu Windows. W rezultacie mimo wszystko często najlepszym rozwiązaniem jest skorzystanie z dowolnej popularnej dystrybucji Linuksa, np. Ubuntu, w której wszystko jest dostępne i od razu gotowe.

Snort zbada sieć

Aby zapoznać się z dokumentacją programu, wystarczy zajrzeć do przeznaczonego na nią katalogu (w Ubuntu /usr/share/doc/snort lub /usr/share/doc/snort-doc, jeśli został zainstalowany opcjonalny pakiet snort-doc, a w Windows XP C:\Snort\doc). Znajduje się tam zbiór przydatnych plików tekstowych i dokumentów PDF, które opisują, jak zacząć pracę ze Snortem i jak sprawdzić, czy wszystko działa, tak jak powinno (najważniejszy to podręcznik dla początkujących w pliku snort_manual.pdf). Ponownie, więcej zyskają użytkownicy Uniksa/Linuksa, gdyż omawiane materiały koncentrują się na tych systemach, a do Windows są jedynie nawiązania.

Snort może pracować w trzech trybach: podsłuchiwania pakietów (sniffer mode), zapisywania pakietów (packet logger mode) oraz systemu IDS/IPS (network intrusion detection mode i inline mode). W pierwszym wyświetla na konsoli informacje o tym, co się dzieje w sieci - jakie pakiety zostały wyłapane (np. snort -dev). W drugim, gdy poda mu się dodatkowo katalog do zapisywania danych, zacznie je przechowywać, przy czym można wybrać, w jakiej postaci. Jeśli ruch w analizowanej sieci nie jest za duży (łącze takie jak przy korzystaniu z Neostrady), może to być format czytelny dla człowieka, czyli tekstowy ASCII (np. snort -dev -l log, przy czym katalog log musi już istnieć). Snort będzie po prostu w stanie na bieżąco dekodować pakiety. Gdy przesyłana liczba pakietów jest bardzo duża, najlepiej zapisywać logi w formacie binarnej programu Tcpdump (snort -l log -b) - można je wtedy dekodować albo za pomocą Snorta, Tcpdumpa albo innych narzędzi do analizowania pakietów, takich jak Ethereal.

Dwa pierwsze tryby mają na celu obserwowanie, co się dzieje, ale nic z tym nie robią - są to tryby pasywne. Ostatni tryb, network intrusion detection i on-line, pozwala na uruchomienie Snorta w trybie IDS-a, czyli analizowania ruchu na podstawie zestawu reguł (snort -d -l log -h 192.168.2.0/24 -c snort.conf). Dzięki temu nie muszą zapisywać wszystkich pakietów, a jedynie wybrane. Przy odpowiednim zdarzeniu zaalarmują one administratora poprzez wysłanie ostrzeżenia o sytuacji, zapiszą pakiet w logach, a nawet zablokują jego dotarcie do odbiorcy.

Snort zbada sieć

Reguły zachowania się Snorta znajdują się w pliku konfiguracyjnym snort.conf, do którego dodaje się je ręcznie dowolnym edytorem tekstu. Ich format nie jest skomplikowany i szybko można nabrać wprawy w tym temacie (alert tcp any any -> 192.168.2.0/24 111 (content:"|00 01 86 a5|"; msg:"mountd access";). Dostępnych jest osiem akcji do wykonania w regułach: alert (wysłanie ostrzeżenia i zapisanie pakietu), log (zapisanie pakietu), pass (zignorowanie pakietu, czyli nie podjęcie żadnej akcji, gdy nie chce się całkowicie usuwać reguły), activate (wysłanie ostrzeżenia i włączenie dynamicznej reguły poprzednio nieaktywnej), dynamic (oczekiwanie na włączenie akcją activate i potem działanie jak akcja log), drop (zapisanie pakietu, ale nie przepuszczenie go), reject (zapisanie pakietu, odrzucenie go i poinformowanie nadawcy) oraz sdrop (odrzucenie pakietu bez zapisywania go). Trzy ostatnie akcje są dostępne wyłącznie w systemach uniksowych/linuksowych (in-line mode), gdyż opierają się na dostępności zapory sieciowej IPTables, przy pomocy którego odrzucają pakiety.

Dodatkowo, można przygotować jeszcze własne akcje dla reguł, które budują bardziej skomplikowane zasady reakcji na zdarzenia, np. zapisywanie pakietów, ale tylko w trybie binarnym (gdy ruch jest podejrzany) czy ostrzeganie i zapisywanie do bazy danych (przy poważnych problemach).

W dalszej części definiowania reguły pojawiają się protokoły (np. tcp) oraz adresy IP i porty nadawcy oraz odbiorcy (any any -> 192.168.2.0/24 111), typowe dla rozwiązań zapór sieciowych. To jednak tylko podstawowa funkcjonalność, gdyż przy pomocy tzw. opcji reguł można także analizować zawartość pakietu (content:"|00 01 86 a5"|;) i np. zapisywać tylko 250 pierwszych pakietów, aby się im później przyjrzeć, gdyż prawdopodobnie został wykryty potencjalny atak typu DoS (Denial of Service).

Sposób informowania o określonych zdarzeniach może być dodatkowo kontrolowany, np. poprzez wysyłanie tylko jednego ostrzeżenia danego typu w ciągu 30 sekund, aby nie zaśmiecać logów, co tylko utrudniałoby przeanalizowanie problemu.

Oprócz samych reguł, Snort oferuje dodatkowe funkcjonalności, które mają wpływ na działanie programu. Jedną z nich możliwość dołączania modułów wstępnego przetwarzania danych (pre-processor module). Spora ich liczba jest dostarczana w podstawowym pakiecie. Rozszerzają one różne elementy oprogramowania, zaczynając od filtru pakietów, a kończąc na analizie aplikacyjnej ruchu (można brać pod uwagę budowę protokołu poczty elektronicznej SMTP czy protokołu bezpiecznej konsoli SSH, aby wykrywać potencjalne eksploity specyficzne dla takiego ruchu).

Drugim ciekawym rozwiązaniem jest moduł dynamiczny, którego można samodzielnie przygotować, wrzucić do odpowiedniego katalogu i wywoływać na żądanie, aby zajdzie taka potrzeba. Ma to szczególnie ważne uzasadnienie, gdy brakuje jakiegoś specyficznego modułu do wstępnego przetwarzania danych.

Najnowsza wersja 2.8 została udostępniona 9 października tego roku. Pojawiło się w niej wstępne wsparcie dla protokołu IPv6, definiowanie list portów TCP (zamiast oddzielnych reguł), podstawowe wykrywanie przechwycenia sesji TCP w oparciu na zmiany adresu MAC oraz wiele innych usprawnień, w tym wydajnościowych.

Podsumowując, Snort nie jest dla osób, które oczekują IDS-a dla wszystkich, z ładnym graficznym interfejsem użytkownika i banalnie prostego w użyciu. Docenią go osoby, które poszukują potężnego narzędzia, w dodatku za darmo, a nie boją się przeznaczyć paru godzin na naukę tworzenia reguł i wykonywania komend z linii poleceń Linuksa (co nie jest takie trudne, jakby się wydawało).

Cena: darmowy

Plusy: oprogramowanie Open Source; rozwiązanie bazujące na regułach analizy pakietów, łatwe w dostosowaniu do własnych potrzeb; bardzo dobrze udokumentowane API, które tworzyć swoje własne rozszerzenia

Minusy: konfiguracja jest przeprowadzana przez edycję tekstowych plików konfiguracyjnych; w systemie Windows nie jest możliwe blokowanie pakietów, a jedynie ich logowanie

***

Autorem recenzji jest Krzysztof Krawczyk.


TOP 200