Netfilter (iptables)
NetFilter est un FireWall qui tourne sous Linux, on le retrouve dans beaucoup d’équipements.
NetFilter consiste à établir des règles de sécurité, qui, selon leurs fonctions sont rangées dans des groupes appelés tables. On distingue 3 tables :
FILTER | NAT | MANGLE |
FORWARDINPUT
OUTPUT |
PREROUTINGPOSTROUTING
OUTPUT |
FORWARD INPUT OUTPUT PREROUTING POSTROUTING |
On peut représenter NetFilter comme suit :
La table FILTER
Cette table peut contenir toutes les règles qui permettent le filtrage de paquets, elles ne permettent pas la redirection de ports ou la translation. Ces règles sont réparties en 3 catégories selon les provenances et la destination des paquets qu’on appelle « Les chaînes ». La table FILTER contient trois chaînes :
La chaîne INPUT : Permet de filtrer les paquets entrants localement sur le hôte
La chaîne OUTPUT : Permet de filtrer les paquets émis par le hôte
La chaîne FORWARD : Permet de filtrer les paquets qui traversent l’hôte suivant les routes implantées
La table NAT
Cette table peut contenir toutes les règles qui permettent la translation d’adresse ou la redirection de ports
La table NAT contient trois chaînes :
La chaîne PREROUTING : Permet de faire de la translation d’adresse de destination
La chaîne POSTROUTING : Permet de faire de la translation d’adresse source
La chaîne OUTPUT : Permet de modifier l’adresse de destination des paquets générés localement
La table MANGLE
Cette table peut contenir toutes les règles qui permettent le marquage des paquets. La table MANGLE contient toutes les chaînes des deux tables précédentes.
La syntaxe des règles et quelques exemples :
A compléter | ||||||||
iptables | -t | filter | -A | FORWARD INPUT 0UTPUT |
-i | nom intreface | -j | ACCEPT |
nat | -D | -o | DROP | |||||
-I | -s | adresse IP | REJECT | |||||
-F | -d | MASQUERADE | ||||||
-X | -p | tcp, udp, icmp | DNAT | |||||
-P | -sport | N° de port | SNAT | |||||
-N | -dport | LOG | ||||||
-L | -m | Etat |
Tables filter : pas de redirection (forward)
source : output – destination : input
tout le reste est du forward
Iptables (POSTROUTING : Sortir – PREROUTING : Rentrer)
Pour activer le routage : echo 1 > /proc/sys/net/ipv4/ip_forward
Nota : quand le nom de la table n’est pas précisée dans une règle, il s’agit de la table FILTER qui est par défaut.
– Effacer les tables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
– Afficher la table NAT
iptables -t nat -L -v
iptables -t NAT -L -V –line number
– Affiche la table filter en details
iptables -L -V
– Activer le NAT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Dans cet état, on n’a rigoureusement aucune défense contre d’éventuelles intrusions ! Car la politique par défaut est « Tout accepter »
– Modifier la politique
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
– Empêcher tous les utilisateurs d’aller sur google
Iptables -A FORWARD –i eth0 –o eth1 –d www.google.fr –j DROP
– Interdit le PC 172.30.0.2 de se connecter sur internet
Iptables –A FORWARD –s 172.30.0.2 –i eth0 –o eth1 –j DROP
– Permettre de prendre la main avec « Bureau à distance » de l’exterieur sur le PC 172.30.0.1
Iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 3389 -j DNAT –to-destinantion 172.30.0.1
– Permettre de prendre la main avec « ssh de l’exterieur sur le PC 172.30.0.1
Iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 22 -j DNAT –to-destinantion 172.30.0.1
– Permettre une réponse à un ping
iptables -A INPUT -p icmp –icmp-type echo-request -s 192.168.102.205 -j ACCEPT
Proxy transparent
On redirige le trafic destiné au port TCP 80 destination 0.0.0.0 vers l’adresse de proxy 10.0.0.250 au port utilisés par le proxy, les plus connus sont : 8080 sous Windows 3128 et 3124 sous linux
Les règles
– Règle iptables pour du NAT sortant
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
– Règle iptables pour du NAT entrant
Iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -p tcp -dport 80 -j DNAT –to-destination 10.0.0.254:3128
Ou bien, et si seulement le proxy est dans le routeur lui même
iptables -t NAT -A PREROUTING -i eth0 -S 10.0.0.0/24 -p –dport 80 -J redirect –todestination 10.0.0.250/3128 iptables -t NAT -A PREROUTING -i eth0 -S 10.0.0.0/24 -p –dport 80 -J DNAT –todestination 10.0.0.250/312– On autorise le PC a faire des pings sur des IP externes et à répondre aux requêtes « ping »
iptables -A OUTPUT -p icmp -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
– On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
Appliquer les règles au démarrage
Vous avez testé vos règles, alors il reste à les appliquer au démarrage. Commencez par éditer un fichier en root, que vous enregistrerez sous /etc/init.d/monIptables. La première ligne de ce fichier doit être :
#!/bin/bash
Cette ligne indique que le fichier doit être enregistré en tant que script bash. Le reste du fichier doit contenir les commandes iptables que vous avez générées. Déplacez le script iptables dans /etc/init.d.
sudo mv /emplacement/du/script/iptables /etc/init.d
rendre ce scipt executables : sudo chmod +x /etc/init.d/monIptables
Pour indiquer à votre ordinateur de l’utiliser au démarrage : sudo update-rc.d monIptables defaults
Filed under: Articles |
Laisser un commentaire