2. Page 2
I. INTRODUCTION
II. FONCTIONNEMENT DE IP-TABLES
1. Qu’est ce IP-TABLES?
2. Principe
3. les Tables , les chaines et les cibles
4. Diagramme de traitement des paquet
III. DEMONSTRATION
3. De nos jours, l’une des méthodes fondamentales de
sécurisation des réseaux informatiques est le filtrage
des paquets.
Aujourd’hui tout le monde sait ce que c’est qu’un firewall
ainsi que son utilité sur un réseau, un serveur ou même
un ordinateur personnel
Depuis la version 2.4, Linux contient un module destiné
au filtrage réseau: Netfilter. Il se configure au moyen
d'un outil appelé iptables.
Page 3
4. IPTables est un outil Linux (exclusivement) pour
gérer le pare-feu qui est intégré au noyau Linux 2.4
(et supérieur). L'architecture du noyau pour le
système de pare-feu s'appelle 'netfilter'.
Netfilter est un module, et fonctionne en mode
Noyau. C’est lui qui intercepte et manipule les
paquets IP avant et après le routage.
• IPTables est la commande qui permet de
Page 4
configurer Netfilter en espace Utilisateur.
5. • Lorsque la carte réseau reçoit un paquet celui-ci
Page 5
est transmis à la partie netfilter du noyau.
• Netfilter va ensuite étudier ce paquet (les entêtes
et le contenu) et en se basant sur des règles que
l'administrateur aura défini, il va choisir de laisser
passer le paquet intact, de modifier ce paquet,
de le transmettre à une autre machine ou encore
d'interdire le passage.
6. Tous les paquets inspectés par Netfilter passent à
travers des tables de traitement prédéfinies (queues).
est constituée d’un nombre arbitraire et non
est une suite de règles qui sont prises dans
l'ordre, dès qu'une règle correspond à un paquet, elle est
déclenchée, et la suite de la chaîne est ignorée.
Page 6
limité de chaînes.
est l’endroit où sera envoyé le paquet si le
motif de reconnaissance de là règle correspond et qui
donnera l’action a exécuter.
Nombre variable de critère permettant d’évaluer un paquet
7. Page 7
Tables Il existe trois principales tables
Table Description
filter Cette table permet de filtrer les paquets.
Typiquement ce sera pour les accepter ou non.
nat Avec cette table, on peut réaliser des translations
d'adresse (ou de ports).
mangle Règle pour la modification des paquets. Permet de
marquer les paquets (MARK), Modifier leur TTL, leur
TOS. On peut agir sur l’en-tête du paquet ainsi
qu’aux champs qui lui sont associé par le système
La table Raw est principalement utilisée pour placer des marques sur les paquets
qui ne doivent pas être vérifiés par le système de traçage de connexion. Ceci est
effectué en utilisant la cible NOTRACK sur le paquet. Si une connexion rencontre
une cible NOTRACK, conntrack ne tracera pas cette connexion
8. Page 8
Ce sont elles qui contiendront
les règles à appliquer aux paquets.
Chaines
Chaînes de Netfilter
Chaîne Table Description
PREROUTING
Mangle, nat
Par cette chaîne passeront les
paquets entrant dans la machine
avant routage.
INPUT
Filter, mangle
Cette chaîne traitera les paquets
entrants avant qu'ils ne soient
passées aux couches supérieures
(les applications).
FORWARD
Filter, mangle
Ce sont les paquets uniquement
transmis par la machine sans que
les applications n'en aient
connaissance.
OUTPUT
filter, nat, mangle
Cette chaîne sera appelée pour
des paquets envoyés par des
programmes présents sur la
machine.
POSTROUTING
Mangle, nat
Les paquets prêts à être envoyés
(soit transmis, soit générés) seront
pris en charge par cette chaîne.
9. Page 9
Il s'agit du traitement que l'on décide
d'appliquer au paquet Cible
Cible Description
ACCEPT Les paquets envoyés vers cette cible seront tout simplement acceptés et pourront
poursuivre leur cheminement au travers des couches réseaux.
DROP Cette cible permet de jeter des paquets qui seront donc ignorés.
REJECT
Permet d’envoyer une réponse à l’émetteur pour lui signaler que son paquet a été
refusé.
LOG
Demande au noyau d’enregistrer des informations sur le paquet courant. Cela se fera
généralement dans le fichier /var/log/messages (selon la configuration du programme
syslogd).
MASQUERADE
Cible valable uniquement dans la chaîne POSTROUTING de la table NAT Elle
change l’adresse IP de l’émetteur par celle courante de la machine pour l’interface
spécifiée. Cela permet de masquer des machines et de faire par exemple du partage
de connexion.
SNAT
Egalement valable pour la chaîne POSTROUTING de la table NAT seulement. Elle
modifie aussi la valeur de l’adresse IP de l’émetteur en la remplaçant par la valeur
fixe spécifiée.
DNAT
Valable uniquement pour les chaînes PREROUTING et OUTPUT de la table NAT.
Elle modifie la valeur de l’adresse IP du destinataire en la remplaçant par la valeur
fixe spécifiée.
RETURN
Utile dans les chaînes utilisateurs. Cette cible permet de revenir à la chaîne
appelante. Si RETURN est utilisé dans une des chaînes de base précédente, cela est
équivalent à l’utilisation de sa cible par défaut.
10. Page 10
Les options d’ IPtables
Options Rôle
-L Affiche toutes les règles de la chaîne indiquée.
-F Flush. Supprime toutes les règles de la chaîne. Si aucune chaîne n'est
spécifiée, toutes celles de la table sont vidées.
-N Crée une nouvelle chaîne utilisateur avec le nom passé en paramètre.
-X Supprime la chaîne utilisateur. Si aucun nom n'est spécifié, toutes les
chaînes utilisateur seront supprimées
-P Modifie la politique par défaut de la chaîne. Il faut indiquer en plus comme
paramètre la cible à utiliser.
-A Ajoute une règle à la fin de la chaîne spécifiée.
-I Insère la règle avant celle indiquée. Cette place est précisée par un
numéro qui fait suite au nom de la chaîne. La première porte le numéro 1.
Si aucun numéro n'est indiqué, la règle est insérée au début.
-D Supprime une règle de la chaîne. Soit un numéro peut être précisé, soit la
définition de la chaîne à supprimer (ses tests de concordance et sa cible).
-j <cible> Saute à la cible spécifiée lorsque le paquet correspond à la règle
-p < type-protocole> Protocole à surveiller. Le type inclut icmp, tcp, udp, http, etc.
-s < addresse-ip> Adresse IP source à surveiller.
-d < addresse-ip > Adresse IP destination à surveiller.
-i <nom-interface> Interface d’entrée à surveiller (le paquet entre par cette interface).
-o < nom-interface > Interface de sortie à surveiller (le paquet sort par cette interface).
12. • # iptables –t filter -A INPUT –p TCP –S 192.168.3.1 –j DROP
#iptables –t nat –A PREROUTING –i eth0 –p tcp –dport 80
Page 12
–j DNAT/ ---to-destination 192.168.2.1:8080
• -t nat [filter] table Nat ou filter
• -A Prerouting on ajoute une règle en (entrée d’interface)
• -i eth0 on précise le sens (–i=input) et la carte réseau
• -p TCP on indique le protocole TCP
• --dport 80 le port de destination prévu à l’origine.
• -J jump, quel action on va faire subir au paquet.
• DNAT modification de la destination
• -to—destination 192.168.2.1:80 on précise la nouvelle destination
16. Page 16
Exemple de script iptables
(à stocker dans /etc/init.d/monIPTables
#!/bin/bash
# Script iptables by BeAvEr.
## Règles iptables.
## On flush iptables.
/sbin/iptables -F
## On supprime toutes les chaînes utilisateurs.
/sbin/iptables -X
## On drop tout le trafic entrant.
/sbin/iptables -P INPUT DROP
## On drop tout le trafic sortant.
/sbin/iptables -P OUTPUT DROP
## On drop le forward.
/sbin/iptables -P FORWARD DROP
## On drop les scans XMAS et NULL.
/sbin/iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
/sbin/iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
## Dropper silencieusement tous les paquets broadcastés.
/sbin/iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP
## Permettre à une connexion ouverte de recevoir du trafic en entrée.
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Permettre à une connexion ouverte de recevoir du trafic en sortie.
/sbin/iptables -A OUTPUT -m state ! --state INVALID -j ACCEPT
## On accepte la boucle locale en entrée. /sbin/iptables -I INPUT -i lo -j ACCEPT
## On log les paquets en entrée. /sbin/iptables -A INPUT -j LOG
## On log les paquets forward. /sbin/iptables -A FORWARD -j LOG
exit 0
17. Page 17
Je vous remercie
pour votre attention
Questions!!?