Migrieren von FirewallD zu Iptables unter CentOS 7

Einführung

Wie die meisten anderen Linux-Distributionen verwendet CentOS 7 das Framework "+ netfilter +" im Linux-Kernel, um auf Pakete zuzugreifen, die über den Netzwerkstapel übertragen werden. Dies bietet die erforderliche Schnittstelle zum Überprüfen und Manipulieren von Paketen, um ein Firewall-System zu implementieren.

Die meisten Distributionen verwenden die Firewall "+ iptables ", die die Haken " netfilter " verwendet, um Firewall-Regeln durchzusetzen. CentOS 7 wird mit einem alternativen Dienst namens " firewalld +" ausgeliefert, der denselben Zweck erfüllt.

Während "+ firewalld " eine sehr leistungsfähige Firewall-Lösung mit großartigen Funktionen ist, ist es für einige Benutzer möglicherweise einfacher, sich an " iptables " zu halten, wenn sie mit seiner Syntax vertraut und mit seinem Verhalten und seiner Leistung zufrieden sind. Der Befehl " iptables " wird tatsächlich von " firewalld " selbst verwendet, aber der Befehl " iptables " _service_ ist standardmäßig nicht auf CentOS 7 installiert. In diesem Handbuch wird gezeigt, wie Sie den Dienst " iptables " unter CentOS 7 installieren und Ihre Firewall von " firewalld " auf " iptables +" migrieren (siehe https://www.digitalocean.com/community/tutorials) / wie-man-eine-firewall-mit-firewalld-on-centos-7-einrichtet [diese Anleitung], wenn Sie stattdessen lernen möchten, wie man FirewallD verwendet).

Speichern Sie Ihre aktuellen Firewall-Regeln (optional)

Bevor Sie zu "+ iptables " als Firewall-Lösung Ihres Servers wechseln, sollten Sie die aktuellen Regeln speichern, die " firewalld " erzwingt. Wir haben oben erwähnt, dass der Daemon " firewalld " den Befehl " iptables " nutzt, um mit den " netfilter " - Kernel-Hooks zu sprechen. Aus diesem Grund können wir die aktuellen Regeln mit dem Befehl ` iptables +` sichern.

Kopieren Sie die aktuellen Regeln in die Standardausgabe und in eine Datei in Ihrem Ausgangsverzeichnis mit dem Namen "+ firewalld_iptables_rules +", indem Sie Folgendes eingeben:

sudo iptables -S | tee ~/firewalld_iptables_rules

Mach dasselbe mit + ip6tables +:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

Abhängig von den aktiven "+ Firewalld " - Zonen, den aktivierten Diensten und den Regeln, die von " Firewall-Cmd " direkt an " Iptables +" übergeben wurden, ist der Regelsatz für die Sicherung möglicherweise recht umfangreich.

Der Dienst "+ firewalld " implementiert seine Firewall-Richtlinien unter Verwendung normaler " iptables " -Regeln. Dazu wird ein Verwaltungsframework unter Verwendung von " iptables +" - Ketten erstellt. Die meisten der Regeln, die Sie wahrscheinlich sehen werden, werden zum Erstellen dieser Verwaltungsketten und zum Leiten des Verkehrsflusses in und aus diesen Strukturen verwendet.

Die Firewall-Regeln, die Sie letztendlich auf Ihren "+ iptables " - Dienst übertragen, müssen nicht das Verwaltungsframework neu erstellen, auf das sich " firewalld +" stützt. Aus diesem Grund ist der Regelsatz, den Sie letztendlich implementieren, wahrscheinlich viel einfacher. Wir speichern das gesamte Set hier, um so viele Rohdaten wie möglich intakt zu halten.

Sie können einige der wichtigeren Zeilen anzeigen, um sich einen Eindruck von der neu zu erstellenden Richtlinie zu verschaffen. Geben Sie dazu Folgendes ein:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Dies zeigt hauptsächlich die Regeln an, die zu einer endgültigen Entscheidung führen. Regeln, die nur zu benutzerdefinierten Ketten springen, werden nicht angezeigt.

Laden Sie den Iptables-Dienst herunter und installieren Sie ihn

Um mit der Umstellung Ihres Servers zu beginnen, müssen Sie das Paket "+ iptables-services" aus den CentOS-Repositorys herunterladen und installieren.

Laden Sie die Servicedateien herunter und installieren Sie sie, indem Sie Folgendes eingeben:

sudo yum install iptables-services

Dadurch werden die Skripte + systemd + heruntergeladen und installiert, die zum Verwalten des Dienstes + iptables + verwendet werden. Es werden auch einige Standard-Konfigurationsdateien für "+ iptables " und " ip6tables " in das Verzeichnis " / etc / sysconfig +" geschrieben.

Erstellen Sie Ihre Iptables Firewall-Regeln

Als nächstes müssen Sie die Firewall-Regeln für "+ iptables " erstellen, indem Sie die Dateien " / etc / sysconfig / iptables " und " / etc / sysconfig / ip6tables " ändern. Diese Dateien enthalten die Regeln, die beim Starten des Dienstes " iptables +" gelesen und angewendet werden.

Wie Sie Ihre Firewall-Regeln erstellen, hängt davon ab, ob der Prozess "+ system-config-firewall " installiert ist und zum Verwalten dieser Dateien verwendet wird. Überprüfen Sie oben in der Datei " / etc / sysconfig / iptables +", ob eine manuelle Bearbeitung empfohlen wird oder nicht:

sudo head -2 /etc/sysconfig/iptables

Wenn die Ausgabe so aussieht, können Sie die Dateien "+ / etc / sysconfig / iptables " und " / etc / sysconfig / ip6tables " manuell bearbeiten, um die Richtlinien für Ihre " iptables +" - Firewall zu implementieren:

output# sample configuration for iptables service
# you can edit this manually or use system-config-firewall

Öffnen und bearbeiten Sie die Dateien mit den Rechten "+ sudo +", um Ihre Regeln hinzuzufügen:

sudo nano /etc/sysconfig/iptables
sudo nano /etc/sysconfig/ip6tables

Nachdem Sie Ihre Regeln erstellt haben, können Sie Ihre IPv4- und IPv6-Regeln mit den folgenden Befehlen testen:

sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

Wenn die Ausgabe der Datei "+ / etc / sysconfig / iptables +" andererseits so aussieht, sollten Sie die Datei nicht manuell bearbeiten:

output# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.

Dies bedeutet, dass das Verwaltungstool "+ system-config-firewall +" installiert ist und zum Verwalten dieser Datei verwendet wird. Alle manuellen Änderungen werden vom Tool überschrieben. Wenn Sie dies sehen, sollten Sie Änderungen an Ihrer Firewall mit einem der zugehörigen Tools vornehmen. Geben Sie für die Textbenutzeroberfläche Folgendes ein:

sudo system-config-firewall-tui

Wenn Sie die grafische Benutzeroberfläche installiert haben, können Sie sie starten, indem Sie Folgendes eingeben:

sudo system-config-firewall

Wenn Sie Hilfe zum Erlernen der Regeln und der Syntax von "+ iptables +" benötigen, können die folgenden Handbücher hilfreich sein, auch wenn sie sich hauptsächlich an Ubuntu-Systeme richten:

Beenden Sie den FirewallD-Dienst und starten Sie den Iptables-Dienst

Als nächstes müssen wir die aktuelle "+ firewalld " - Firewall stoppen und unsere " iptables " - Dienste aufrufen. Wir werden das Konstrukt " && " verwenden, um die neuen Firewall-Dienste zu starten, sobald der Dienst " firewalld +" erfolgreich beendet wurde:

sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

Sie können überprüfen, ob + firewalld + nicht ausgeführt wird, indem Sie Folgendes eingeben:

sudo firewall-cmd --state

Sie können auch feststellen, dass die Regeln, die Sie im Verzeichnis "+ / etc / sysconfig +" eingerichtet haben, geladen und angewendet wurden, indem Sie Folgendes eingeben:

sudo iptables -S
sudo ip6tables -S

Zu diesem Zeitpunkt sind die Dienste "+ iptables " und " ip6tables " für die aktuelle Sitzung aktiv. Derzeit ist der Dienst " firewalld +" jedoch immer noch derjenige, der beim Neustart des Servers automatisch gestartet wird.

Dies ist die beste Zeit, um Ihre Firewall-Richtlinien zu testen, um sicherzustellen, dass Sie über die erforderliche Zugriffsebene verfügen, da Sie den Server neu starten können, um bei Problemen zu Ihrer alten Firewall zurückzukehren.

Deaktivieren Sie den FirewallD-Dienst und aktivieren Sie die Iptables-Dienste

Nachdem Sie Ihre Firewall-Regeln getestet haben, um sicherzustellen, dass Ihre Richtlinie ordnungsgemäß durchgesetzt wird, können Sie den Dienst "+ firewalld +" deaktivieren, indem Sie Folgendes eingeben:

sudo systemctl disable firewalld

Dadurch wird verhindert, dass der Dienst beim Booten automatisch gestartet wird. Da der "+ firewalld " - Dienst nicht manuell gestartet werden sollte, während die " iptables " - Dienste ausgeführt werden, können Sie einen zusätzlichen Schritt ausführen, indem Sie den Dienst maskieren. Dies verhindert, dass der Dienst ` firewalld +` auch manuell gestartet wird:

sudo systemctl mask firewalld

Jetzt können Sie Ihre Dienste "+ iptables " und " ip6tables +" aktivieren, damit sie beim Booten automatisch gestartet werden:

sudo systemctl enable iptables
sudo systemctl enable ip6tables

Damit sollte der Firewall-Übergang abgeschlossen sein.

Fazit

Die Implementierung einer Firewall ist ein wesentlicher Schritt, um die Sicherheit Ihrer Server zu gewährleisten. Während + firewalld + eine großartige Firewall-Lösung ist, ist es manchmal am sinnvollsten, das bekannteste Tool oder die gleichen Systeme in einer vielfältigeren Infrastruktur zu verwenden.