[Abstract] [Copyright Notice]

Firewalling sous Linux - Chapitre 5
Ipchains



5.1 Présentation générale

Le code d'ipchains a été inclus dans le noyau Linux à partir de la version 2.1.102 (mi-mai 1998).

Ipchains descend du code de firewalling de Linux pour IPv4 (emprunté principalement de BSD), et est une réécriture d'ipfwadm (lui-même issu d'ipfw de BSD). Il permet l'administration du filtrage des paquets IP et du masquerading (NAT) dans les noyaux Linux 2.2.x.

Ipchains est actuellement la référence en matière de firewalling sous Linux. Il est largement utilisé dans le monde entier.

Il est arrivé à maturité et n'évoluera plus, puisqu'en passe d'être remplacé par son successeur, netfilter.

L'ancien code de firewalling de Linux ne pouvait gérer les fragments, utilisait des compteurs 32 bits (au moins sur Intel), ne permettait pas la spécification de protocoles autres que TCP, UDP ou ICMP, gérait mal l'atomicité des changements, et sa syntaxe parfois ambiguë pouvait représenter une source d'erreurs potentielles pour ses utilisateurs.


5.2 Points positifs


5.3 Points positifs


5.4 Architecture et fonctionnalités


5.4.1 Description des fonctionnalités offertes

Ipchains est le firewall Linux disponible pour les noyaux 2.2.x. Elle permet de spécifier les règles de filtrage et de translation d'adresses (NAT, ou masquerading sous Linux).

Ipchains permet le filtrage des paquets UDP, TCP et ICMP en choisissant d'accepter ces derniers, de les refuser, ou de les ignorer, d'après un certain nombre de paramètres (adresses et ports source/destination, interface, fragmentation, etc.). D'autre part, il assure le masquerading des connexions sortantes, permettant typiquement à des machines situées sur un réseau interne à classe d'adresses privées (non routées sur Internet) d'accéder à l'extérieur par l'intermédiaire du firewall.


5.4.2 Description des composantes du logiciel

Ipchains est le nom de la commande d'administration du firewall du noyau Linux 2.2. Elle s'appuie sur le code du noyau permettant d'effectuer un certain nombre d'actions à des endroits clé de la traversée de paquet dans la pile de protocole.


5.4.3 Cadre d'utilisation conseillé

L'usage de la commande ipchains est exclusivement réservé à l'administrateur. La machine sur laquelle elle est installée (le firewall) ne doit théoriquement héberger aucun service, ce qui limite les risques potentiels d'intrusion. Le firewall est en prise directe avec la connexion Internet, et tout le trafic entre l'Internet, le réseau interne et la zone "démilitarisée" (DMZ) doit passer par lui, afin de garantir un contrôle total sur les différents échanges.


5.4.4 Distribution


5.5 Description des fonctionnalités d'ipchains

Le fonctionnement d'ipchains est assez basique.

Chaque règle énonce en substance : « si l'en-tête de ce paquet ressemble à ceci, alors voici quoi faire de ce paquet ».

Si le paquet n'est pas conforme à la règle examinée, alors la règle suivante de la chaîne est consultée. Enfin, s'il n'y a plus de règles à consulter, le noyau applique la politique par défaut de la chaîne. Sur tout système dignement sécurisé, cette politique par défaut indique généralement au noyau de rejeter ou de refuser le paquet.


5.5.1 Critères de correspondance des paquets

Ipchains permet la manipulation des règles. Une règle est soit une règle de filtrage soit de masquerading.

Les critères permettant de déterminer si le paquet est conforme au "moule" désiré (et doit alors être accepté, refusé, rejeté, ou masqueradé) sont les suivants :

Ensuite, les critères additionnels dépendent du protocole.


5.5.1.1 Pour TCP :


5.5.1.2 Pour UDP :


5.5.1.3 Pour ICMP :


5.6 Exemples de règles

Autoriser les paquets http (TCP, port 80) à destination de la machine 192.81.19.2 :

ipchains -A forward -p tcp -d 192.81.19.2 www -j ACCEPT
Refuser les paquets DNS (UDP, port 53) venant de la machine 192.168.2.1 :
ipchains -A forward -p tcp -s 192.168.2.1 domain -j DENY
Masquerader les paquets ping (ICMP) venant du sous-réseau 172.16.0.0 (de masque 255.255.0.0) :
ipchains -A forward -p icmp --icmp-type ping -s 172.16.0.0/16 -j MASQ


[Abstract] [Copyright Notice]

Firewalling sous Linux
Hervé Eychenne herve.eychenne@alcove.fr