[OpenBSD]

[Précédent : Options de Fonctionnement] [Index] [Suivant : Ancres]

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. Le mot-clé no peut être utilisé devant la directive scrub pour ne pas normaliser certains paquets. La première règle correspondante est appliquée, comme pour les règles nat.

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éro 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 avec des valeurs aléatoires pour contourner les valeurs prévisibles utilisées par certains systèmes d'exploitation. Cette option s'applique aux paquets 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 :

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]


[back] www@openbsd.org
$OpenBSD: scrub.html,v 1.18 2008/01/13 13:43:35 tobias Exp $