Groupe d'Utilisateurs de Logiciels Libres
de Nancy et ses environs

MirabellugWiki

Iptables

PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 38.107.191.92

Configurer un firewall avec iptables



Rappel sur les réseaux IP


Un réseau IP est un ensemble de machines reliées entre elles par divers médias réseau (câble, fibre optique, faisceaux hertziens ...). Chaque machine est identifiée par une ou plusieurs adresses IPs. Cette adresse IP est le moyen de parler à une machine. Par analogie, c'est un peu son numéro de téléphone.

L'adresse IP (dans sa version 4), est un ensemble de 4 nombres de 32 bits (soit des nombres de 0 à 255). On associe en général cette adresse à un masque de sous-réseau permettant d'en déduire l'adresse du réseau auquel appartient la machine. En appliquant un ET logique binaire entre l'adresse IP et le masque de sous-réseau, on en déduit l'adresse du réseau.

Par exemple, si on prend le cas classique d'un réseau privé, l'adresse d'une machine peut être 192.168.1.12 avec un masque de 255.255.255.0 (soit 24 bits mis à 1 et 8 bits à 0). Si on fait le ET logique binaire entre l'adresse de la machine et le masque, on obtient 192.168.1.0. Le calcul est facile dans le cas de masque multiple de 8 bits (255.0.0.0, 255.255.0.0, 255.255.255.0 ...) mais il faut savoir qu'il est possible d'avoir des masques d'un nombre quelconque de bits. On prend alors une autre dénomination en /xx où xx est le nombre de bits mis à 1 dans le masque. Pour reprendre le premier exemple, il peut s'écrire 192.168.1.12/24.

Le nombre d'adresse disponible dans un réseau donné est donné par le calcul suivant :

2^(32-taille du masque)-2


Soit 254 pour un masque de 24, 126 pour un masque de 25, 2 pour un masque de 30, etc ... Le paramètre -2 correspond à deux adresses particulières de la plage d'adresses, la première qui correspond à l'adresse du réseau, et la dernière qui correspond à l'adresse de broadcast. Toujours en reprenant notre exemple, l'adresse du réseau de la machine 192.168.1.12/24 est 192.168.1.0 et l'adresse de broadcast est 192.168.1.255.

Tout ça pour dire qu'une machine ne peut dialoguer qu'avec une machine appartenant à son propre réseau. Ainsi la machine 192.168.1.12/24 peut dialoguer avec 192.168.1.13/24 mais pas avec 192.168.2.25/24 qui appartient au réseau 192.168.2.0. C'est là qu'intervient la table de routage.

La table de routage est la carte routière des réseaux. C'est elle qui va dire qui contacter pour aller sur tel ou tel réseau. En général, une table de routage contient au minimum une route pour les réseaux auxquelles appartient la machine, et une route par défaut, qui est la route empruntée si jamais aucune autre route ne convient.

Analysons une table de routage d'une machine ayant l'adresse IP 10.70.30.128/24 :

Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
10.70.30.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.70.30.1      0.0.0.0         UG    0      0        0 eth0


La première ligne correspond au réseau auquel appartient la machine. Pour joindre ce réseau, il faut passer par l'interface eth0 directement (Passerelle = 0.0.0.0).

La deuxième ligne correspond au loopback (notion non abordé dans cet article).

La troisième ligne correspond à la route par défaut (Destination = 0.0.0.0). Ainsi, si jamais on veut joindre une machine n'appartenant pas au deux réseaux précédents, il faut contacter la machine 10.70.30.1 en passant par l'interface eth0.

La machine 10.70.30.1 est donc à priori une machine connecté à plusieurs réseaux, permettant ainsi de "forwarder" les paquets IP entre plusieurs réseaux. Nous retrouverons cette notion un peu plus loin au moment de présenter le couple iptables/netfilter.

Netfilter


Iptables fait partie du projet Netfilter. Netfilter est un vaste projet qui a pour objectif essentiel de fournir à Linux un ensemble d'outils pour réaliser un routeur firewall avancé.

Le projet peut se diviser en deux parties :

  • La partie filtrage proprement dite qui se trouve directement intégrée au noyau Linux soit sous forme de modules (ip_conntrack_*, ip_nat_*, ipt_*, etc ...), soit compilée directement dans le noyau lui même.
  • Les outils de configuration : le célèbre iptables pour la configuration du firewall (pour les version 2.4.x et à priori 2.6.x. du noyau) et des règles de translation d'addresse (NAT, Masquerading).

Le parcours d'un packet au milieu du noyau Linux


Les principes de base d'un bon firewall


Iptables par l'exemple


Liens


Il y a un commentaire sur cette page. [Afficher commentaires/formulaire]