0Pricing
Cyber Security Academy · Lekcja

Reguły sygnaturowe w Snort i Suricata

Pisanie i odczytywanie reguł sieciowych

Reguły sygnaturowe w Snort i Suricata to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Snort i Suricata

Snort i Suricata to dwa najważniejsze silniki IDS/IPS o otwartym kodzie źródłowym. Korzystają w dużej mierze z kompatybilnego języka reguł, dlatego reguła napisana dla jednego z nich zwykle działa również w drugim.

Suricata oferuje wielowątkowość, wbudowane parsery protokołów, ekstrakcję plików i rozbudowane logowanie (EVE JSON); Snort 3 podobnie unowocześnił własny silnik. Jednorazowa nauka składni reguł pozwala sprawnie pracować z oboma rozwiązaniami.

Anatomia reguły

Każda reguła składa się z dwóch części: nagłówka i ujętego w nawiasy ciała zawierającego opcje. Nagłówek określa działanie, protokół i kierunek ruchu, a ciało definiuje, co należy dopasować i jak zgłosić wynik.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
  msg:"WEB suspicious request"; \
  content:"/admin.php"; http_uri; \
  sid:1000001; rev:1; )

Pola nagłówka

Nagłówek jest odczytywany od lewej do prawej:

  • action — alert, drop, reject, pass
  • protocol — tcp, udp, icmp, ip (lub protokoły aplikacyjne w Suricata: http, dns, tls)
  • source IP/port i destination IP/port
  • direction — -> jednokierunkowy lub <> dwukierunkowy

Zmienne takie jak $HOME_NET i $EXTERNAL_NET pochodzą z konfiguracji, dzięki czemu reguły pozostają przenośne między lokalizacjami.

drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )

Akcje: Alert a Drop

Akcja określa sposób działania IDS lub IPS dla danej reguły:

  • alert — rejestruje zdarzenie i wysyła powiadomienie, ale nie zatrzymuje ruchu (IDS)
  • drop — po cichu odrzuca pakiet (IPS, tylko w trybie inline)
  • reject — odrzuca pakiet i wysyła reset TCP lub komunikat ICMP o nieosiągalności
  • pass — jawnie zezwala na ruch, pomijając późniejsze reguły

Ten sam silnik działa jako IDS lub IPS w zależności od tego, czy został wdrożony w trybie inline oraz jakich akcji Państwo używają.

Dopasowywanie treści

Słowo kluczowe content dopasowuje wzorzec bajtów w ładunku. Tekst umieszcza się w cudzysłowie, a dane binarne zapisuje w potokach w postaci szesnastkowej.

Słowa kluczowe kotwiczące dopasowanie zwiększają jego precyzję: offset, depth, distance i within ograniczają miejsce, w którym może pojawić się wzorzec, co poprawia zarówno dokładność, jak i wydajność.

alert tcp any any -> $HOME_NET any ( \
  msg:"Malware magic bytes"; \
  content:"|4D 5A|"; offset:0; depth:2; \
  sid:1000003; rev:1; )

Bufory sticky

Nowoczesne reguły dopasowują wzorce do buforów uwzględniających protokół, a nie do surowego strumienia. Po użyciu słowa kluczowego bufora kolejne dopasowania content dotyczą tej części przeanalizowanego protokołu.

  • http_uri — URI żądania
  • http_header — nagłówki żądania lub odpowiedzi
  • http_user_agent — User-Agent
  • tls_sni / dns_query — nazwa serwera TLS / zapytanie DNS

Jest to znacznie bardziej niezawodne niż wyszukiwanie podciągu w całym pakiecie.

alert http any any -> any any ( \
  msg:"Suspicious user agent"; \
  http.user_agent; content:"sqlmap"; nocase; \
  sid:1000004; rev:1; )

PCRE i nocase

Gdy stałe ciągi znaków nie wystarczają, pcre udostępnia wyrażenia regularne zgodne z Perlem. Warto połączyć tani obliczeniowo filtr wstępny content z pcre, aby wyrażenie regularne było uruchamiane wyłącznie dla pakietów spełniających wstępne kryteria, co pozwala zachować wydajność.

Modyfikator nocase sprawia, że dopasowanie content nie uwzględnia wielkości liter. Jest to ważne w przypadku nagłówków i pól kontrolowanych przez użytkownika, których wartości napastnicy mogą dowolnie zmieniać.

alert http any any -> $HOME_NET any ( \
  msg:"SQLi attempt in URI"; \
  http.uri; content:"select"; nocase; \
  pcre:"/union\s+select/i"; \
  sid:1000005; rev:1; )

Słowa kluczowe flow i stanu

