Résumé du 29/09/2008
=================I- Recherche d'informations sur NetFilter.sources:
http://www.ibisc.univ-evry.fr/~petit/Enseignement/AdminSystem/Administration-reseau-avancee/2006-02-ASRA-fw-nat-Cours2-netfilter.pdfhttp://irp.nain-t.net/doku.php/130netfilter:020_conntrackhttp://oceanpark.com/notes/firewall_example.htmlNetfilter dispose d'une commande à tout faire : IPtables qui va permettre, entre autres, d'écrire des chaînes de règles dans des tables.
Il existe dans Netfilter deux principales tables qui vont servir à contenir des règles de filtrage:
Table Filter va contenir toutes les règles qui permettront de filtrer les paquets. Cette table contient trois chaînes :
* la chaîne
INPUT : décidera du sort des paquets entrant localement sur l'hôte
* la chaîne
OUTPUT :ce ne sont que les paquets émis par l'hôte local qui seront filtrés ;
* la chaîne
FORWARD :les paquets qui traversent l'hôte, suivant les routes implantées, seront filtrés ici.
La table NAT :permet d'effectuer toutes les translations d'adresses nécessaires. Cette table contient trois chaînes :
* La chaîne
PREROUTING :Permet de faire de la translation d'adresse de destination. Cette méthode est intéressante si l'on veut faire croire au monde extérieur, par exemple, qu'il y a un serveur WEB sur le port 80 de la passerelle, alors que celui-ci est hébergé par un hôte du réseau privé, sur le port 8080.
* La chaîne
POSTROUTING :permet de faire de la translation d'adresse de la source, comme du masquage d'adresse, la méthode classique pour connecter un réseau privé comme client de l'Internet, avec une seule adresse IP publique.
* La chaîne
OUTPUT :va permettre de modifier la destination de paquets générés localement (par la passerelle elle-même).
En conslusion donc, les chaînes sont des ensembles de règles que nous allons écrire dans chaque table. Ces chaînes vont permettre d'identifier des paquets qui correspondent à certains critères.
Les cibles enfin sont des sortes d'aiguillage qui dirigeront les paquets satisfaisant aux critères. Les cibles préconstruites sont :
*
ACCEPT :Les paquets qui satisfont aux critères sont acceptés, ils continuent leur chemin dans la pile,
* DROP :Les paquets qui satisfont aux critères sont rejetés, on les oublie, on n'envoie même pas de message ICMP . Un trou noir, quoi.
*
LOG :C'est une cible particulière qui permet de tracer au moyen de syslog les paquets qui satisfont aux critères.
Suivant les contextes, d'autres cibles deviennent accessibles, comme REJECT (similaire à DROP, mais avec envoi d'un message d'erreur ICMP à la source du paquet rejeté), RETURN, REDIRECT…
II- Manipulation :* Affiche les chaines et les règles:
iptables -L
* Permet au noyau Linux de faire transiter les paquets entres ses interfaces réseaux:
echo 1 > /proc/sys/net/ipv4/ip_forward
* Rejeter les paquets:
iptables -A FORWARD -i eth2 -s 172.16.15.2 -j drop
Test effectué : ping
www.google.be sur la machine cliente. Résultat : les paquets sont rejetés.
* Supprimer la règle 1:
iptables -D FORWARD 1
* Fermeture des portes et transfert d'information:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
* Sur la GW:
Nous avons écrit un script de démarrage :
#!/bin/sh
iptables -F
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
Test : Connexion depuis une autre machine: ssh entre machines des différentes tables:
ssh 172.16.25.1 -l vénérable grand maitre
Tous les ports et protocoles associés aux services se trouvent:
cat /etc/services/services | grep ssh
To be continued ...