Outils pour utilisateurs

Outils du site


Ceci est une ancienne révision du document !


Le filtrage de paquets

Il y a de nombreuses raisons de faire un tel filtrage, tant en IPv4 qu'en IPv6, la plus souvent pour protéger les systèmes des agressions extérieures (pare-feu), mais pas seulement.

Pour cette étude, comme d'habitude, une maquette virtuelle fera l'affaire. Reprenons celle utilisée pour l'exposé sur DHCP: Maquette virtuelle La station qui fait office de routeur/DHCP/DNS va en plus devoir assurer la protection du LAN en vert, autant en IPv4 qu'en IPv6

Position du problème

Cette station doit:

  1. assurer le routage IPv4 avec un masquage d'adresses, nous avions vu pourquoi dans le chapitre sur l'ajout d'un routeur en IPv4,
  2. assurer la liaison avec la délégation du bloc IPv6 2a01:e0a:875:b1d2::/64, comme vu dans le chapitre sur Les préfixes secondaires en IPv6,
  3. assurer qu'il soit protégé des agressions de l'extérieur, LAN orange compris, sur ses services DHCP et DNS,
  4. être tout de même capable d'assurer les dialogues DNS pour la maintenance de son cache,
  5. assurer au moins un minimum de sécurité pour les clients IPv6 du LAN vert

Normalement, Netfilter doit permettre de répondre à toutes ces exigences.

Netfilter dans la pile IP

En tout état de cause, dans l'explication qui suit, quelles que soient l'origine des paquets qui entrent dans la pile de protocoles IP quelle que soit l'interface1) (enp1s0, enp7s0 et même l'interface «lo»2), ils vont le faire par le même point et ceux qui doivent en sortir vont le faire par le même autre point.  Les poignées de Netfilter Netfilter se présente comme une série de 5 “hooks” (points d'accrochage), sur lesquels des chaînes de traitement des paquets vont se greffer pour permettre le traitement plus ou moins complexe à réaliser. Ces points sont:

  1. NF_IP_PRE_ROUTING → PREROUTING
  2. NF_IP_LOCAL_IN → INPUT
  3. NF_IP_FORWARD → FORWARD
  4. NF_IP_LOCAL_OUT → OUTPUT
  5. NF_IP_POSTROUTING → POSTROUTING

Lorsqu'un paquet entre:

  • soit il entre pour accéder à un process local, par exemple pour mettre à jour le cache DNS, ou pour interroger ce même cache, ou informer du voisinage réseau IPv6,
  • soit il entre pour être routé dans l'autre réseau.

En se souvenant toujours que que les décisions à prendre suivront le même ordre, que ce soit enp1s0 en entrée et enp7s0 en sortie ou l'inverse.

Les poignées de Netfilter peuvent se présenter également ainsi: Les «hooks» de Netfilter Bien entendu, tout ceci est schématisé à l'extrême, dans le but de mettre en évidence les points où Netfilter est en mesure d'agir sur les paquets.

Les compétences de Netfilter

A travers ces cinq points d'insertion, Netfilter va être capable :

  • D'effectuer des filtrages de paquets, principalement pour assurer des fonctions de Firewall. On pourra par exemple interdire à tous les paquets s'adressant au port 23 (Telnet) de passer, mais pas ceux venant de la station d'administration du LAN vert, Telnet n'étant manipulable que par l'administrateur,
  • D'effectuer des opérations de NAT (Network Address Translation) Ces fonctions sont particulièrement utiles lorsque l'on veut faire communiquer tout ou partie d'un réseau privé, monté avec des adresses IP privées (192.168.x.x par exemple) avec l'Internet, comme nous l'avons déjà un peu mis en œuvre.
  • D'effectuer des opérations de marquage des paquets, pour leur appliquer un traitement spécial. Ces fonctionnalités sont particulièrement intéressantes sur une passerelle de réseau d'entreprise,  un peu moins pour notre cas de réseau domestique.

Pour réaliser ces opérations, Netfilter est en mesure d'écrire des chaînes de règles dans des tables. Il y a dans Netfilter trois tables qui correspondent aux trois principales fonctions: Les tables et les chaînes

  1. Le filtrage des paquets,
  2. la translation d'adresse,
  3. le marquage des paquets.

La table «Filter»

Cette table va contenir des règles de filtrage qui permettront d'agir sur l'avenir des paquets (les cibles) à savoir:

  1. ACCEPT: Le paquet est en règle et va pouvoir poursuivre son chemin;
  2. DROP: Le paquet n'a pas satisfait à l'examen. Il est jeté sans autre forme de procès;
  3. REJECT Ne s'adresse qu'aux paquets contenant du transport TCP. Le paquet est rejeté avec une notification à son émetteur s'il n'a pas passé l'examen.

La table «Filter» peut agir sur les poignées (Hooks):

  • la chaîne INPUT.
    Cette chaîne décidera du sort des paquets entrant localement sur l'hôte ;
  • la chaîne OUTPUT.
    Ici, ce ne sont que les paquets émis par l'hôte local qui seront filtrés ;
  • la chaîne FORWARD.
    Enfin, les paquets qui traversent l'hôte, suivant les routes implantées, seront filtrés ici.

La table «Nat»

Cette table manipule les adresses de l'émetteur ou du destinataire en fonction des critères indiqués dans les règles que l'on y inscrira. Les cibles possibles sont pour cette table:

  1. DNAT permet de changer l'adresse de destination spécifique au PREROUTING
  2. SNAT permet de changer l'adresse de la source spécifique au POSTROUTING
  3. MASQUERADE, nous l'avons évoqué, permet de remplacer l'adresse source par l'adresse de sortie de l'hôte qui effectue le filtrage. Ce n'est utilisable que dans le routage et spécifique au POSTROUTING
  4. REDIRECT permet de changer le port de destination, spécifique au PREROUTING

.

1)
Il faut bien comprendre cette subtilité: Le traitement se fait en entrée, en traversée ou en sortie, aussi bien dans un sens que dans l'autre.
2)
ce qui peut arriver si deux process distincts mais locaux tous les deux doivent communiquer entre eux par un socket réseau
Le cœur du système: Dernière modification le: 28/03/2025 à 17:38 par prof