 
Snort – tworzenie reguł
 
Podstawy tworzenia reguł
jedna reguła powinna zajmować jeden
wiersz
jeżeli reguła jest zbyt duża, można ją
podzielić na kilka wierszy poprzez użycie
znaku „\”
 
Podstawy tworzenia reguł
podział reguły na wiersze
 
Podstawy tworzenia reguł
nagłówek:
akcja
protokół
adresy IP
numery portów
parametry:
sygnatury
parametry protokołów
wiele innych
reguły składają się z dwóch logicznych
części:
 
Podstawy tworzenia reguł
nagłówek
reguły
parametry
reguły
 
Nagłówek reguły
 
Nagłówek reguły
akcja protokół adres_IP port kierunek adres_IP port
 
Nagłówek reguły
Akcja:
log
- zapisz pakiet
alert
- podnieś alarm i zapisz pakiet
pass
- zignoruj pakiet
activate
- podnieś alarm i uruchom inną regułę dynamiczną
dynamic
- reguła dynamiczna, aktywowana przez inne reguły
 
Nagłówek reguły
Przykłady:
 
Nagłówek reguły
Przykłady:
 
Nagłówek reguły
Protokół:
tcp
udp
icmp
ip
 
Nagłówek reguły
Przykłady
 
Nagłówek reguły
Adres_IP:
any
- dowolny adres sieciowy
x.x.x.x/y
- adres sieci lub hosta
[x.x.x.x/y,x.x.x.x/y,...]
- kilka adresów sieci lub hostów
!
adresy
- wszystkie adresy z wyjątkiem wskazanych
 
Nagłówek reguły
Przykłady
 
Nagłówek reguły
Port:
any
- dowolny adres sieciowy
port
- określony numer portu, np. 80
port
:
port
- zakres portów, („1:1024”, „:1024”, „600:”)
!port
lub
!zakres
- wszystkie porty spoza zakresu
 
Nagłówek reguły
Przykłady
 
Nagłówek reguły
Kierunek:
->
pakiety wysyłane z hosta źródłowego na
docelowy
<>
wszystkie pakiety
 
Nagłówek reguły
Przykłady
 
Parametry reguły
 
Parametry reguły
Składnia:
(parametr[: "wartość"]; ...)
 
Parametry reguły
Rodzaje parametrów:
ogólne
sprawdzające zawartość pakietów
sprawdzające parametry protokołu IP
sprawdzające parametry protokołu TCP
sprawdzające parametry protokołu ICMP
reagujące na próby naruszeń bezpieczeństwa
inne, specyficzne dla preprocesorów i protokołów 
 
 
Parametry reguły
Wybrane parametry
msg: "tekst alarmu"
komunikat zapisywany razem z pakietem lub
alarmem
content: [!] "tekst"
zawartość pakietu; tekst można wprowadzać w
formie ASCII lub w formie HEX: "|0d0a c8af|"
nocase
przeszukiwanie bez względu na wielkość liter
 
Parametry reguły
Przykłady
 
Parametry reguły
Przykłady
 
Parametry reguły
Wybrane parametry c.d.:
flags: wartość
flagi pakietu TCP:
S - SYN 
A - ACK 
R - RST 
P - PSH 
U - URG 
F - FIN 
1 - Reserver bit 1 
2 - Reserver bit 2 
0 - żadnych flag 
+ ALL - wszystkie 
* ANY - dowolna flaga 
! NOT flaga - brak flagi 
 
Parametry reguły
Przykłady
 
Parametry reguły
Przykłady
 
Parametry reguły
Wybrane parametry:
resp: wartość[, wartość ...]
zezwala na przerywanie połączeń (opcja
FlexResponse musi być włączona podczas
kompilacji):
rst_send - wysyła pakiet TCP-RST do hosta źródł.
rst_rcv - wysyła pakiet TCP-RST do hosta docel.
rst_all - wysyła pakiet TCP-RST do obu hostów
icmp_net - wysyła pakiet ICMP-NET-UNREACH
icmp_host - wysyła pakiet ICMP-HOST-UNREACH
icmp_port - wysyła pakiet ICMP-PORT-UNREACH
icmp_all - wysyła wszystkie powyższe pakiety
 
Parametry reguły
Przykłady
 
Parametry reguły
Wybrane opcje c.d.:
tag: typ, licznik, tryb, [kierunek]
zezwala na logowanie większej ilości pakietów w
przypadku wykrycia naruszenia bezpieczeństwa
Wartości pola typ:
session - loguj tylko pakiety z danej sesji
host - loguj wszystkie pakiety od danego hosta
Wartości pola tryb:
packets - pole licznik wskazuje liczbę pakietów
seconds - pole licznik wskazuje czas
 
Parametry reguły
Przykłady
 
Parametry reguły
Przykłady
 
Parametry reguły
Wybrane opcje c.d.:
reference: id_system, id
pozwala na umieszczenie odnośników URL w logu
alarmów
classtype: wartość
pozwala sklasyfikować typ ataku
(classification.config)
priority: liczba
pozwala określić poziom zagrożenia
 
Parametry reguły
Przykłady
 
Dodatkowe dyrektywy
 
Dodatkowe dyrektywy
include
nazwa_pliku
pozwala na włączanie plików
zawierających reguły SNORT
 
Dodatkowe dyrektywy
var
zmienna wartość
stosowanie zmiennych upraszcza
tworzenie reguł:
 
Dodatkowe dyrektywy
config
dyrektywa[: wartość]
dyrektywy konfiguracyjne
 
Dodatkowe dyrektywy
Pełna lista dyrektyw oraz parametrów
reguł znajduje się w dołączonej do
SNORT dokumentacji
 
Tworzenie własnych reguł:
UNIX/Linux/*BSD
 
Tworzenie własnych reguł
Przygotowanie środowiska
 
Tworzenie własnych reguł
snort.conf
my.rules
 
Tworzenie własnych reguł
Uruchamianie snort
 
Tworzenie własnych reguł:
MS Windows
 
Tworzenie własnych reguł
Przygotowanie środowiska
 
Tworzenie własnych reguł
snort.conf
my.rules
 
Tworzenie własnych reguł
Uruchamianie snort
 
Tworzenie własnych reguł:
przykłady
 
Tworzenie własnych reguł
Przykład 1:
Odnotowanie użycia programu finger
 
Tworzenie własnych reguł
Przykład 2:
Wykrywanie prób dostępu do serwera
WWW na port inny niż 80/tcp
 
Tworzenie własnych reguł
Przykład 3:
Wykrywanie prób dostępu do powłoki
(cmd.exe, /bin/sh)
 
Pytania?