Packet Filter

Packet Filter

Packet Filter (ou PF) est le pare-feu logiciel et officiel d'OpenBSD, écrit à l'origine par Daniel Hartmeier. C'est un logiciel libre gratuit.

Il remplace IPFilter de Darren Reed depuis la version 3.0 d'OpenBSD, suite à des problèmes de licence, mais aussi des refus systématiques de Reed d'incorporer des modifications de code venant de développeurs OpenBSD.

Il a été porté sur DragonFly BSD 1.2 et NetBSD 3.0 ; il est fourni en standard sur FreeBSD (version 5.3 et ultérieures).

Un port gratuit de PF a également été réalisé pour les systèmes d'exploitation Windows 2000 et XP par la communauté Core FORCE. Ce port n'est cependant qu'un pare-feu personnel : il n'implémente pas les fonctions de PF permettant de faire du NAT ou d'utiliser ALTQ

Sommaire

Gestion de la bande passante

Depuis OpenBSD 3.0, la Mise en queue alternée ALTQ fait partie du système de base.

Depuis OpenBSD 3.3, ALTQ a été intégrée dans PF.

L'implémentation de ALTQ dans OpenBSD supporte les algorithmes de Mise en Queue par classes (CBQ) et de Mise en Queue par priorité (PRIQ), mais aussi la Détection Aléatoire Anticipée (RED) et la Notification de Congestion Explicite (ECN).

L'intégration de ALTQ dans PF permet entre autres de définir la priorité d'un trafic dans le filtre qui l'autorise.

Voir : PF : Gestion de La Bande Passante

Ceci permet par exemple :

  • de rendre HTTP prioritaire par rapport à SMTP si vous voulez rendre le surf sur internet prioritaire à l'envoi de mails ;
  • de rendre les petits paquets d'acquittements prioritaires sur les autres paquets, ce qui est très pratique pour les accès à Internet asymétriques (ADSL…) ;
  • de réserver des bandes passantes minimums pour des applications temps réels comme la VoIP.

