
Problem: iptables
kann nicht geändert werden. Auf meinem Computer kann ich ausführen iptables -F
. iptables -L
zeigt an, dass es geleert ist.
Wenn Pakete in die Maschine hinein- oder hinausgehen, sind alle Regeln wiederhergestellt! Dasselbe Verhalten tritt auf, wenn ich ein ausführe iptables-restore < new_settings
. Sie sind für eine Sekunde da, aber sobald ein Paket durchkommt, iptables
werden sie zurückgesetzt.
Ich benutzeDebian 8Das Betriebssystem war ein Upgrade vonDebian 7. Ursprünglich handelt es sich um den Computer einer anderen Person.
Ich habe Folgendes überprüft und dachte, es wäre eines dieser Dinge:
iptables-persistent
ist nicht vorhanden/etc/iptables/
ist nicht vorhanden- Wenn ich mir Prozesse anschaue,
systemctl
gibt es nicht einmal etwas mitip
im Namen
/# systemctl --all | grep ip run-rpc_pipefs.mount loaded active mounted /run/rpc_pipefs systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe
- Es ist keins
# firewalld
auf dem System vorhanden.
Wo können wir Dienste oder etwas finden, das Systemkonfigurationen ändert?
Antwort1
Vielleicht könnten Sie verwenden audit
. Fedora aktiviert es standardmäßig und überflutet das Journal mit NETFILTER_CFG-Zeilen.
Siehe diese Frage:
Audit auf Änderungen an der laufenden iptables-Konfiguration
Im gezeigten Beispiel ist der relevante Prozess iptables
, was nicht sehr hilfreich sein kann. Allerdings zeichnet es auch ppid
, den übergeordneten Prozess (sowie das offensichtliche pid
) auf.
Falls der übergeordnete ProzessAuchwird sofort beendet...
Sie könnten problemlos die Prozessbuchhaltung ( acct
Paket) verwenden, um die Namen aller beendeten Prozesse ( lastcomm
Befehl) zu verfolgen. Das sind jedoch weniger Informationen, als Sie vielleicht denken. Ich denke hier an „bash“.
Es ist vielleicht besser, fatrace
die geöffneten Dateien zu verfolgen, was auch die Programmausführung einschließt. Versuchen Sie einfach nicht, es z. B. durch grep zu leiten - es wird keine Ausgabe generieren, ich weiß nicht, warum.
Es gibt auch einSeite aufexecsnoop
. Wenn Sie dieses Programm oder eine der darin vorgeschlagenen Alternativen verwenden können, wäre die Interpretation am einfachsten.
Technisch habe ich das nicht zugelassen fork()
. Mir fällt aber kein guter Grund ein, warum Sie das fork()
ohne tun sollten exec()
, um Netfilter-Regeln zu erstellen.
Antwort2
Kurz zusammengefasstWenn Sie seltsame Probleme mit sich ständig ändernden Konfigurationsdateien haben, überprüfen Sie Ihre /etc/network/if-*.d
Dateien, falls Sie die Konfigurationen bereits überprüft haben systemd
.
Es stellt sich heraus, dass eine weitere Möglichkeit, wo etwas den iptables
Befehl (oder eigentlich alles) ändern kann, in den -Ordnern liegt if-up.d
, if-down.d
die Änderungen basierend auf der Internetverbindung vornehmen.
Darin /etc/network/
befand sich jeweils ein Ordner für beide if-pre-up.d
, if-up.d
, usw.
Jeder enthält eine Reihe von Skripten, die ausgeführt werden, wenn die if-*
Bedingung erfüllt ist. Wenn sich also die Internetverbindungen ändern (was auf jede Änderung in zutrifft iptables
), wird ein Skript ausgeführt, das die iptables mit der Datei in /sbin/iptables-restore < /etc/network/iptables
zurücksetzt .iptables
/etc/network/