(/ etc / sysconfig / iptables) „Eine manuelle Anpassung dieser Datei wird nicht empfohlen.“ Warum?

20

Bearbeiten Sie diese Datei direkt

/etc/sysconfig/iptables 

kann mir so viel Zeit und so viel Kopfschmerzen ersparen ...

und doch ganz oben in der Datei steht ..

Manual customization of this file is not recommended.

Hier ist die '/ etc / sysconfig / iptables', die gerade mit einem brandneuen Centos 6.4-Cloud-Server geliefert wurde.

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

um port 80 zu öffnen kann ich einfach die leitung klonen ..

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

und ändern Sie dann "22" auf "80" und speichern Sie diese Datei und starten Sie dann das gesamte System neu.

Dadurch wird Port 80 für mich geöffnet.

Das ist eine ziemlich einfache Operation. und dennoch heißt es in der Datei, dass manuelle Bearbeitung nicht empfohlen wird.

warum sollte ich den Rat befolgen?

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

18

Weil das aufgerufene Tool system-config-firewall(oder der auf ncurses basierende Bruder system-config-firewall-tui) diese Datei verwaltet. Jedes Mal, wenn Sie dieses Tool zum Erstellen neuer iptables-Regeln verwenden, wird es überschrieben /etc/sysconfig/iptables.

Verwandte Manpage: 28.1.16. / etc / sysconfig / iptables-config

Deshalb wird es nicht empfohlen, aber nicht verboten . Der beste Weg, um Ihre Regeln mit CentOS oder einer anderen EL-Version 6 zu speichern, ist die Verwendung des iptables-Dienstes, nachdem Sie einige Regeln für den Speicher hinzugefügt haben:

# service iptables save

Verwandte Frage: Warum ruft iptables keine Informationen aus / etc / sysconfig / iptables auf centOs ab?

Gründe, diese Datei ( /etc/sysconfig/iptables) nicht direkt zu bearbeiten :

  • Weil es eine automatisch generierte Datei ist. Der Inhalt stammt aus dem Skript / Daemon /etc/init.d/iptables.
  • Einige Aktionen wie das Zurücksetzen oder Stoppen des iptables-Daemons können zu Datenverlust führen, da die Datei überschrieben wird. Interessante Variablen zu diesem Thema: IPTABLES_SAVE_ON_STOP=""und IPTABLES_SAVE_ON_RESTART=""in der /etc/sysconfig/iptables-configDatei. Wenn Sie diese Einstellungen anpassen, bleiben Ihre Änderungen möglicherweise erhalten /etc/init.d/iptables.
  • Da dies in der Dokumentation angegeben ist , empfiehlt .Red Hat, dass dies die beste Methode ist, um die Firewall-Infrastruktur zu nutzen.

Eine alternative Lösung für dieses Problem besteht darin, diese Skripte vollständig zu deaktivieren und sich auf eine angepasste Methode zur Verwaltung der Firewall zu verlassen, wie sie von Goldlöckchen bereitgestellt wird .


quelle
Das klingt eher wie ein Argument gegen das direkte Bearbeiten der Datei und das Hinzufügen von Regeln mit dem system-config-firewallTool. Können Sie erläutern, warum es schlecht ist, die Datei zu bearbeiten, anstatt das Tool jemals zu verwenden?
Michelle
Zusätzliche Informationen hinzugefügt. Danke für den Tipp @Michelle
8

und doch ganz oben in der Datei steht ..

Hmmm, das ist komisch. Ganz oben steht:

# Manual customization of this file is strongly encouraged.

Jemand muss es geändert haben;) Und tatsächlich wurde es sogar entfernt, /etc/sysconfigdamit es nicht vom Paketmanager oder irgendetwas anderem "auto uncustomized" wird;);)

Ich denke, der Punkt hier im Allgemeinen mit solchen Konfigurationsdateien ist, wenn Sie nicht wissen, was Sie tun, tun Sie es nicht. Manchmal gibt es auch die Warnung, dass die Datei gelegentlich vom System überschrieben wird. Dies könnte durch den Paketmanager bei Upgrades geschehen - obwohl der PM manchmal feststellt, dass eine Datei manuell geändert wurde und nicht überschrieben wurde, oder eine Kopie usw. speichert - und es könnte sich um ein anderes Tool handeln, das für diese Konfiguration in verantwortlich ist insbesondere (siehe nwildners antwort ).

Um zu wissen, was Sie tun, müssen Sie sich solcher Winkel bewusst sein. Ich habe auch den init-Dienst für iptables so angepasst, dass er einen anderen Speicherort für die Konfigurationsdatei verwendet, und vor allem: Ich bin der einzige, der diesen Computer verwendet.

Vorausgesetzt, es gibt andere Personen mit Root-Zugriff, würde ich dies nicht auf einem Server tun, für den ich verantwortlich bin, es sei denn, es gibt einen besseren Grund als "Ich bevorzuge es auf diese Weise", da dies wahrscheinlich zu Verwirrung und Kopfschmerzen für andere Personen führen wird irgendwann. Aber wenn Sie der einzige Benutzer sind und niemand anderes vom System abhängt, können Sie tun, was Sie wollen. Meine "bevorzugte Methode" zum Konfigurieren der Firewall sieht folgendermaßen aus:

#!/bin/bash

if [[ ! -n "$IPTSET_FILE" ]]; then
        IPTSET_FILE=/etc/iptables.current
fi

if [[ ! -e $IPTSET_FILE ]]; then
        echo "$IPTSET_FILE does not exist!"
        exit 1
fi

vim $IPTSET_FILE
iptables-restore < $IPTSET_FILE

/etc/iptables.currentwird beim Booten durch Kopieren erstellt /etc/iptables(wobei der iptables-Dienst so konfiguriert ist, dass er anfänglich geladen wird). Auf diese Weise kann ich Dinge im laufenden Betrieb ändern, während ich einen Referenzpunkt behalte, von dem das System ausgeht.

Das bringt uns zu einem wichtigen Punkt, wenn Sie mit Konfigurationen herumspielen möchten, die diese Art von Warnung enthalten: Erstellen Sie immer zuerst eine Sicherungskopie des Originals.

Goldlöckchen
quelle