So richten Sie FirewallD in RHEL-basierten Systemen ein
Der Netzfilter, wie wir alle wissen, ist eine Firewall in Linux. Firewalld ist ein dynamischer Daemon zur Verwaltung von Firewalls mit Unterstützung für Netzwerkzonen. In der früheren Version, RHEL & CentOS, haben wir iptables als Daemon für das Paketfilter-Framework verwendet.
In neueren Versionen von RHEL-basierten Distributionen wie Fedora, Rocky Linux, CentOS Stream, AlmaLinux und openSUSE wird die iptables-Schnittstelle durch firewalld ersetzt.
Es wird empfohlen, Firewalld anstelle von iptables zu verwenden, da dies in Zukunft möglicherweise nicht mehr möglich ist. iptables werden jedoch weiterhin unterstützt und können mit dem Befehl yum installiert werden. Wir können Firewalld und iptables nicht beide im selben System aufbewahren, was zu Konflikten führen kann.
In iptables haben wir früher als INPUT, OUTPUT & FORWARD CHAINS konfiguriert, aber hier in Firewalld verwendet das Konzept Zonen. Standardmäßig sind in firewalld verschiedene Zonen verfügbar, die in diesem Artikel erläutert werden.
Die Grundzonen sind die öffentliche Zone und die private Zone. Um diese Zonen zu umgehen, müssen wir die Schnittstelle mit der angegebenen Zonenunterstützung hinzufügen und dann können wir die Dienste zu firewalld hinzufügen.
Standardmäßig sind viele Dienste verfügbar, eine der besten Eigenschaften von firewalld ist, dass es mit vordefinierten Diensten geliefert wird und wir diese Dienste als Beispiel nehmen können, um unsere Dienste hinzuzufügen, indem wir sie einfach kopieren.
Firewalld funktioniert auch hervorragend mit IPv4-, IPv6- und Ethernet-Bridges. Wir können eine separate Laufzeit und permanente Konfiguration in firewalld haben.
Beginnen wir damit, wie man mit Zonen arbeitet und unsere eigenen Dienste erstellt und viel mehr aufregende Verwendung von firewalld in Linux.
Unsere Testumgebung
Operating System : Red Hat Enterprise Linux release 9.0 (Plow)
IP Address : 192.168.0.159
Host-name : tecmint-rhel9
Schritt 1: Installation von Firewalld auf RHEL-basierten Systemen
1. Das Firewalld-Paket wird standardmäßig in RHEL, Fedora, Rocky Linux, CentOS Stream, AlmaLinux und openSUSE installiert. Wenn nicht, können Sie es mit dem folgenden yum-Befehl installieren.
# yum install firewalld -y
2. Nachdem das firewalld-Paket installiert wurde, ist es an der Zeit zu überprüfen, ob der iptables-Dienst läuft oder nicht. Wenn er ausgeführt wird, müssen Sie den iptables-Dienst mit den folgenden Befehlen stoppen und maskieren (nicht mehr verwenden).
# systemctl status iptables
systemctl stop iptables
systemctl mask iptables
Schritt 2: Grundlegendes zu Firewall-Komponenten (Zonen und Regeln)
3. Bevor ich mich der Firewalld-Konfiguration zuwende, möchte ich die einzelnen Zonen besprechen. Standardmäßig sind einige Zonen verfügbar. Wir müssen die Schnittstelle der Zone zuweisen. Eine Zone definiert die Zone, für die die Ebene "Vertrauenswürdig" oder "Verweigert" für die Schnittstelle verwendet wurde, um eine Verbindung herzustellen. Eine Zone kann Dienste und Ports enthalten.
Hier werden wir alle Zonen beschreiben, die in Firewalld verfügbar sind.
- Drop Zone: Alle eingehenden Pakete werden verworfen, wenn wir eine Drop Zone verwenden. Dies ist dasselbe, was wir verwenden, um iptables -j drop hinzuzufügen. Wenn wir die Drop-Regel verwenden, bedeutet dies, dass es keine Antwort gibt, sondern nur ausgehende Netzwerkverbindungen verfügbar sind.
- Block Zone: Die Blockzone verweigert die Ablehnung eingehender Netzwerkverbindungen mit dem Zusatz icmp-host-prohibited. Es werden nur hergestellte Verbindungen innerhalb des Servers zugelassen.
- Öffentliche Zone: Um die ausgewählten Verbindungen zu akzeptieren, können wir Regeln in der öffentlichen Zone definieren. Dadurch kann nur der spezifische Port in unserem Server geöffnet werden, andere Verbindungen werden unterbrochen.
- Externe Zone: Diese Zone fungiert als Router-Option, wenn Masquerading aktiviert ist. Andere Verbindungen werden verworfen und nicht akzeptiert, und nur bestimmte Verbindungen sind zulässig.
- DMZ-Zone: Wenn wir der Öffentlichkeit den Zugriff auf einige der Dienste ermöglichen müssen, können Sie dies in der DMZ-Zone definieren. Auch diese hat die Eigenschaft, dass nur ausgewählte eingehende Verbindungen akzeptiert werden.
- Arbeitszone: In dieser Zone können wir nur interne Netzwerke definieren, d.h. privater Netzwerkverkehr ist erlaubt.
- Home-Zone: Diese Zone wird speziell in Home-Bereichen verwendet, wir können diese Zone verwenden, um den anderen Computern in Netzwerken zu vertrauen, dass sie Ihren Computer nicht beschädigen, wie in jeder Zone. Auch dies lässt nur die ausgewählten eingehenden Verbindungen zu.
- Interne Zone: Diese ist ähnlich wie die Arbeitszone mit ausgewählten erlaubten Verbindungen.
- Vertrauenswürdige Zone: Wenn wir die vertrauenswürdige Zone festlegen, wird der gesamte Datenverkehr akzeptiert.
Nachdem Sie eine bessere Vorstellung von Zonen haben, ermitteln wir nun die verfügbaren Zonen und Standardzonen und listen Sie alle Zonen mit den folgenden Befehlen auf.
Auflisten von Firewall-Zonen
# firewall-cmd --get-zones
Firewalld-Standardzone auflisten
# firewall-cmd --get-default-zone
Alle Firewall-Zonen auflisten
# firewall-cmd --list-all-zones
Hinweis: Die Ausgabe des obigen Befehls passt nicht auf eine einzelne Seite, da dies alle Zonen wie block, dmz, drop, external, home, internal, public, trusted und work auflistet. Wenn die Zonen über umfangreiche Regeln verfügen, werden aktivierte Dienste oder Ports ebenfalls mit den entsprechenden Zoneninformationen aufgelistet.
Schritt 3: Festlegen der Standard-Firewalld-Zone
4. Wenn Sie die Standardzone als interne, externe, Drop-, Arbeits- oder eine andere Zone festlegen möchten, können Sie den folgenden Befehl verwenden, um die Standardzone festzulegen. Hier verwenden wir standardmäßig die "interne" Zone.
# firewall-cmd --set-default-zone=internal
5. Überprüfen Sie nach dem Festlegen der Zone die Standardzone mit dem folgenden Befehl.
# firewall-cmd --get-default-zone
6. Hier ist unsere Schnittstelle enp0s3, Wenn wir die Zone überprüfen müssen, in der die Schnittstelle begrenzt ist, können wir den folgenden Befehl verwenden.
# firewall-cmd --get-zone-of-interface=enp0s3
7. Ein weiteres interessantes Merkmal von firewalld ist, dass 'icmptype' einer der icmp-Typen ist, die von firewalld unterstützt werden. Um eine Liste der unterstützten icmp-Typen zu erhalten, können wir den folgenden Befehl verwenden.
# firewall-cmd --get-icmptypes
Schritt 4: Erstellen eigener Dienste in Firewalld
8. Dienste sind eine Reihe von Regeln mit Ports und Optionen, die von Firewalld verwendet werden. Dienste, die aktiviert sind, werden automatisch geladen, wenn der Firewalld-Dienst aktiv ist.
Standardmäßig sind viele Dienste verfügbar. Verwenden Sie den folgenden Befehl, um die Liste aller verfügbaren Dienste abzurufen.
# firewall-cmd --get-services
9. Um eine Liste aller standardmäßig verfügbaren Dienste zu erhalten, gehen Sie in das folgende Verzeichnis, hier erhalten Sie die Liste der Dienste.
# cd /usr/lib/firewalld/services/
10. Um einen eigenen Dienst zu erstellen, müssen Sie ihn an der folgenden Stelle definieren. Wenn ich hier beispielsweise einen Dienst für den RTMP-Port 1935 hinzufügen möchte, erstellen Sie zunächst eine Kopie eines der Dienste.
# cd /etc/firewalld/services/
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
Navigieren Sie dann zu dem Speicherort, an den unsere Dienstdatei kopiert wurde, und benennen Sie die Datei als Nächstes in "ssh.xml" in "rtmp.xml" um, wie in der folgenden Abbildung gezeigt.
# cd /etc/firewalld/services/
mv ssh.xml rtmp.xml
ls -l rtmp.xml
11. Öffnen und bearbeiten Sie als Nächstes die Datei als Überschrift, Beschreibung, Protokoll und Portnummer, die wir für den RTMP-Dienst verwenden müssen, wie in der folgenden Abbildung gezeigt.
12. Um diese Änderungen zu aktivieren, starten Sie den firewalld-Dienst neu oder laden Sie die Einstellungen neu.
# firewall-cmd --reload
13. Um zu bestätigen, ob ein Dienst hinzugefügt wurde oder nicht, führen Sie den folgenden Befehl aus, um eine Liste der verfügbaren Dienste zu erhalten.
# firewall-cmd --get-services
Schritt 5: Zuweisen von Diensten zu Firewall-Zonen
14. Hier werden wir sehen, wie Sie die Firewall mit dem Befehl firewall-cmd verwalten. Geben Sie den folgenden Befehl ein, um den aktuellen Status der Firewall und aller aktiven Zonen zu ermitteln.
# firewall-cmd --state
firewall-cmd --get-active-zones
15. Um die öffentliche Zone für die Schnittstelle enp0s3 zu erhalten, ist dies die Standardschnittstelle, die in der Datei /etc/firewalld/firewalld.conf als DefaultZone=public definiert ist.
Um alle verfügbaren Dienste in dieser Standardschnittstellenzone aufzulisten.
# firewall-cmd --get-service
Schritt 6: Hinzufügen von Diensten zu Firewall-Zonen
16. In den obigen Beispielen haben wir gesehen, wie wir unsere eigenen Dienste erstellen können, indem wir den RTMP-Dienst erstellen, hier sehen wir, wie wir den rtmp-Dienst auch zur Zone hinzufügen.
# firewall-cmd --add-service=rtmp
17. Um die hinzugefügte Zone zu entfernen, geben Sie ein.
# firewall-cmd --zone=public --remove-service=rtmp
Der obige Schritt war nur ein vorübergehender Zeitraum. Um es dauerhaft zu machen, müssen wir den folgenden Befehl mit der Option –permanent ausführen.
# firewall-cmd --add-service=rtmp --permanent
firewall-cmd --reload
18. Definieren Sie Regeln für den Netzwerkquellenbereich und öffnen Sie einen der Ports. Wenn Sie z. B. einen Netzwerkbereich öffnen möchten, z. B. "192.168.0.0/24" und Port "1935", verwenden Sie die folgenden Befehle.
# firewall-cmd --permanent --add-source=192.168.0.0/24
firewall-cmd --permanent --add-port=1935/tcp
Stellen Sie sicher, dass Sie den firewalld-Dienst neu laden, nachdem Sie Dienste oder Ports hinzugefügt oder entfernt haben.
# firewall-cmd --reload
firewall-cmd --list-all
Schritt 7: Hinzufügen von Firewalld-Rich-Regeln für den Netzwerkbereich
19. Wenn ich Dienste wie http, https, vnc-server und PostgreSQL zulassen möchte, verwende ich die folgenden Regeln. Fügen Sie zunächst die Regel hinzu und machen Sie sie dauerhaft, laden Sie die Regeln neu und überprüfen Sie den Status.
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept' --permanent
Nun kann der Netzwerkbereich 192.168.0.0/24 den oben genannten Dienst von meinem Server aus nutzen. Die Option –permanent kann in jeder Regel verwendet werden, aber wir müssen die Regel definieren und mit dem Client-Zugang überprüfen, danach müssen wir sie dauerhaft machen.
20. Nachdem Sie die oben genannten Regeln hinzugefügt haben, vergessen Sie nicht, die Firewall-Regeln neu zu laden und die Regeln wie folgt aufzulisten:
# firewall-cmd --reload
firewall-cmd --list-all
Um mehr über Firewalld zu erfahren.
# man firewalld
Das war's, wir haben gesehen, wie man einen Netzfilter mit Firewalld in RHEL-basierten Distributionen wie Fedora, Rocky Linux, CentOS Stream, AlmaLinux und openSUSE einrichtet.
Schlussfolgerung
Net-Filter ist das Framework für eine Firewall für jede einzelne Linux-Distribution. In jeder RHEL- und CentOS-Edition haben wir iptables verwendet, aber in neueren Versionen haben sie Firewalld eingeführt. Es ist einfacher, firewalld zu verstehen und zu verwenden. Ich hoffe, Ihnen hat der Artikel gefallen.
















