RHCSA Serie: Firewall-Grundlagen und Netzwerkverkehrssteuerung mit FirewallD und Iptables – Teil 11

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).

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

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
Check FirewallD Information

und,

# systemctl status -l firewalld.service
Check FirewallD Status

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:

Iptables Firewall Configuration

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

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

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
List all FirewallD Zones

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
List All Supported 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:

Check Masquerading Status

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/