• Catégories

Commandes iptables

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

Laisser un commentaire