[Precedente: Opzioni Runtime]
[Indice]
[Successivo: Ancore]
PF: Scrub (Packet Normalization)
Indice
Introduzione
Lo "Scrubbing" è la cosìdetta normalizzazione dei pacchetti, la quale
consente di evitare che vi siano, per il destinatario finale, delle
ambiguità nell'interpretazione del pacchetto. Inoltre la direttiva
scrub riassembla pacchetti frammentati, protegge alcuni sistemi
operativi da alcuni tipi di attacchi e getta via i pacchetti TCP che
hanno combinazioni di flag non
valide. Una forma semplice della direttiva scrub è la seguente:
scrub in all
Questa direttiva eseguirà lo scrub per tutti i pacchetti in ingresso su
tutte le interfaccie.
Una ragione per non eseguire lo scrub su una interfaccia può essere la
necessità di far transitare l'NFS attraverso PF. Alcune piattaforme
non OpenBSD inviano e ricevono strani pacchetti frammentati con il bit
"non frammentare" attivo, questi sono respinti da scrub.
Per consentire il passaggio si può usare l'opzione no-df.
Un'altra ragione può essere legata a problemi riscontrabili nel far
passare attraverso lo scrub alcune connessioni di giochi
multi-player. Tranne che in questi casi molto particolari , lo
scrubbing di tutti i pacchetti è una pratica
decisamente raccomandata.
La sintassi della direttiva scrub è molto simile alla sintassi
di filtraggio e quindi è molto semplice
effettuare uno scrub selettivo per alcuni pacchetti e non per altri.
La keyword no può essere usata davanti a scrub
per specificare i pacchetti che non dovranno essere sottoposti allo
scrub. Proprio come per le regole di
nat rules, la prima regola che ha una
corrispondenza "vince".
Maggiori principi e concetti relativi allo scrubbing si possono trovare
nei documenti
Network Intrusion Detection: Evasion, Traffic Normalization, and
End-to-End Protocol Semantics.
Opzioni
Lo scrub ha le seguenti opzioni:
- no-df
- Cancella i bit non frammentare dall'header del pacchetto
IP. Alcuni sistemi operativi sono noti per generare pacchetti
frammentati con il bit non frammentare settato. Questo vale in
modo particolare per l'NFS. Se non si specificasse l'opzione
no-df, scrub getterebbe via questi tipi di pacchetti.
Siccome alcuni sistemi operativi generano pacchetti
non frammentare con zero nel campo dell'header identificazione
IP, si raccomanda di utilizzare no-df insieme all'opzione
random-id.
- random-id
- Nel caso di sistemi operativi poco sicuri in termini di
predizione di alcune variabili, l'opzione random-id sostituisce il
campo identificazione IP dei pacchetti in uscita con un valore random.
Si applica solo a pacchetti in uscita non frammentati dopo l'eventuale
packet reassembly.
- min-ttl num
- Rafforza un minimo Time To Live (TTL) negli header dei
pacchetti IP.
- max-mss num
- Rafforza un massimo Maximum Segment Size (MSS) negli header dei
pacchetti TCP.
- fragment reassemble
- Effettua il buffer di frammenti di pacchetto e li riassembla
prima dell'operazione di filtraggio. Il vantaggio è che il
filtro ha a che fare solo con pacchetti completi e può ignorare i
frammenti. Lo svantaggio è l'incremento di memoria necessario per il
buffer dei pacchetti frammentati. Questo è il comportamento di default
quando non è specificata l'opzione fragment. Questa è anche
l'unica opzione fragment che funziona con la NAT.
- fragment crop
- Getta via i frammenti duplicati e ripulisce ogni sovrapposizione.
A differenza di fragment reassemble, i frammenti non sono
bufferizzati ma vengono processati non appena arrivano.
- fragment drop-ovl
- Simile a fragment crop eccetto che tutti i frammenti
duplicati o sovrapposti saranno gettati insieme a tutti i frammenti
simili successivi.
- reassemble tcp
- Le connessioni statefully sono per loro natura normalizzate.
Quando si utilizza scrub reassemble tcp, può non essere
specificata una direzione (in/out). Sono eseguite le seguenti
normalizzazioni:
- A nessun lato della connessione è consentito di ridurre il
loro IP TTL. Tutto questo per proteggere da un attaccante che invia un
pacchetto che raggiunge il firewall e potenzialmente può avere effetto
sulla tenuta delle informazioni di stato ed esaurisce il TTL prima di
raggiungere l'host destinatario. Il TTL di tutti i pacchetti viene
portato al massimo valore possibile.
- Modula il timestamp
RFC1323
negli header dei pacchetti TCP con un numero random. Questo evita
che un osservatore possa dedurre il tempo di login di un host o
intuire il numero di host al di là del gateway NAT.
Esempi:
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
[Precedente: Opzioni Runtime]
[Indice]
[Successivo: Ancore]
www@openbsd.org
$OpenBSD: scrub.html,v 1.4 2008/02/22 10:12:26 tobias Exp $