Iptable-Regeln duplizieren

18

Ich habe diese iptable Regeln:

-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

Die Linien

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

und

-A fail2ban-ssh -j RETURN

scheint doppelt oder doppelt geschrieben zu sein. Wie kann ich das Duplikat entfernen?

Leandro Garcia
quelle
Öffnen Sie die Datei in Ihrem Lieblingseditor, wechseln Sie in die betreffende Zeile und halten Sie die Entf-Taste gedrückt, bis alle Zeichen verschwunden sind. Vermisse ich etwas Offensichtliches darüber, warum dies schwierig ist?
Ladadadada

Antworten:

17

Liste mit Zeilennummern und Löschen nach Nummer.

iptables --line-numbers --list

Löschen Sie dann eine Regel anhand ihrer Zeilennummer. Dann wiederholen (Zeilennummern ändern sich für folgende Regeln, wenn eine gelöscht wird, also erneut auflisten, bevor eine andere gelöscht wird).

iptables -D INPUT 6
Brian
quelle
2
Danke für diesen Kumpel! Wird dies in wenigen Minuten akzeptieren.
Leandro Garcia
Bleibt dies nach einem Neustart bestehen?
Native Coder
10
iptables-save | uniq | iptables-restore

Das ist alles was Sie wirklich brauchen.

Ricky Neff
quelle
2
AFAICT, dies entfernt nur benachbarte Duplikate. Nicht benachbarte Duplikate können nicht entfernt werden.
sampablokuper
4

Wenn Sie nur doppelte Zeilen löschen möchten, die direkt nacheinander stehen , können Sie sie exportieren, vereinheitlichen und erneut importieren

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

Wenn Sie andere Zeilen löschen möchten, verwenden Sie einen Editor in der Datei ~ / tmp / iptables.conf, bevor Sie sie auf die gleiche Weise erneut importieren.

Überprüfen Sie Ihre neuen Regeln mit

iptables-save
rubo77
quelle
Wenn Sie versuchen, benachbarte Duplikate zu entfernen, ist die Antwort von Ricky Neff sicherer, da die Firewall nicht den Regeln anderer Benutzer ausgesetzt wird, auf die Sie Zugriff haben /tmp.
Sampablokuper
1
thx, du hast recht, du solltest / tmp nicht verwenden, da es für die ganze Welt lesbar ist. Ich habe es geändert zu~/tmp
rubo77
2

Ein Kommentar zu fail2ban: fail2ban scheint seine iptables-Regeln selbst hinzuzufügen. Sie sollten diese Regeln also nicht mit zB iptables-save speichern. Nach einem Neustart werden die Regeln verdoppelt (Ihre gespeicherte Regel + die von fail2ban hinzugefügte Regel).

halboffen
quelle
2

Löschen Sie alle doppelten Zeilen mit Ausnahme von COMMIT

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

Ich benutze so ein kleines Bash-Skript, das durch Cron läuft.

     #!/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
Sanya Snex
quelle