Hostuję specjalne usługi HTTP i HTTPS odpowiednio na portach 8006 i 8007. Używam iptables do „aktywacji” serwera; tzn. aby skierować przychodzące porty HTTP i HTTPS:
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
To działa jak urok. Chciałbym jednak utworzyć kolejny skrypt, który ponownie wyłącza mój serwer; tzn. przywróć iptables do stanu, w jakim był przed uruchomieniem linii powyżej. Mam jednak trudności z ustaleniem składni, aby usunąć te reguły. Wydaje się, że jedyne, co działa, to całkowity kolor:
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
Ale spowoduje to również usunięcie innych reguł iptables, co jest niepożądane.
-I
zamiast-A
naACCEPT
linii. Wynika to z tego, że zazwyczaj ostatnia linia (naINPUT
przykład łańcuch) to aDROP
lubREJECT
chcesz, aby reguła była wcześniejsza.-A
umieszcza nową regułę po ostatniej regule, podczas gdy-I
umieszcza ją na początku.Odpowiedzi:
Wykonaj te same polecenia, ale zamień „-A” na „-D”. Na przykład:
staje się
źródło
-I
lub-R
, nadal możesz ją usunąć za pomocą-D
.Możesz także użyć numeru reguły ( --line-numbers ):
Przykładowe dane wyjściowe:
Więc jeśli chcesz usunąć drugą regułę:
Aktualizacja
Jeśli używasz (d) konkretnej tabeli (np. Nat), musisz dodać ją do polecenia delete (dzięki za komentarz do @ThorSummoner w celu komentarza)
źródło
iptables -L INPUT --line-numbers | grep -oP "([0-9]{1,3}).*tcp.*domain" | cut -d" " -f1
-t nat
np .:sudo iptables -t nat --line-numbers -L
i usunąć je-t nat
również np .:sudo iptables -t nat -D PREROUTING 1
(Czy warto dodać do odpowiedzi?)Najlepsze rozwiązanie, które działa dla mnie bez żadnych problemów, wygląda następująco:
1. Dodaj tymczasową regułę z komentarzem:
2. Gdy reguła zostanie dodana i chcesz ją usunąć (lub wszystko z tym komentarzem), wykonaj:
Tak więc w 100% usuniesz wszystkie reguły, które pasują do komentarza $ i pozostawisz inne wiersze nietknięte. To rozwiązanie działa przez ostatnie 2 miesiące przy około 100 zmianach zasad dziennie - bez problemów. Mam nadzieję, że pomaga
źródło
iptables -S | grep "${comment}" | sed 's/^-A //' | while read rule; do iptables -D $rule; done
spamhaus
bany iptables, 2) zgarnij spamhaus.org/drop , 3) grep dla CIDR IP iiptables -A INPUT -s $ip_cidr -j -m comment --comment "spamhaus"
iptables -S | sed "/$comment/s/-A/iptables -D/e"
;) lubię toNajpierw wypisz wszystkie reguły iptables za pomocą tego polecenia:
zawiera listę takich jak:
Skopiuj żądaną linię i po prostu wymienić
-A
się-D
usunąć, że:źródło
iptables: Bad rule (does a matching rule exist in that chain?).
Co teraz?nat
zsudo iptables -S -t nat
i chcesz usunąć jeden z powracających zasad, kopiowanie nie jest wystarczające. Musisz dodać-t nat
npsudo iptables -D ... -t nat
.Użyj
-D
polecenia, takman
wyjaśnia strona:Wykonaj to polecenie, tak jak wszystkie inne polecenia (
-A
,-I
) działają na określonej tabeli. Jeśli nie pracujesz nad domyślną tabelą (filter
tabelą), użyj,-t TABLENAME
aby określić tę tabelę docelową.Usuń regułę, aby dopasować
Uwaga: Usuwa to tylko pierwszą pasującą regułę. Jeśli masz wiele dopasowanych reguł (może się to zdarzyć w iptables), uruchom to kilka razy.
Usuń regułę określoną jako liczbę
Oprócz zliczania liczby można podać numer linii wraz z
--line-number
parametrem, na przykład:źródło
iptables -F
Załóżmy, że jeśli chcesz usunąć reguły NAT,
Wyświetl listę dołączonych adresów IP za pomocą poniższego polecenia,
Jeśli chcesz usunąć regułę nat z tabel IP, po prostu wykonaj polecenie,
Następnie możesz to zweryfikować,
źródło