[OpenBSD]

[Vorige: Runtime Opties] [Inhoud] [Volgende: Ankers]

PF: Scrub (Pakket Normalisatie)


Inhoudsopgave


Inleiding

"Schrobben" (scrubbing) is de normalisatie van pakketten zodat er geen ambiguïteiten in interpretatie zijn bij de ultieme bestemming van het pakket. De scrub opdracht herassembleert ook gefragmenteerde pakketten, waarbij ze sommige besturingssystemen voor enkele vormen van aanvallen beschermt, en laat TCP pakketten vallen die ongeldige flagcombinaties hebben. Een eenvoudige vorm van de scrub opdracht:
scrub in all

Dit zal alle binnenkomende pakketten op alle interfaces schrobben.

Eén reden om niet te schrobben op een interface is als men NFS doorlaat doorheen PF. Sommige niet-OpenBSD platformen verzenden (en verwachten) vreemde pakketten -- gefragmenteerde pakketten met de "do not fragment" bit ingesteld, die (juist) verworpen worden door scrub. Dit kan opgelost worden door gebruik van de no-df optie. Een andere reden is dat enkele spelletjes met meerdere spelers verbindingsproblemen hebben wanneer ze doorheen PF gaan met scrub ingeschakeld. Buiten deze ietwat ongewone gevallen, is alle pakketten schrobben een ten zeerste aanbevolen praktijk.

De scrub opdrachtsyntaxis is heel gelijkaardig aan de filter syntaxis, wat het gemakkelijk maakt om selectief bepaalde pakketten te schrobben en andere niet. Het no sleutelwoord kan gebruikt worden vóór scrub om pakketten aan te geven die niet geschrobd zullen worden. Net zoals bij nat regels, wint de eerste overeenstemmende regel.

Meer over het principe en de concepten van schrobben kan teruggevonden worden in het Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics artikel.

Opties

Scrub heeft de volgende opties:
no-df
Veegt de don't fragment bit leeg in de IP pakkethoofding. Van sommige besturingssystemen is bekend dat ze gefragmenteerde pakketten genereren met de don't fragment bit ingesteld. Dit is in het bijzonder waar bij NFS. Scrub zal zulke pakketten laten vallen tenzij de no-df optie gespecificeerd wordt. Omdat sommige besturingssystemen don't fragment pakketten genereren met een nul IP identificatiehoofdingsveld, wordt het aanbevolen no-df in samenwerking met random-id te gebruiken.
random-id
Vervangt het IP identificatieveld van pakketten door random waarden om te compenseren voor besturingssystemen die voorspelbare waarden gebruiken. Deze optie is alleen van toepassing op pakketten die niet gefragmenteerd zijn na de optionele pakketherassemblage.
min-ttl num
Legt een minimale Time To Live (TTL) op in IP pakkethoofdingen.
max-mss num
Legt een maximale Maximum Segment Size (MSS) op in TCP pakkethoofdingen.
fragment reassemble
Buffert binnenkomende pakketfragmenten en herassembleert ze tot een volledig pakket alvorens ze aan de filtermotor door te geven. Het voordeel is dat filterregels alleen volledige pakketten hoeven af te handelen en fragmenten kunnen negeren. Het nadeel is het verhoogde geheugen nodig om de pakketfragmenten te bufferen. Dit is het standaardgedrag wanneer er geen fragment gespecificeerd wordt. Dit is ook de enige fragment optie die werkt met NAT.
fragment crop
Zorgt ervoor dat dubbele fragmenten gedropt worden en dat overlappingen geknipt worden. In tegenstelling tot bij fragment reassemble, worden fragmenten niet gebufferd maar doorgelaten zodra ze aankomen.
fragment drop-ovl
Gelijkaardig aan fragment crop behalve dat alle dubbele of overlappende fragmenten gedropt worden evenals gelijk welke verdere overeenkomstige fragmenten.
reassemble tcp
Normaliseert TCP verbindingen "statefully". Bij gebruik van scrub reassemble tcp kan er geen richting (in/uit) gespecificeerd worden. De volgende normaliseringen worden uitgevoerd:

Voorbeelden:

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

[Vorige: Runtime Opties] [Inhoud] [Volgende: Ankers]


[terug] www@openbsd.org
$OpenBSD: scrub.html,v 1.5 2006/11/04 17:38:45 saad Exp $