| Table | Chaîne | Description |
|---|---|---|
filter |
INPUT, FORWARD, OUTPUT |
Filtre les requêtes |
nat |
PREROUTING, POSTROUTING |
Nouvelles connexions |
mangle |
INPUT, FORWARD, OUTPUT, PREROUTING, POSTROUTING |
Modification des paquets |

-P : policies. ACCEPT, DROP et REJECT ;-m : matches ;-t : table ;-p : protocole ;-j : décision (exemple : ACCEPT, DROP, REJECT) ;| Filtrage sur… | Exemple |
|---|---|
| l’interface d’entrée ou de sortie | -i eth0 -o eth1 |
| l’addresse IP source/destination | -s 192.168.1.10/24 -d 10.1.2.3 |
| le port TCP/UDP | -p tcp --dport 20 --sport 21 |
| les messages ICMP | -p icmp |
| l’état de la connexion | -m state --state RELATED,ESTABLISHED |
| l’état de la connexion (information supplémentaires) | -m conntrack --ctstate DNAT |
Activation du NAT overload pour le réseau 10.0.0.0/8 :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
Plus complet lorsque le routeur ne sert pas que de passerelle :
iptables -t nat -A POSTROUTING -o ppp0 -s ${LOCAL_LAN} -j SNAT --to-source ${IP_EXT}
iptables -t nat -A POSTROUTING -s ${LOCAL_LAN} -m conntrack --ctorigdst ${IP_EXT} --ctstate DNAT -j SNAT --to-source ${IP_EXT}
Translater un port vers une machine :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.10:80
NAT statique :
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.11 -j SNAT --to-source 1.2.3.4
iptables -t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 192.168.1.11
Changer la règle/politique par défaut :
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
Ne pas casser les connections TCP en cours :
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Autoriser une connexion TCP entrante :
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
Activer les logs pour les paquets bloqués :
iptables -N LOGGING
iptables -F LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
#!/bin/sh
# Vider les tables actuelles
iptables -t filter -F
# Vider les regles personnelles
iptables -t filter -X
# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
# Autoriser le protocole ICMP
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT