Il peut parfois être nécessaire de supprimer une règle de la liste de iptables. La commande pour ce faire est assez simple. Au moins deux options s’offrent à nous.
- Supprimer la règle en utilisant tous ses paramètres.
sudo iptables -D <chaine> [-s <adresse IP>] [-d <adresse IP>] [-p <protocole>] [--dport <port>] -j <action>
Par exemple :
sudo iptables -D INPUT -s 1.1.1.1 -p tcp --dport 123 -j ACCEPT
- Supprimer la règle en utilisant son numéro de ligne.
sudo iptables -D <chaine> <numéro de ligne>
Par exemple :
sudo iptables -D INPUT 3
D’accord, c’est bien beau tout ça, mais si nous avons des centaines de règles dans notre pare-feu, comment en récupérer facilement le numéro de ligne? Dans mon cas, j’utilise fail2ban pour protéger mon serveur contre les attaques de type bruteforce sur le service SSH. Il en résulte donc que mon pare-feu contient un nombre impressionnant de règles. En fait récupéré le numéro de ligne peut-être bien plus simple qu’il n’y parait.
Par exemple, disons que je cherche à supprimer une adresse IP en particulier (ici, l’adresse 123.123.123.123) de mon pare-feu dans la chaîne fail2ban-ssh.
sudo iptables -L fail2ban-ssh -n --line-number | grep 123.123.123.123
Le résultat de cette commande (si l’adresse 123.123.123.123 est bel et bien bannie) serait similaire à ceci :
323 REJECT all -- 123.123.123.123 0.0.0.0/0 reject-with icmp-port-unreachable
Où le contenu de la première colonne serait le numéro de ligne, dans cet exemple 323.
Il ne nous resterait qu’à supprimer la ligne 323 avec la commande suivante.
sudo iptables -D fail2ban-ssh 323
Voilà!