Particularités

  • Le chargement de la configuration est atomique : si une erreur de syntaxe ou de cohérence est trouvée dans le fichier configuration lors de la lecture des règle, alors le pare-feu n'est pas modifié. Quasiment aucun pare-feu commercial n'implémente de solution de ce type ;
  • Grâce à la Gestion de La Bande Passante et l'intégration de ALTQ, Packet Filter offre un contrôle souple des flux et des performances réseau ;
  • Pour des raisons de sécurité, PF ne fait pas d'inspection de service (comme FTP, RPC) dans le noyau. En effet l'inspection de service étant complexe, tout bogue pourrait permettre la prise de contrôle de la machine. Pour faire de l'inspection de service, il faut installer un proxy qui lui tourne dans l'espace utilisateur ;
  • Les développeurs ont fourni un effort important pour rendre la syntaxe lisible, souple et claire (les erreurs de configuration représentant un danger majeur pour la sécurité d'un pare-feu) ;
  • Grâce à l'utilisation combinée de pfsync et CARP, PF peut utiliser de la redondance pour assurer de la haute disponibilité ;
  • Le fait que PF (comme IPF) ne fasse pas d'inspection de service, mais impose l'utilisation de proxy est gênant quand il manque un proxy pour un protocole. Par exemple, il n'y a pas de proxy pour les protocoles basés sur RPC, ni pour le protocole UPnP (Universal Plug and Play) ;
  • Comme la plupart des pare-feu libres, PF ne gère pas IPsec, les proxys, les IDS, les serveurs d'authentification et plein d'autres technologies que les pare-feu commerciaux ont l'habitude de gérer. Pour faire cela, il faut utiliser d'autres modules BSD qui se configurent à part ;
  • Les IDS et logiciels antivirus conçus pour une intégration étroite avec les logiciels pare-feu supportent rarement PF (et plus généralement, les pare-feu des systèmes BSD) ;

Commandes et paramètres

Quelques exemples d'utilisation de pfctl, l'outil d'administration en ligne de commande des pare-feu utilisant PF :

Commande Action
pfctl -e Active Packet Filter.
pfctl -d Désactive Packet Filter.
pfctl -f <fichier> Charge les règles décrites par le fichier dans PF. Si une seule erreur de syntaxe est trouvée dans le fichier, rien n'est changé.
pfctl -s nat Affiche les règles de NAT activées.
pfctl -s rules Affiche les règles de filtrage activées.

Exemple de configuration

Explications élémentaires sur la syntaxe :

  • les valeurs des macros sont automatiquement substituées lors de l'évaluation de la configuration ;
  • la syntaxe $interface:network se voit automatiquement substituer l'adresse du réseau attachée à $interface ;
  • le mot clef « egress » est automatiquement remplacé par le nom de l'interface à laquelle est attachée la route par défaut, et « (egress) » par son IP. Ces valeurs sont mises à jour dynamiquement en cas de changement.


# Macros
int_if="rl0"
ports_ouverts_pour_tous="{ http https }"
ports_ouverts_pour_lequipe="{ ssh 21 60000:60100 }"

# Tables
table <ip_de_lequipe> { XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX, XXX.XXX.XXX.XXX }

# Normalisation du trafic
scrub in no-df

# NAT
nat on egress -> (egress)

# Règles de filtrage
block in
pass out keep state
pass in on egress proto tcp from <ip_de_lequipe> to port $ports_ouverts_pour_lequipe
pass in on egress proto tcp to port $ports_ouverts_pour_tous
block in quick on $int_if proto tcp from $int_if:network to port 4662
pass quick on !egress

Voir aussi

Les autres pare-feu libres

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Packet Filter de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Packet Filter — Запрос «PF» перенаправляется сюда; см. также другие значения. Packet Filter (PF) Тип Межсетевой экран Разработчик проект OpenBSD Операционная система BSD системы Последняя версия 4.8 (1 ноября 2010 года) …   Википедия

  • packet filter —    The ability to search a packet to determine its destination and to then route it accordingly …   IT glossary of terms, acronyms and abbreviations

  • Berkeley Packet Filter — The Berkeley Packet Filter or BPF provides, on some Unix like systems, a raw interface to data link layers, permitting raw link layer packets to be sent and received. In addition, if the driver for the network interface supports promiscuous mode …   Wikipedia

  • BSD Packet Filter — Le filtre BPF (Berkeley Packet Filter) est un langage permettant de filtrer les paquets échangés sur un réseau. Ce langage est utilisé entre autres par des logiciels spécialisés dans l analyse d échanges réseau (exemples : ngrep, tcpdump,… …   Wikipédia en Français

  • Packet capture — is the act of capturing data packets crossing a computer network. Deep packet capture (DPC) is the act of capturing, at full network speed, complete network packets (header and payload) crossing a network with a high traffic rate. Once captured… …   Wikipedia

  • Packet analyzer — A packet analyzer (also known as a network analyzer, protocol analyzer, or sniffer, or for particular types of networks, an Ethernet sniffer or wireless sniffer) is a computer program or a piece of computer hardware that can intercept and log… …   Wikipedia

  • packet-level filter —    A category of firewall that provides a high degree of convenience, but a relatively low level of security. A packet level filter blocks or forwards a packet solely on its merits, without taking into account past history; the filter may also… …   Dictionary of networking

  • packet filtering —    A process used by bridges to limit protocol specific traffic to one segment of the network, to isolate e mail domains, and to perform other traffic control functions. The network administrator sets the packet filtering specifications for each… …   Dictionary of networking

  • Content-filter — Eine externe (Netzwerk oder Hardware ) Firewall (von engl. firewall [ˈfaɪəwɔːl] „die Brandwand“) stellt eine kontrollierte Verbindung zwischen zwei Netzen her. Das könnten z. B. ein privates Netz (LAN) und das Internet (WAN) sein; möglich ist… …   Deutsch Wikipedia

  • BPF filter — BSD Packet Filter Le filtre BPF (BSD Packet Filter) est un langage permettant de filtrer les paquets échangés sur un réseau. Ce langage est utilisé entre autres par des logiciels spécialisés dans l analyse d échanges réseau (exemples : ngrep …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”