Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Bienvenue sur le blog de Dominique Informatique.

Vous trouverez ici des infos sur la sécurité informatique et les outils de sécurisation des réseaux.
Bonne visite a vous.

Recherche

15 juillet 2005 5 15 /07 /juillet /2005 00:00
Iptables / Netfilter

0) Introduction

Cette page a pour but d'expliquer la structure d'une règle Iptables.
Une bonne connaissance de TCP/IP est requise pour comprendre la suite de ce document.
Ce document n'explique pas toutes les fonctions d'Iptables, il ne donne que les principales nescessaires à la mise en place
d'un parefeu (firewall) avec la translation d'adresse IP (NAT)

1) Fonctions de Netfilter.

D'après le manuel, Iptable permet de mettre en place, maintenir et inspecter des règles de filtrage de paquet dans le noyau Linux.
Iptables nous permet de controler les paquets IP transitant par une machine Linux. On peut décider si un paquet IP peut passer ou pas
en fonction de critères paramétrables (les règles de filtrage). Ce controle permet aussi de rediriger les paquets vers une autre destination,
de suivre les connexions TCP/IP et bien d'autre choses.

2) Commandes iptables.

iptables -A chaine règle  : ajoute une règle à la chaine
iptables -D chaine règle  : efface la règle dans la chaine
iptables -F chaine  : efface toutes les règles de la chaine

3) Structure des régles Iptables.

iptables  ( table )  ( chaine )  ( Parametres de correspondance )  ( cible )

La règle ci-dessus présente les éléments typiques. La table indique les actions possibles avec le paquet IP.
La chaine indique a quel moment l'on controle le paquet. Les paramètres de correspondance sont testés
contre le paquet IP pour déterminer si la règle doit lui être appliqué ou pas, exemple : teste de l'adresse
source du paquet IP. La cible indique l'action a effectuer sur le paquet si les paramètres de correspondances
sont vérifiés.

4) Elements d'Iptables.

les chaines :  
  • INPUT  : le paquet entre dans la machine.
  • PREROUTING  : le paquet est entré, et il va être routé.
  • FORWARD  : le paquet est routé.
  • POSTROUTING  : le paquet a été routé mais n'est pas encore sorti.
  • OUTPUT  : le paquet sort de la machine.
les tables :  
  • filter : (table par defaut) Cette table est utilisé pour filtrer les paquets, il est possible d'utiliser les chaines INPUT, FORWARD, OUTPUT
  • nat : Cette table est utilisé lorsque un paquet crée un nouvelle connexion, il est possible d'utiliser les chaines PREROUTING, POSTROUTING, OUTPUT
Les paramètres de correspondances :

[!] signifie qu'il est possible d'inverser le test en ajoutant le caractère ! dans la ligne de paramètre.

  • -s [!] source (adresse IP)  : teste l'adresse source du paquet IP
  • -d [!] destination (adresse IP)  : teste l'adresse destination du paquet IP
  • -i [!] interface  (nom d'interface)  : teste l'interface d'entrée du paquet, valable pour les chaines INPUT, PREROUTING, FORWARD.
  • -o [!] interface (nom d'interface)  : teste l'interface de sortie du paquet, valable pour les chaines FORWARD, POSTROUTING, OUTPUT

Extentions de correspondance

Les extentions sont des modules additionnels d'iptables. Ils sont chargés implicitement ou avec l'option -m.

  • -m --state état-de-connexion  : Ce module permet de tester l'état de la connexion TCP/IP
  • -p tcp  : Ce module permet de tester les indicateurs du protocole TCP.
-p tcp --sport [!] port[:port]  : teste le ou un interval de port source du paquet IP.
-p tcp --dport [!] port[:port] : teste le ou un interval de port destination du paquet IP
  • -p udp  : Ce module permet de tester les indicateurs du protocol UDP
-p udp --sport [!] port[:port]  : teste le ou un interval de port source du paquet IP.
-p udp --dport [!] port[:port]  : teste le ou un interval de port destination du paquet IP


Les Cibles

La cible indique l'action a effectuer sur le paquet si les paramètres de correspondances sont vérifiés.

-j ACCEPT  : signifie que le paquet est autorisé à passer.
-j DROP  : signifie que le paquet est détruit.

Extentions de cible

-j DNAT --to-destination adresse-IP:port  : Cette cible modifie l'adresse de destination:port du paquet IP par celle fourni. Cette cible permet de rendre accessible depuis Internet, un serveur dans un réseau privé.

ex : iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80  -> cette règle redirige les paquets à destination du port 80 (http) entrant sur l'interface ppp0 (modem connecté a internet), vers le serveur web à l'adresse 192.168.0.1

-j SNAT --to-source adresse-IP  : Cette cible modifie l'adresse IP source du paquet IP par celle fourni. Cette cible permet de camoufler un réseau derrière une adresse IP. Si vous connectez votre réseau privé à Internet, assurez vous d'avoir une adresse IP fixe pour utiliser la cible SNAT.

ex  : iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 162.230.10.25  

-j MASQUERADE  : Cette cible est utilisé pour connecter un réseau privé à Internet. A utiliser dans le cadre où votre adresse IP vous est fourni dynamiquement par votre FAI.

ex : iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

5)  Divers autres

Activation du routage par le noyau Linux :
Permet au noyau Linux de faire transiter les paquets entres ses interfaces réseaux.
echo 1 > /proc/sys/net/ipv4/ip_forward

Partager cet article
Repost0

commentaires

Articles RÉCents

Liens