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?


Ö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

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.


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

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).


2

Löschen Sie alle doppelten Zeilen mit Ausnahme von COMMIT

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.