Opcja flow ogranicza działanie reguły do określonego stanu i kierunku połączenia, zmniejszając liczbę fałszywych alarmów oraz koszt obliczeniowy.

  • established — tylko w ustanowionych sesjach TCP
  • to_server / to_client — kierunek żądania lub odpowiedzi

Dopasowywanie odpowiedzi serwera wyłącznie dla ustanowionych połączeń i w kierunku to_client zapobiega reagowaniu na przypadkowe lub sfałszowane pakiety.

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
  msg:"Beacon response"; \
  flow:established,to_client; \
  content:"|00 01 02 03|"; \
  sid:1000006; rev:1; )

Metadane: sid, rev, msg, reference

Opcje porządkowe ułatwiają utrzymanie zestawu reguł:

  • sid — unikalny identyfikator sygnatury (dla reguł lokalnych należy używać wartości 1000000+)
  • rev — numer wersji, zwiększany przy każdej edycji
  • msg — treść alertu wyświetlana analitykom
  • classtype — kategoria wpływająca na priorytet
  • reference — odnośnik do CVE lub biuletynu bezpieczeństwa

Stałe wartości sid i zwiększane numery rev pozwalają śledzić reguły i je aktualizować bez zakłócania działania pulpitów nawigacyjnych oraz wyciszeń.

alert tcp any any -> $HOME_NET 445 ( \
  msg:"EternalBlue exploit attempt"; \
  flow:to_server,established; content:"|FF|SMB"; \
  classtype:attempted-admin; \
  reference:cve,2017-0144; sid:1000007; rev:2; )

Różnice między Snort i Suricata

Choć reguły są ze sobą kompatybilne, silniki różnią się możliwościami:

  • Suricata jest wielowątkowa, natywnie analizuje protokoły aplikacyjne, wyodrębnia pliki, oblicza JA3 i generuje dane EVE JSON
  • Snort 3 ma przepisany silnik zoptymalizowany pod kątem wydajności oraz modularnego systemu wtyczek

Niektóre słowa kluczowe są specyficzne dla danego silnika. Suricata dodaje słowa kluczowe warstwy aplikacji (tls.sni, dns.query, http.method) oraz funkcje dataset/flowbits. Udostępniając reguły między silnikami, należy kierować się ich najniższym wspólnym mianownikiem albo utrzymywać osobne zestawy reguł dla każdego silnika.

Filtrowanie według częstotliwości i progi

Aby reguła nie zalewała konsoli alertami, należy zastosować progi. detection_filter zadziała dopiero po wystąpieniu N zdarzeń w określonym oknie czasowym, a threshold z opcją limit ogranicza liczbę alertów.

Jest to niezbędne przy wykrywaniu ataków brute-force i skanowania, gdy pojedyncze zdarzenie nic nie znaczy, lecz seria zdarzeń stanowi sygnał.

alert tcp any any -> $HOME_NET 22 ( \
  msg:"SSH brute force"; flow:to_server; \
  detection_filter:track by_src, count 5, seconds 60; \
  sid:1000008; rev:1; )

Szybkie sprawdzenie

Proszę przeczytać regułę i przewidzieć jej działanie.

Podsumowanie

Potrafią już Państwo odczytywać i tworzyć sygnatury Snort/Suricata:

  • Reguła składa się z nagłówka (akcja, protokół, źródło/cel, kierunek) oraz opcji treści
  • Akcja określa działanie IDS lub IPS: alert, drop, reject, pass
  • content wraz z offset/depth oraz dopasowaniem szesnastkowym wyszukuje bajty w ładunku
  • Bufory sticky (http.uri, tls.sni, dns.query) dopasowują pola przeanalizowanego protokołu
  • pcre i nocase obsługują zmienne wzorce
  • flow ogranicza regułę do określonego stanu i kierunku
  • sid/rev/msg/reference ułatwiają utrzymanie reguł
  • Progi ograniczają szum powodowany przez ataki brute-force i skanowanie

Następnie: wykrywanie zagrożeń bez żadnej sygnatury.

Często zadawane pytania

Czy lekcja „Reguły sygnaturowe w Snort i Suricata” jest bezpłatna?

Tak — pełny tekst „Reguły sygnaturowe w Snort i Suricata” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Reguły sygnaturowe w Snort i Suricata”?

Pisanie i odczytywanie reguł sieciowych Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Reguły sygnaturowe w Snort i Suricata”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Koncepcje IDS i IPS
  2. Reguły sygnaturowe w Snort i Suricata
  3. Wykrywanie anomalii i zachowań
  4. Dostrajanie i wdrażanie
← Powrót do Cyber Security Academy