In einfachen Worten ist eine Firewall ein Sicherheitssystem, das den eingehenden und ausgehenden Datenverkehr in einem Netzwerk basierend auf einer Reihe von vordefinierten Regeln kontrolliert (wie zum Beispiel das Paketziel-/Quelle oder den Typ des Datenverkehrs).

In diesem Artikel werden wir die Grundlagen von firewalld, dem standardmäßigen dynamischen Firewall-Dämon in Red Hat Enterprise Linux 7, und dem iptables-Dienst, dem Legacy-Firewall-Dienst für Linux, überprüfen, mit dem die meisten System- und Netzwerkadministratoren vertraut sind und der auch in RHEL 7 verfügbar ist.
A Comparison Between FirewallD and Iptables
Unter der Haube sprechen sowohl firewalld als auch der iptables-Dienst über die gleiche Schnittstelle mit dem netfilter-Framework im Kernel, nicht überraschend, über den iptables-Befehl. Im Gegensatz zum iptables-Dienst kann firewalld jedoch die Einstellungen während des normalen Systembetriebs ändern, ohne dass bestehende Verbindungen verloren gehen.
Firewalld sollte standardmäßig in Ihrem RHEL-System installiert sein, auch wenn es möglicherweise nicht läuft. Sie können dies mit den folgenden Befehlen überprüfen (firewall-config ist das Benutzeroberflächenkonfigurationstool):
# yum info firewalld firewall-config

und,
# systemctl status -l firewalld.service

Auf der anderen Seite ist der iptables-Dienst standardmäßig nicht enthalten, kann jedoch installiert werden durch.
# yum update && yum install iptables-services
Beide Dämonen können mit den üblichen systemd-Befehlen gestartet und aktiviert werden, um beim Booten zu starten:
# systemctl start firewalld.service | iptables-service.service # systemctl enable firewalld.service | iptables-service.service
Weiterlesen: Nützliche Befehle zur Verwaltung von Systemd-Diensten
Was die Konfigurationsdateien betrifft, verwendet der iptables-Dienst die Datei /etc/sysconfig/iptables
(die nicht vorhanden sein wird, wenn das Paket nicht in Ihrem System installiert ist). Auf einem als Clusterknoten verwendeten RHEL 7-System sieht diese Datei wie folgt aus:

Während firewalld seine Konfiguration in zwei Verzeichnissen speichert, /usr/lib/firewalld
und /etc/firewalld
:
# ls /usr/lib/firewalld /etc/firewalld

Wir werden diese Konfigurationsdateien später in diesem Artikel genauer untersuchen, nachdem wir hier und da ein paar Regeln hinzugefügt haben. Bis dahin genügt es, Sie daran zu erinnern, dass Sie immer mehr Informationen über beide Tools finden können.
# man firewalld.conf # man firewall-cmd # man iptables
Abgesehen davon, denken Sie daran, einen Blick auf Überprüfung wesentlicher Befehle & Systemdokumentation – Teil 1 der aktuellen Serie zu werfen, in der ich mehrere Quellen beschrieben habe, wo Sie Informationen über die auf Ihrem RHEL 7 System installierten Pakete erhalten können.
Verwendung von Iptables zur Steuerung des Netzwerkverkehrs
Sie können sich auf Konfigurieren der Iptables Firewall – Teil 8 der Serie Linux Foundation Certified Engineer (LFCE) beziehen, um Ihr Wissen über die internen Funktionen von iptables aufzufrischen, bevor Sie weitermachen. Dadurch können wir direkt mit den Beispielen beginnen.
Beispiel 1: Zulassen von eingehendem und ausgehendem Webverkehr
Die TCP-Ports 80 und 443 sind die Standardports, die vom Apache Webserver zur Bearbeitung von normalem (HTTP) und sicheren (HTTPS) Webverkehr verwendet werden. Sie können den eingehenden und ausgehenden Webverkehr über beide Ports auf der Schnittstelle enp0s3 wie folgt zulassen:
# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Beispiel 2: Blockieren aller (oder einiger) eingehender Verbindungen aus einem bestimmten Netzwerk
Es kann vorkommen, dass Sie zu bestimmten Zeiten den gesamten (oder einige) Datenverkehr aus einem bestimmten Netzwerk blockieren müssen, zum Beispiel aus 192.168.1.0/24:
# iptables -I INPUT -s 192.168.1.0/24 -j DROP
wird alle Pakete aus dem Netzwerk 192.168.1.0/24 abwerfen, während
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
nur den eingehenden Verkehr über Port 22 zulässt.
Beispiel 3: Umleiten des eingehenden Datenverkehrs zu einem anderen Ziel
Wenn Sie Ihren RHEL 7-Computer nicht nur als Software-Firewall, sondern auch als tatsächliche Hardware-Firewall verwenden, sodass er zwischen zwei verschiedenen Netzwerken sitzt, muss die IP-Weiterleitung bereits in Ihrem System aktiviert sein. Wenn dies nicht der Fall ist, müssen Sie die Datei /etc/sysctl.conf
bearbeiten und den Wert von net.ipv4.ip_forward auf 1 setzen, wie folgt:
net.ipv4.ip_forward = 1
dann speichern Sie die Änderung, schließen Sie Ihren Texteditor und führen Sie abschließend den folgenden Befehl aus, um die Änderung anzuwenden:
# sysctl -p /etc/sysctl.conf
Zum Beispiel können Sie einen Drucker an einem internen Computer mit der IP-Adresse 192.168.0.10 installiert haben, wobei der CUPS-Dienst auf Port 631 lauscht (sowohl auf dem Druckserver als auch auf Ihrer Firewall). Um Druckanfragen von Clients auf der anderen Seite der Firewall weiterzuleiten, sollten Sie die folgende iptables-Regel hinzufügen:
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
Bitte beachten Sie, dass iptables seine Regeln sequenziell liest, stellen Sie also sicher, dass die Standardrichtlinien oder spätere Regeln die oben beschriebenen Regeln nicht überschreiben.
Einführung in FirewallD
Eine der mit firewalld eingeführten Änderungen sind Zonen. Dieses Konzept ermöglicht es, Netzwerke in verschiedene Zonen mit unterschiedlichem Vertrauensniveau für die Geräte und den Verkehr innerhalb dieses Netzwerks aufzuteilen.
Um die aktiven Zonen anzuzeigen:
# firewall-cmd --get-active-zones
In dem untenstehenden Beispiel ist die öffentliche Zone aktiv, und das enp0s3-Interface wurde automatisch dieser Zone zugewiesen. Um alle Informationen zu einer bestimmten Zone anzuzeigen:
# firewall-cmd --zone=public --list-all

