Ich hoste spezielle HTTP- und HTTPS-Dienste an den Ports 8006 bzw. 8007. Ich benutze iptables, um den Server zu "aktivieren"; dh um die eingehenden HTTP- und HTTPS-Ports weiterzuleiten:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Das funktioniert wie ein Zauber. Ich möchte jedoch ein anderes Skript erstellen, das meinen Server wieder deaktiviert. dh iptables in dem Zustand wiederherstellen, in dem es sich befand, bevor die obigen Zeilen ausgeführt wurden. Es fällt mir jedoch schwer, die Syntax zum Entfernen dieser Regeln herauszufinden. Das einzige, was zu funktionieren scheint, ist eine vollständige Spülung:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Dadurch werden aber auch andere unerwünschte iptables-Regeln gelöscht.
-I
als-A
fürACCEPT
Linien zu verwenden. Dies liegt daran, dass in der Regel die letzte Zeile (z.INPUT
B. für die Kette) einDROP
oder istREJECT
und Sie möchten, dass Ihre Regel davor steht.-A
setzt die neue Regel nach der letzten Regel, während-I
sie am Anfang steht.Antworten:
Führen Sie die gleichen Befehle aus, ersetzen Sie jedoch "-A" durch "-D". Zum Beispiel:
wird
quelle
-I
oder hinzugefügt haben-R
, können Sie sie trotzdem mit löschen-D
.Sie können auch die Nummer der Regel ( - Zeilennummern ) verwenden:
Beispielausgabe:
Wenn Sie also die zweite Regel löschen möchten:
Aktualisieren
Wenn Sie (d) eine bestimmte Tabelle (z. B. nat) verwenden, müssen Sie diese dem Löschbefehl hinzufügen (danke an @ThorSummoner für den Kommentar).
quelle
iptables -L INPUT --line-numbers | grep -oP "([0-9]{1,3}).*tcp.*domain" | cut -d" " -f1
-t nat
, zB:sudo iptables -t nat --line-numbers -L
und sie auch löschen-t nat
, zB:sudo iptables -t nat -D PREROUTING 1
(Die beste Lösung, die für mich ohne Probleme funktioniert, sieht folgendermaßen aus:
1. Fügen Sie eine temporäre Regel mit einem Kommentar hinzu:
2. Wenn die Regel hinzugefügt wurde und Sie sie entfernen möchten (oder alles mit diesem Kommentar), gehen Sie wie folgt vor:
Sie löschen also zu 100% alle Regeln, die mit dem $ -Kommentar übereinstimmen, und lassen andere Zeilen unberührt. Diese Lösung funktioniert in den letzten 2 Monaten mit etwa 100 Regeländerungen pro Tag - keine Probleme. Hoffentlich hilft sie
quelle
iptables -S | grep "${comment}" | sed 's/^-A //' | while read rule; do iptables -D $rule; done
spamhaus
Iptables-Verbote, 2) greifen Sie zu spamhaus.org/drop , 3) greifen Sie nach CIDR-iptables -A INPUT -s $ip_cidr -j -m comment --comment "spamhaus"
iptables -S | sed "/$comment/s/-A/iptables -D/e"
;) soListen Sie zuerst alle iptables-Regeln mit diesem Befehl auf:
es listet auf wie:
Kopieren Sie dann die gewünschte Zeile und ersetzen Sie sie
-A
durch-D
, um diese zu löschen:quelle
iptables: Bad rule (does a matching rule exist in that chain?).
jetzt was?nat
mitsudo iptables -S -t nat
auflisten und eine der zurückgegebenen Regeln löschen möchten, reicht das Kopieren nicht aus. Sie müssen hinzufügen-t nat
, zsudo iptables -D ... -t nat
.Verwenden
-D
Befehl, das ist , wieman
Seite erklärt es:Machen Sie sich klar, dass dieser Befehl wie alle anderen Befehle (
-A
,-I
) für bestimmte Tabellen funktioniert. Wenn Sie nicht an der Standardtabelle (filter
Tabelle) arbeiten,-t TABLENAME
geben Sie diese Zieltabelle an .Löschen Sie eine übereinstimmende Regel
Hinweis: Dadurch wird nur die erste übereinstimmende Regel gelöscht. Wenn viele Regeln übereinstimmen (dies kann in iptables vorkommen), führen Sie dies mehrmals aus.
Löschen Sie eine als Zahl angegebene Regel
Neben dem Zählen der Nummer können Sie die Zeilennummer mit
--line-number
Parametern auflisten, zum Beispiel:quelle
iptables -F
Angenommen, wenn Sie NAT-Regeln entfernen möchten,
Listen Sie die angehängten IPtables mit dem folgenden Befehl auf:
Wenn Sie die nat-Regel aus den IPtables entfernen möchten, führen Sie einfach den Befehl aus.
Dann können Sie überprüfen, ob
quelle