Sie sind auf Seite 1von 8

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

Firewall : NetFilter
I- Introduction :
NetFilter et iptables :
Les noyaux 2.4 et suprieurs de Linux contiennent un logiciel trs puissant de filtrage de paquets IP appell NetFilter et qui utilise iptables. Il remplace ipchains, utilis sur les noyaux 2.2.

A partir de ces cinq point d'entre, NetFilter va tre capable de :


faire

du filtrage de paquets (FILTER) de la translation d'adresses ou de ports (NAT) de la modification ou du marquage de paquets la vole (MANGLE)

Dfinitions :
Table : Un paquet qui arrive est vrifi par une table pour savoir si il a le droit d'aller o il veut. Ces tables sont constitues de chanes. < FILTER | NAT | MANGLE > Chane : Suite de rgles constitues de motifs et de cibles. Elle peuvent tre : < INPUT | OUTPUT | PREROUTING | FORWARD | POSTROUTING > Motif : Permet de distinguer un paquet selon un ou plusieurs critres : < Protocole | adresse source | adresse de destination | un ou plusieurs ports | port source | port de destination > Cible : Dcision prise quand le paquet est reconnu par le motif. < ACCEPT | DENY | DROP | MASQUERADE | REDIRECT | DNAT | SNAT | ... >

Dernires modifications le 10/11/06

Page 1

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

Rgles de filtrage :

Commande iptables :
La commande iptables permet d'ajouter, de modifier ou de supprimer des rgles de filtrage :

Options dtailles de iptables :

Dernires modifications le 10/11/06

Page 2

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

Dernires modifications le 10/11/06

Page 3

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

II- Passer l'action :


Configuration de base du firewall :
Premire tape : On vide tout. iptables -F // Vidage des rgles dans les chanes iptables -X // Suppression des chanes autres que celles par dfaut iptables -t nat -F // Idem mais pour la table nat iptables -t nat -X iptables -t mangle -F // Idem mais pour la table mangle iptables -t mangle -X Aprs avoir tout vid on ferme toutes les connexions : iptables -P INPUT DROP // Toutes les entres sont bloques iptables -P OUTPUT DROP // '' sorties iptables -P FORWARD DROP // '' transmissions // On peut faire pareil pour les tables NAT et MANGLE La premire rgle d'acceptation va tre le droit de tout faire sur l'interface lo (loopback) : iptables -A INPUT -i lo -j ACCEPT // On accepte les entres sur lo iptables -A OUTPUT -o lo -j ACCEPT // On accepte les sorties sur lo iptables -A FORWARD -i lo -j ACCEPT // On accepte le forward en entre et iptables -A FORWARD -o lo -j ACCEPT // en sortie Le firewall fonctionne suivant les rgles qu'il contient, vous n'avez pas besoin d'enregistrer votre configuration pour appliquer vos rgles

Sauvegarder / restaurer une configuration


Vous pouvez sauvegarder une configuration du firewall pour pouvoir la restaurer quand vous en aurez besoin en tapant cette commande :
iptables-save > votre_fichier

Les rgles vont alors tre crites dans ce fichier et pourront tre restaures trs facilement :
iptables-restore < votre_fichier

Je vous conseille de sauvegarder vos tables chaque fois que vous voulez tester une configuration et surtout de sauvegarder la configuration d'origine pour pouvoir la restaurer en cas de problme.

Dernires modifications le 10/11/06

Page 4

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

Filtrage des entres et des sorties :


C'est partir de l que a devient intressant, on va pouvoir accepter seulement certaines entres et certaines sorties. Par exemple, la navigation sur Internet ncessite d'ouvrir une session TCP sur le port 80 du serveur que l'on veut visiter : Il va donc falloir autoriser l'envoi de donnes vers le port TCP 80 et la rception depuis ce mme port : iptables -A INPUT -p tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT D'autre part, il faut aussi accepter de laisser passer les requtes DNS car quand on visite un site, on tape son nom (ex : www.google.fr) et non pas son adresse IP : iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT Si vous ne connaissez pas les principaux numros de ports TCP et UDP et que vous demandez lesquels vous devez ouvrir ou fermer, affichez ce fichier : cat /etc/services Vous pourrez voir le nom du service, le numro de port qui est associ et le protocole sur lequel il se base. Par exemple : Protocole pop3 : ports UDP et TCP 110 Protocole telnet : port TCP 23 Ensuite, on peut autoriser une adresse ou un groupe d'adresses passer travers notre serveur : iptables -A FORWARD -i eth0 -o eth1 -s 172.16.0.0/16 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -d 172.16.0.0/16 -j ACCEPT En fait, avec la table Filter, on peut faire une quasi infinit de filtrages :
Par Par Par Par Par Par Par

adresses MAC adresses IP interfaces protocoles (ICMP, TCP ou UDP) ports tats de connexion flag TCP

Dernires modifications le 10/11/06

Page 5

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

III- NAT
Explications :
Le NAT (Network Address Translation) est un procd mis en place sur un routeur permettant de passer d'un adresse IP une autre ou d'un socket (couple adresse IP+Port) un autre.

Nat statique :
Le NAT statique permet simplement de transformer une adresse IP en une autre.

Nat dynamique (ou PAT : Port Address Translation) :


Si on veut associer une adresse IP plusieurs, on va devoir distinguer toutes ces adresses grce un lment supplmentaire : Le numro de port. La translation va donc se faire grce au couple adresse IP:Port

On se sert souvent de ce type de NAT pour n'utiliser qu'une adresse IP publique et cacher les autres machines du LAN qui utilisent des adresses IP prives (IP Masquerading : masquage d'adresses).

Dernires modifications le 10/11/06

Page 6

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

Translation de port
Dans un rseau IP priv, il se peut qu'une machine doive tre accessible depuis l'extrieur par exemple parce qu'elle hberge un serveur. Dans ce cas, il faudra utiliser la redirection de ports : Rediriger les requtes destination du port de ce serveur vers l'adresse IP de ce serveur.

Application dans NetFilter


NAT Statique :
Exemple avec une adresse 2.3.4.5 que je souhaite systmatiquement rediriger vers l'adresse locale 192.168.0.254 : iptables -t nat -A PREROUTING -d 2.3.4.5 -j DNAT --to 192.168.0.254

NAT dynamique, masquage d'adresses :


Masquage des adresses du rseau priv vers l'adresse publique situe sur l'interface ppp0 : iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Translation de port :
Exemple avec un serveur Web hberg l'adresse locale 192.168.0.100 alors que le routeur a l'adresse publique 2.3.4.5 : iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 192.168.0.100

Dernires modifications le 10/11/06

Page 7

Firewall : Netfilter

Nicolas Dewaele nico@nicodewaele.info www.nicodewaele.info

IV- Sites Web :


Thorie du NAT sur Wikipdia :
http://fr.wikipedia.org/wiki/Network_Address_Translation

Firewall et NAT chez Linux France :


Chercher NAT Howto et iptables-tutorial : http://www.linux-france.org/prj/inetdoc/telechargement/

La Linux :
http://lea-linux.org/cached/index/Reseau-secu-iptables.html http://lea-linux.org/cached/index/Reseau-secu-pont-filtrant.html

Scurit et Firewall :
http://olivieraj.free.fr/fr/linux/information/firewall/

TP sur Netfilter :
http://christian.caleca.free.fr/netfilter/

Documentation officielle (pas facile) :


http://www.netfilter.org/documentation/HOWTO/fr/packet-filtering-HOWTO.html

Dernires modifications le 10/11/06

Page 8