Il faut préciser que lorsque l'on n'indique pas explicitement la table sur laquelle on veut travailler, avec l'option -t <nom de la table>, les commandes s'appliquent par défaut sur la table Filter.
-L
ou
--list
: permet
d'afficher les règles.
# Affiche toutes les règles de toutes les chaînes de FILTER.#
iptables -L
# Affiche toutes les règles de la chaîne INPUT.#
iptables -L INPUT
-A
ou
--append
: ajoute
une règle à la fin de la chaîne
spécifiée.
#
iptables -A INPUT <règle à ajouter>.
-D
ou
--delete
: permet
de supprimer les règles d'une chaîne. Si l'on
n'indique pas la règle à supprimer, toutes les
règles de la chaîne seront enlevées. Dans le
cas contraire, on peut soit spécifier la position de la
règle à supprimer, soit indiquer directement la
règle.
# On supprime les règles appliquées a la chaîne INPUT.#
iptables -D INPUT
# On supprime la règle n°1 de la chaîne INPUT.#
iptables -D INPUT 1
# On supprime la règle --dport 80 -j DROP de la chaîne INPUT.#
iptables -D INPUT --dport 80 -j DROP
-I
ou
--insert
: permet
d'ajouter une règle dans à une position
spécifiée de la chaîne. Si la position n'est
pas spécifiée, la règle sera ajoutée
à la fin de la chaîne.
# La règle --dport 80 -j ACCEPT sera la deuxième règle de la # chaîne INPUT.#
iptables -I INPUT 2 --dport 80 -j ACCEPT
# La règle --dport 80 -j ACCEPT sera ajoutée à la fin de la # chaîne INPUT.#
iptables -I INPUT --dport 80 -j ACCEPT
-R
ou
--replace
: permet
de remplacer une règle dans une chaîne, à la
position spécifiée.
# remplace la première règle de la chaîne INPUT # par -s 192.168.0.1 -j DROP.#
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
-F
ou
--flush
: permet de
vider toutes les règles d'une chaîne, ou de supprimer
toutes les chaînes.
# supprime toutes les règles d'une chaîne.#
iptables -F INPUT
# supprime toutes les chaînes et les règles associées.#
iptables -F
-N
ou
--new
: permet de
créer une nouvelle chaîne utilisateur.
# LOG_DROP est le nom de la nouvelle chaîne utilisateur.#
iptables -N LOG_DROP
-X
ou
--delete-chain
:
Permet d'effacer une chaîne utilisateur, ou toutes les
chaînes utilisateur.
# supprime la chaîne LOG_DROP.#
iptables -X LOG_DROP
# supprime toutes les chaînes utilisateur.#
iptables -X
-P
ou
--policy
: permet
de spécifier au noyau la cible par défaut d'une
chaîne : DENY, ACCEPT, REJECT, DROP, etc.
# par défaut, on supprimera tous les paquets passant par INPUT.#
iptables -P INPUT DROP
-j
ou
--jump
: passe
directement à la cible spécifiée (DROP,
ACCEPT, RESET, ...) lorsqu'un paquet correspond à une
règle.
#
iptables -A INPUT <règle> -j DROP
-p
ou
--protocol
:
spécifie un protocole : tcp, udp, icmp, all (tous).
# les paquets utilisant le protocole ICMP seront supprimés.#
iptables -A INPUT -p icmp -j DROP
-s
ou
--source
:
spécifie une adresse source.
# si le paquet utilise TCP et que son adresse IP source # est 192.168.22.42 alors on l'accepte.#
iptables -A INPUT -p tcp -s 192.168.22.42 -j ACCEPT
-d
ou
--destination
:
spécifie une adresse destination.
# les paquets UDP traversant l'ordinateur # vers 10.1.0.1 sont acceptés.#
iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT
-i
ou
--in-interface
:
spécifie une interface d'entrée.
# les paquets icmp arrivant sur eth0 seront supprimés.#
iptables -A INPUT -p icmp -i eth0 -j DROP
-o
ou
--out-interface
:
spécifie une interface de sortie.
# les paquets icmp sortant par eth0 seront supprimés.#
iptables -A OUTPUT -p icmp -o eth0 -j DROP
-f
ou
--fragment
:
spécifie si le paquet est fragmenté.
# si le paquet est fragmenté alors il sera supprimé.#
iptables -A INPUT -p icmp -f -j DROP
--sport
ou
--source-ports
:
spécifie le port source ou une plage de ports. Fonctionne en
TCP et UDP.
# accepte les paquets en provenance du port 80 en TCP.#
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
# droppe les paquets en provenance du port 80 en UDP.#
iptables -A INPUT -p udp --sport 80 -j DROP
-m multiport
permet de spécifier une liste de ports.
# supprime les paquets en provenance des ports spécifiés.#
iptables -A OUTPUT -p tcp -m multiport --sport 21,1000 -j DROP
# accepte les paquets en provenance des ports compris entre # 1024 et 2042.#
iptables -A OUTPUT -p tcp --sport 1024:2042 -j ACCEPT
--dport
ou
--destination--ports
:
spécifie le port destination ou une plage de ports.
Fonctionne en TCP/UDP.
#
iptables -A INPUT -p tcp --dport 110 -j DROP
#
iptables -A INPUT -p udp --dport 110 -j DROP
-m multiport
permet de spécifier plusieurs ports.
#
iptables -A INPUT -p tcp -m multiport --dport 110,4242,119 \
-j DROP
#
iptables -A INPUT -p tcp --sport 4925:4633 -j ACCEPT
--tcp-flags
:
spécifie les flags TCP : SYN ACK FIN RST URG PSH ALL
NONE.
# accepte les paquets qui ont les flags SYN et ACK.#
iptables -A INPUT -p tcp --dport 42 --tcp-flags SYN,ACK \
-j ACCEPT
--icmp-type
:
spécifie un type de paquet icmp (la liste des types est
accessible avec la commande : iptables -p icmp -h
).
# ici le type any permettra de supprimer tous les paquets ICMP.#
iptables -A INPUT -p icmp --icmp-type any -j DROP
--mac-source
:
spécifie l'adresse MAC.
#
iptables -A INPUT --mac-source 00.DE.AD.BE.EF.00 -j DROP
--state
: permet
de spécifier l'état du paquet, parmi les suivants
:
ESTABLISHED : paquet associé à une connexion déjà établie.
NEW : paquet demandant une nouvelle connexion.
INVALID : paquet associé à une connexion inconnue.
RELATED : nouvelle connexion mais liée, idéal pour les connexions FTP.
#
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state \
--state NEW,ESTABLISHED -j ACCEPT
#
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state \
--state ESTABLISHED -j ACCEPT