Löschen und Zurücksetzen von iptables in Debian

Löschen und Zurücksetzen von iptables in Debian

Um alle Regeln in iptables zu löschen, benutze ich dies

#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Dies funktioniert, solange keine Einträge mehr in iptables vorhanden sind, was überprüft wird mit

sudo iptables -L

oder

sudo iptables -S

Allerdings wird Datenverkehr, der an ein anderes Ziel weitergeleitet wurde, weiterhin an dieses Ziel geleitet.

Es scheint, als wären die gelöschten Iptables nach dem Löschen immer noch aktiv!

Bisher konnte ich diese Regeln nur durch einen Neustart des Systems loswerden, was jedoch nicht sehr elegant ist.

InDebianiptables scheint nicht als Dienst ausgeführt zu werden, daher funktioniert das Starten oder Stoppen dieses Dienstes nicht.

Wie kann ich iptables vollständig löschen bzw. zurücksetzen, sodass zuvor definierte Regeln deaktiviert werden?

Antwort1

  1. Das Leeren der iptables-Regeln wirkt sich nicht auf bereits hergestellte Verbindungen aus, die mit umgeleitet wurden DNAT. Dies ist relevant, da der Conntrack-Eintrag für UDP-Pakete die Umleitungsinformationen enthält, die neben den iptables-Regeln verwendet werden.

  2. Überprüfen Sie die vorhandenen Conntrack-Einträge mit conntrack -Lund überwachen Sie die Conntrack-Ereignisse mit dem conntrack -EBefehl.

  3. Mit dem conntrack -FBefehl löschen Sie die Conntrack-Einträge. Die neuen UDP-Pakete werden nicht mehr umgeleitet.

  4. netfilter-persistentVerwenden Sie die Pakete und , um die iptables-Regeln als Dienst zu verwalten iptables-persistent.

  5. Verwenden Sie besser iptables-save/ iptables-restore-Befehle, anstatt die manuell auszuführen iptables. Das ist sicherer und atomarer.

  6. Um die iptables-Regeln auf einem Remote-Host zu verwalten, verwenden Sie den iptables-applyBefehl, der ein Rollback des Regelsatzes ermöglicht, wenn dieser nicht bestätigt wurde.

Antwort2

sudo ufw status verbose; sudo iptables -L; 

Vielleicht läuft ufw weiter? Versuchen Sie, es zu stoppen.

Können Sie etwas mehr über Ihr System, Ihr Netzwerk und den noch weitergeleiteten Datenverkehr erzählen?

1–2 Beispiele sind ok, inkl. der anfänglichen Firewall-Regel.

BEARBEITEN:

Durch einige meiner Skripte überprüft..... Auch die Ketten spülen.

sudo iptables -F INPUT
sudo iptables -F FORWARD 
sudo iptables -F OUTPUT

Antwort3

Ihr Skript zum Löschen der iptables-Regeln reicht aus, um alle Regeln zu löschen und die Standardrichtlinie auf ACCEPT zu setzen. Dadurch wird die Firewall effektiv deaktiviert, da keine Regeln vorhanden sind und alles erlaubt ist.

Aus Ihren Kommentaren wissen wir, dass Sie UDP-Pakete senden. Sie haben möglicherweise das Gefühl, dass die alten Regeln noch eine Weile aktiv sind, insbesondere wenn ein kontinuierlicher Strom von UDP-Paketen durch Ihre Firewall-Maschine geht. Dies liegt hauptsächlich daran, dass UDP keine Möglichkeit hat, die Verbindung zu schließen, und die Firewall daher nicht weiß, wann der aktuelle aktive Fluss beendet ist. Die einzige Möglichkeit besteht darin, ein Leerlauf-Timeout zu verwenden, um aktive „Verbindungen“ zu leeren, wenn keine Pakete mehr gesehen werden.

Sie haben zwei Möglichkeiten:

  1. Warten Sie eine Weile, bevor Sie es erneut versuchen. Dazu müssen alle aktuell aktiven „Verbindungen“ beendet werden. Das UDP-Timeout finden Sie unter /proc/sys/net/netfilter/nf_conntrack_udp_timeout.
  2. Verwenden Sie conntrackdas Tool, um die vorhandenen „Verbindungen“ manuell zu löschen.

Bitte beachten Sie, dass die Linux-Firewall aktive Sockets für TCP/UDP verfolgt, auch wenn UDP ein verbindungsloses Protokoll ist.

verwandte Informationen