BSD Packet Filter

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le filtre BPF (Berkeley Packet Filter) est un langage permettant de filtrer les paquets échangés sur un réseau. Il est maintenu et a été conçu par les chercheurs du Laboratoire national Lawrence-Berkeley (Drapeau des États-Unis États-Unis).

Ce langage est utilisé entre autres par des logiciels spécialisés dans l'analyse d'échanges réseau (exemples : ngrep, tcpdump, snort, ntop) et sert à sélectionner des données transitant sur un réseau selon des critères précis, par exemple :

  • Qui (quel est l'hôte qui) envoie les données ?
  • Qui (quel est l'hôte qui) reçoit les données ?
  • Quel est le protocole (Protocole réseau) utilisé ?
  • Vers et depuis quel port sont envoyées les données ?
  • etc.

Description[modifier | modifier le code]

Une expression consiste en une ou plusieurs primitives.

Une primitive consiste en un id (nom ou nombre) précédé par un ou plusieurs critères.

Il existe trois sortes de critères différents :

  • type
Ce critère indique à quoi correspond le nom ou nombre. Les types possibles sont host (pour hôte), net (pour réseau) et port.
Exemples : host ultra, net 192.168, port 20.
Si aucun critère type n'est spécifié, host sera utilisé.
  • dir
Ce critère permet de spécifier une direction : depuis (src) ou vers(dst) un id.
Les directions sont src, dst, src or dst et src and dst.
Exemples : src ultra, dst net 192.168, src or dst port ftp-data.
S'il n'y a pas de critère de direction de spécifié, src or dst sera utilisé.
  • proto
Ce critère permet de spécifier un protocole particulier. les protocoles possibles sont ether, fddi , ip, arp, rarp, decnet, lat, moprc, mopdl, tcp et udp.
Exemples : ether src ultra, arp net 192.168, tcp port 21.
Si aucun proto n'est spécifié, tous les protocoles cohérents avec le type seront pris en compte.
Exemples : net 192.168(ip or arp or rarp) net ,
port 53(tcp or udp) port 53.
Remarque: fddi est en réalité un alias pour ether; l'analyseur les traite de façon identique. Un en-tête FDDI contient des adresses ethernet source et destination et contient souvent un paquet de type ethernet. Vous pouvez donc filtrer sur les champs.
FDDI et de façon similaire sur les champs ethernet. Un en-tête FDDI contient évidemment d'autres champs, mais vous ne pourrez pas filtrer explicitement sur ces champs.

De plus, il existe quelques primitives ou mots clés spéciaux : gateway, broadcast, less, greater et d'autres expressions arithmétiques.

Exemples[modifier | modifier le code]

  • dst host {hote}
Vrai si le champ destinataire du paquet IP contient {hote}, lequel doit être un nom ou une adresse IP.
  • src net {reseau}
Vrai si l'adresse IP source (émettrice) du paquet appartient au réseau {reseau}.
  • greater {longueur}
Vrai si le paquet a une longueur supérieure ou égale à {longueur}.
  • etc.

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]