[OpenBSD]

[Wstecz: Opcje w czasie działania] [Spis treści] [Dalej: Zakotwiczenia]

PF: Scrub (normalizacja pakietów)


Spis treści


Wprowadzenie

"Scrubbing" jest normalizacją pakietów, dzięki której nie ma wątpliwości co do ich interpretacji po stronie odbiorcy. Dyrektywa 'scrub' defragmentuje także pakiety, chroniąc niektóre systemy przed różnymi formami ataku, oraz odrzuca pakiety TCP, które mają ustawione niepoprawne kombinacje flag. Najprostszą formą dyrektywy scrub jest:
scrub in all

Co oznacza normalizację wszystkich przychodzących pakietów na wszystkich interfejsach sieciowych.

Jedynym powodem nie normalizowania pakietów na interfejsie sieciowym może być przepuszczanie NFS przez PF na tym interfejsie. Niektóre, różne od OpenBSD, platformy wysyłają (i oczekują na) dziwne pakiety - sfragmentowane datagramy z ustawionym bitem "nie fragmentować", które są (słusznie) odrzucane przez scrub. Problem ten może jednak być rozwiązany poprzez użycie opcji no-df. Innym powodem mogą być kłopoty z połączeniem w niektórych sieciowych grach komputerowych, których ruch przechodzi przez PF z włączonym scrub. Poza tymi, skądinąd marginalnymi przypadkami, normalizacja wszystkich pakietów jest bardzo wskazaną praktyką.

Składnia dyrektywy scrub jest bardzo podobna do składni dyrektyw filtrujących, która pozwala w prosty sposób selektywnie normalizować poszczególne pakiety, i nie normalizować innych. Słowo kluczowe no może być użyte przed scrub, aby określić pakiety, które nie mają ulegać normalizacji. Podobnie jak w przypadku reguł nat, pierwsza pasująca jest jednocześnie ostatecznym dopasowaniem.

Więcej o koncepcji i zasadach normalizacji znajdziesz w dokumencie: Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics.

Opcje

scrub ma następujące opcje:
no-df
Usuwa bit nie fragmentować z nagłówka pakietu IP. Niektóre systemy znane są z generowania sfragmentowanych pakietów z ustawionym bitem nie fragmentować. Jest to szczególnie prawdziwe dla NFS. Scrub będzie porzucać takie pakiety, chyba że jest ustawiona opcja no-df. Ponieważ niektóre systemy operacyjne generują nie fragmentowalne pakiety z zerowym nagłówkiem identyfikacyjnym IP, jest zalecane używanie no-df wraz z random-id.
random-id
Zastępuje pole identyfikacyjne IP pakietów losową wartością. Opcja ta odnosi się jedynie do wychodzących pakietów, które nie są fragmentowane po opcjonalnym zdefragmentowaniu.
min-ttl num
Wymusza minimalne Time To Live (TTL) dla nagłówków pakietów IP.
max-mss num
Wymusza maksymalne Maximum Segment Size (MSS) dla nagłówków pakietów TCP.
fragment reassemble
Buforuje przychodzące fragmenty pakietów i defragmentuje je do całych pakietów przed przekazaniem ich do filtra pakietów. Zaletą tego rozwiązania jest to, iż reguły filtrujące operują jedynie na kompletnych pakietach i mogą ignorować pojedyńcze fragmenty. Wadą jest zwiększone zużycie pamięci, niezbędne do przechowywania fragmentów pakietów. Jest to domyślne zachowanie, jeśli żadna opcja fragment nie jest podana. Jest to zarazem jedyna opcja fragment, która współpracuje z NAT.
fragment crop
Powoduje, że duplikaty fragmentów są porzucane, a nakładające się są kadrowane. W odróżnieniu do fragment reassemble, fragmenty nie są buforowane, lecz są przekazywane dalej jak tylko dotrą.
fragment drop-ovl
Ta opcja jest podobna do fragment crop, z tą różnicą, że wszystkie zduplikowane i nakładające się fragmenty będą porzucane, łącznie z wszystkimi powiązanymi z nimi fragmentami.
reassemble tcp
Normalizuj połączenia TCP w trybie śledzenia stanów. Korzystając z scrub reassemble tcp, kierunek (wchodzący/wychodzący) (ang. in/out) nie musi być określony. Następujące normalizacje mają miejsce:

Przykłady:

scrub in on fxp0 all fragment reassemble min-ttl 15 max-mss 1400
scrub in on fxp0 all no-df
scrub    on fxp0 all reassemble tcp

[Wstecz: Opcje w czasie działania] [Spis treści] [Dalej: Zakotwiczenia]


[wstecz] www@openbsd.org
$OpenBSD$