Table des matières
Le filtrage sera mis en place sur la machine hôte, c'est à dire qu'on contrôlera tous ce qui passera entre l'interface réseau de la machine hôte, et celle de la machine virtuelle.
Netfilter peut intervenir en cinq endroits du système de gestion de la pile TCP/IP : Prerouting, Input, Forward, Output et Postrouting. Pour chacun de ces points, Netfilter associe une chaîne. Une chaîne est un ensemble de règles du type : si <condition> alors <action>, concernant les paquets IP. En fonction des différentes règles de la chaîne, Netfilter pourra décider que faire du paquet IP : le laisser passer, le supprimer ou le modifier.
Les règles, comme leur nom l'indique, sont une série de critères auquel doivent ou non répondre les paquets. Si le paquet réseau ressemble à l'un ou l'autre des critères, alors la règle est appliquée. Les différentes règles d'une chaînes sont appliquées les unes à la suite des autres. Les critères peuvent être multiples :
Interface source ou destination ;
Adresse IP source ou de destination ;
Port source ou de destination ;
Type de trame ;
Nombre de paquets ;
etc.
Il peut y avoir autant de règles que l'on veut dans une chaîne, mais il est intéressant de limiter au maximum leur nombre, afin d'avoir une vue claire et précise de notre système de filtrage.
A chaque règle est associée une action (ou cible dans le langage Netfilter) à effectuer si la règle doit s'appliquer. C'est là que Netfilter agit, qu'il fait quelque chose avec le paquet réseau.
Comme nous l'avons vu précédemment (voir la section intitulée « La table Filter »), la table Filter travaille sur trois chaînes principales : Input, Output et Forward.
INPUT : Les paquets sont filtrés lorsqu'ils arrivent sur l'interface réseau, et ceci dans les deux sens.
OUTPUT : Les paquets sont filtrés lorsqu'ils sortent de l'interface réseau, et ceci dans les deux sens.
FORWARD : Les paquets sont filtrés lorsqu'ils traversent la machine (il peut s'agir de filtre en entrée d'interface, comme en sortie d'interface).
Il est possible à l'utilisateur, au root pour être précis, de créer ses propres chaînes. Ce sont les chaînes utilisateurs. Elles peuvent être utilisées par une chaîne en particulier ou être appelées par plusieurs chaînes.
Les principales cibles utilisables dans les chaînes utilisateurs sont :
ACCEPT : la cible ACCEPT permet, lorsqu'elle est appliquée à une règle, d'accepter les paquets qui correspondent à cette règle.
REJECT : la cible REJECT permet, lorsqu'elle est appliquée à une règle, de refuser un paquet, mais en avertissant le demandeur que sa demande de connexion lui a été refusée en lui envoyant un paquet RESET (RST).
DROP : la cible DROP permet, lorsqu'elle est appliquée à une règle, de refuser un paquet, mais sans avertir le demandeur que sa demande de connexion lui a été refusée.
RETURN : la cible RETURN marque la fin du sous-programme courant ou application de la politique par défaut pour INPUT , OUTPUT et FORWARD,
LOG : LOG journalise le paquet,
QUEUE : le paquet est redirigé vers une application utilisateur.