Règles iptables en double


18

J'ai ces règles iptables:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -s xx.xxx.xx.xx/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh -j RETURN

Les lignes

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

et

-A fail2ban-ssh -j RETURN

semble être dupliqué ou écrit deux fois. Comment puis-je supprimer le doublon?


Ouvrez le fichier dans votre éditeur préféré, allez sur la ligne en question, maintenez la touche Suppr enfoncée jusqu'à ce que tous les caractères disparaissent. Suis-je en train de manquer quelque chose d'évident sur pourquoi c'est difficile?
Ladadadada

Réponses:


17

Liste avec numéros de ligne et suppression par numéro.

iptables --line-numbers --list

Supprimez ensuite une règle en utilisant son numéro de ligne. Ensuite, répétez (les numéros de ligne changent pour les règles suivantes lorsque l'un est supprimé, puis réinscrivez-en avant d'en supprimer un autre).

iptables -D INPUT 6

2
Merci pour ce copain! Acceptera cela en quelques minutes.
Leandro Garcia,

Cela persistera-t-il après un redémarrage?
Native Coder

10
iptables-save | uniq | iptables-restore

C'est vraiment tout ce dont vous avez besoin.


2
AFAICT, cela ne supprimera que les doublons adjacents. Il ne parviendra pas à supprimer les doublons non adjacents.
sampablokuper

4

Si vous ne souhaitez supprimer que les lignes doubles qui se suivent directement, vous pouvez les exporter, les unifier et les réimporter avec

mkdir ~/tmp
iptables-save > ~/tmp/iptables.conf
uniq /tmp/iptables.conf > ~/tmp/iptables_new.conf
iptables-restore < ~/tmp/iptables_new.conf

Si vous souhaitez supprimer d'autres lignes, utilisez un éditeur sur ~ / tmp / iptables.conf avant de le réimporter de la même manière.

Vérifiez vos nouvelles règles avec

iptables-save

Si vous souhaitez supprimer les doublons adjacents, la réponse de Ricky Neff est plus sécurisée, car elle évite d'exposer le pare-feu aux autres utilisateurs qui y ont accès /tmp.
sampablokuper

1
thx, vous avez raison, vous ne devriez pas utiliser / tmp car il est lisible dans le monde entier. Je l'ai changé en~/tmp
rubo77

2

Un commentaire à fail2ban: fail2ban semble ajouter lui-même ses règles iptables. Vous ne devez donc pas stocker ces règles avec par exemple iptables-save. Ensuite, après un redémarrage, les règles seront doublées (votre règle enregistrée + la règle ajoutée par fail2ban).


2

Supprimer toutes les lignes dupliquées sauf COMMIT

/sbin/iptables-save | awk '!COMMIT||!x[$0]++' | /sbin/iptables-restore

0

J'utilise un si petit script bash qui passe par cron.

     #!/bin/bash 
         readarray -t tabl_lines <<< "$(iptables -nL INPUT --line-number | grep "fail2ban-ssh")"
            i=''
            for tline in "${tabl_lines[@]}"
            do 
            #skip the first result
            if [ -n "$i" ]; then
            sudo iptables -D INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
            # if necessary, you can erase and other rules, 
            # because they usually repeat the same number of times
            # sudo iptables -D INPUT -p tcp -m multiport --dports 21 -j fail2ban-vsftpd
save_iptables=yes
            else 
            i=start_remove
            fi
            done
if [ "$save_iptables" == "yes" ]; then
/sbin/service iptables save
fi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.