Da Sie mehr über Zonen im RHEL 7-Sicherheitsleitfaden erfahren können, werden wir hier nur einige spezifische Beispiele auflisten.
Beispiel 4: Erlauben von Diensten durch die Firewall
Um eine Liste der unterstützten Dienste zu erhalten, verwenden Sie.
# firewall-cmd --get-services

Um den HTTP– und HTTPS-Webverkehr sofort und bei zukünftigen Neustarts durch die Firewall zu erlauben:
# firewall-cmd --zone=MyZone --add-service=http # firewall-cmd --zone=MyZone --permanent --add-service=http # firewall-cmd --zone=MyZone --add-service=https # firewall-cmd --zone=MyZone --permanent --add-service=https # firewall-cmd --reload
Wenn der Code>-Zone weggelassen wird, wird die Standardzone verwendet (Sie können dies mit firewall-cmd –get-default-zone überprüfen).
Um die Regel zu entfernen, ersetzen Sie das Wort „add“ in den obigen Befehlen durch „remove“.
Beispiel 5: IP/Port-Weiterleitung
Zunächst müssen Sie herausfinden, ob das Maskieren für die gewünschte Zone aktiviert ist:
# firewall-cmd --zone=MyZone --query-masquerade
Auf dem Bild unten können wir sehen, dass das Maskieren für die externe Zone aktiviert ist, aber nicht für öffentlich:

Sie können entweder das Maskieren für „öffentlich“ aktivieren:
# firewall-cmd --zone=public --add-masquerade
oder das Maskieren in der externen Zone verwenden. Hier ist, was wir tun würden, um Beispiel 3 mit firewalld zu replizieren:
# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
Und vergessen Sie nicht, die Firewall neu zu laden.
Sie können weitere Beispiele auf Teil 9 der RHCSA-Serie finden, wo wir erklärt haben, wie man die von einem Webserver und einem FTP-Server verwendeten Ports zulässt oder sperrt, und wie man die entsprechende Regel ändert, wenn der Standardport für diese Dienste geändert wird. Darüber hinaus können Sie sich für weitere Beispiele auch auf der Firewalld-Wiki beziehen.
Lesen Sie auch: Nützliche Firewalld-Beispiele zur Firewall-Konfiguration in RHEL 7
Schlussfolgerung
In diesem Artikel haben wir erklärt, was eine Firewall ist, welche Dienste zur Implementierung einer in RHEL 7 verfügbar sind und einige Beispiele bereitgestellt, die Ihnen bei der Einstieg in diese Aufgabe helfen können. Wenn Sie Kommentare, Vorschläge oder Fragen haben, zögern Sie bitte nicht, uns mithilfe des unten stehenden Formulars mitzuteilen. Vielen Dank im Voraus!
Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/