[Précédent : Options de
Fonctionnement]
[Index]
[Suivant : Ancres et Bases de Règles
Nommées (Sub)]
PF : Scrub (Normalisation de Paquets)
Table des Matières
Introduction
Le "scrubbing" est la normalisation de paquets utilisée pour
supprimer toute ambiguïté dans l'interprétation d'un
paquet qui sera effectuée par la destination finale de ce
dernier. La directive scrub réassemble aussi des paquets
fragmentés, afin de protéger certains systèmes
d'exploitation de quelques types d'attaques. Cette directive rejette
aussi les paquets TCP contenants des combinaisons invalides de
drapeaux. Voici un exemple simple
d'utilisation de la directive scrub :
scrub in all
Ceci aura pour effet d'appliquer le "scrub" sur tous les paquets en
entrée de chaque interface.
Il existe des cas où il ne faut pas appliquer le "scrub". Par
exemple, une interface qui véhicule du trafic NFS à
travers PF. Certaines plates-formes non basées sur OpenBSD
envoient (et s'attendent à recevoir) des paquets étranges
-- des paquets fragmentés avec le bit "do not fragment" (ne pas
fragmenter) positionné, qui sont rejetés (comportement
normal) par scrub. On peut résoudre ce problème
en utilisant l'option no-df. Un autre exemple est l'utilisation
de jeux multi-joueurs qui ont des problèmes de connexion à
travers PF lorsque scrub est activé. Mis à part
ces cas quelque peu inhabituels, la normalisation de paquets "scrub" est
une pratique hautement recommandée.
La syntaxe de la directive scrub est très similaire
à la syntaxe de filtrage ce qui rend
aisé la normalisation de certains paquets et pas les autres.
Vous pouvez trouver plus d'informations concernant le principe et les
concepts de la normalisation de paquets dans l'article
Network Intrusion Detection: Evasion, Traffic Normalization, and
End-to-End Protocol Semantics.
Options
Les options de scrub sont les suivantes :
- no-df
- Supprime le bit don't fragment de l'en-tête du paquet
IP. Quelques systèmes d'exploitation sont connus pour
générer des paquets fragmentés avec le bit
don't fragment positionné. Ceci est
particulièrement vrai dans le cas de NFS. scrub va
bloquer tous les paquets qui sont dans ce cas sauf si l'option
no-df est spécifiée. Vu que certains
systèmes d'exploitation génèrent des paquets
don't fragment avec un champ d'identification à
zéeo au niveau de l'en-tête IP, il est
recommandé d'utiliser no-df conjointement avec
l'option random-id.
- random-id
- Remplace le champ d'identification IP des paquets sortants avec des
valeurs aléatoires pour contourner les valeurs
prévisibles utilisées par certains systèmes
d'exploitation. Cette option s'applique uniquement pour les paquets
sortants qui ne sont pas fragmentés après le
réassemblage optionnel des paquets.
- min-ttl num
- S'assure que le Time To Live (TTL) est au moins égal à
la valeur donnée en argument dans les en-têtes des
paquets IP.
- max-mss num
- S'assure que le Maximum Segment Size (MSS) est au plus égal
à la valeur donnée en argument dans les en-têtes
des paquets TCP.
- fragment reassemble
- Met dans une mémoire tampon les fragments de paquets et les
réassemble en paquet complet avant de les transmettre au
moteur de filtrage. Les règles de filtrage peuvent ainsi se
charger de filtrer le paquet complet sans se soucier des fragments.
L'inconvénient est la mémoire additionnelle
nécessaire pour le tampon contenant les fragments de paquets.
C'est le comportement par défaut lorsqu'aucune option
fragment n'est spécifiée. C'est aussi la
seule option fragment qui fonctionne avec la NAT.
- fragment crop
- Supprime les fragments dupliqués et tout chevauchement entre
fragment. Contrairement à fragment reassemble, les
fragments ne sont pas gardés en mémoire tampon mais
sont transmis dès leur arrivée.
- fragment drop-ovl
- Assez similaire à fragment crop. Tous les paquets
fragments de paquets dupliqués et se chevauchant sont
supprimés ainsi que tous les fragments suivants qui
correspondent à ces fragments.
- reassemble tcp
- Normalise de manière "stateful" les connexions TCP. Lorsque
scrub reassemble tcp est utilisée, une direction
(in/out) peut ne pas être spécifiée. Les
normalisations suivantes sont effectuées :
- Aucune extrêmité de la connexion n'est
autorisée à réduire le TTL IP. Cette
normalisation est appliquée pour assurer une
protection contre un attaquant qui envoie un paquet de telle
façon à ce que ce dernier atteigne le
pare-feu, affecte les informations d'état
mémorisées pour cette connexion, et expire
avant d'atteindre sa destination finale. Le TTL de tous les
paquets est positionné à la valeur la plus
haute observée pour la connexion.
- Module les "timestamps" RFC 1323 dans l'en-tête des
paquets TCP avec un nombre aléatoire. Ceci peut
empêcher un observateur de déduire le "uptime"
d'un hôte ou de deviner combien de hôtes sont
derrière une passerelle NAT.
Exemples :
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
[Précédent : Options de
Fonctionnement]
[Index]
[Suivant : Ancres et Bases de Règles
Nommées (Sub)]
www@openbsd.org
Originally [OpenBSD: scrub.html,v 1.8 ]
$Translation: scrub.html,v 1.3 2004/02/19 20:31:29 saad Exp $
$OpenBSD: scrub.html,v 1.3 2004/02/20 06:33:11 jufi Exp $