Il existe deux types de pare-feu : les pare-feu matériels et les pare-feu logiciels. Les pare-feu matériels se présentent sous forme d'un boîtier. Il n'y a pas vraiment de différence importante au niveau de l'architecture par rapport aux pare-feu logiciels ; Les pare-feu matériels sont dépendants d'un matériel propriétaire spécifique. Les pare-feu logiciels permettent de transformer un PC classique (ou un Mac...) en véritable pare-feu à part entière, à la restriction près que l'OS sous-jacent possède des failles inhérentes à un OS généraliste, pouvant inhiber le rôle de pare-feu attribué à la machine.
Un aspect dangereux des pare-feu logiciels est que l'on peut installer d'autres composants logiciels de sécurité sur le même PC, par exemple un anti-virus ou un IDS, et ce pour des raisons de coût. Cette solution, bien qu'apparemment satisfaisante pour plusieurs entreprises, peut éventuellement être nuisible au principe même de sécurité, car une fois qu'un PC regroupant toutes ces fonctions est compromis, l'ensemble des défenses qu'il assurait sont mises en échec. Tous les firewalls présentés ci dessous sont à filtrage dynamique (ou Stateful Multi-layer Inspection).
3.4.1Netfilter
Linux contient un module destiné au filtrage réseau, Netfilter[7]. Il se configure au moyen d'un outil appelé iptables.Netfilter est un pare feu logiciel, il travaille sur des paquets réseaux.
Fonctionnement La couche réseau Linux présente plusieurs points d'accès (en anglais hook). Aux points d'accès sont associées des tables12 de traitement. A l'intérieur des ces tables, on peut trouver plusieurs chaînes13. Ce sont elles qui contiendront les règles à appliquer aux paquets. Concrètement, lorsqu'un paquet réseau atteint un point d'accès, on transmet le paquet à ces chaînes de traitement. Un paquet passe toujours tout d'abord par l'une de ces 3 chaînes :
INPUT : un paquet à destination du système entrant dans une interface
OUTPUT : un paquet généré par le système sortant par une interface
FORWARD : un paquet traversant le système
Les principales cibles sont :
ACCEPT : le paquet est accepté,
DROP : le paquet est ignoré,
RETURN : fin du sous-programme courant ou application de la politique par défaut pour INPUT, OUTPUT et FORWARD,
REJECT : le paquet est rejeté avec un message d'erreur,
Les règles sont évaluées séquentiellement. Le format d’une règle est le suivant :
Table .
Netfilter offre des mécanismes de gestion des règles de contrôle d’accès intéressants. Il offre la possibilité de configurer nos règles avec les trois solutions envisagées. En effet, Il permet de créer des chaînes de règles indépendantes que l’on peut atteindre grâce au mécanisme « jump ». De plus il possède une commande très récente le « iprange » qui nous permet de spécifier un intervalle d’adresse.
3.4.2IPFilter
IPFilter[8] est une application qui est intégrée sur les systèmes d'exploitation FreeBSD, NetBSD. Le programme IPFilter peut s'exécuter dans le noyau ou sous forme de module. Le lancement du firewall doit se faire lors du démarrage de la station dans le noyau. Cette méthode est préconisée en exploitation pour s’assurer de ne rien laisser passer tant que les règles ne sont pas chargées.
Fonctionnement Le filtrage s’effectue sur le flux entrant et sur celui sortant. Ce qui signifie que pour les paquets transmis d’une interface réseau à une autre, IPFilter évalue successivement la chaîne in de l’interface entrante puis la chaîne out de l’interface sortante. Les règles forment des listes d’accès ou ACL (Access Control List) qui sont spécifiés dans un fichier de configuration. Avec IPfilter, les règles sont traitées dans un ordre séquentiel et sont donc lues du début à la fin.
Les versions d'IPFilter sont basées sur la logique 'la dernière règle qui matche l'emporte' mais IPFilter a introduit l'option 'quick' qui permet de sortir du fichier si une règle est matchée. Le fonctionnement filtrage dynamique se fait avec l'option 'keep state'.
La syntaxe est aisément compréhensible et le format d’une règle est :