RHCSA-Serie: Firewall-Grundlagen und Kontrolle des Netzwerkverkehrs mit FirewallD und iptables - Teil 11
In einfachen Worten ist eine Firewall ein Sicherheitssystem, das den ein- und ausgehenden Datenverkehr in einem Netzwerk auf der Grundlage einer Reihe vordefinierter Regeln (z. B. des Paketziels/der Quelle oder der Art des Datenverkehrs) kontrolliert.
In diesem Artikel werden wir uns mit den Grundlagen von firewalld, dem standardmäßigen dynamischen Firewall-Daemon in Red Hat Enterprise Linux 7, und iptables service, dem älteren Firewall-Dienst für Linux, befassen, mit dem die meisten System- und Netzwerkadministratoren gut vertraut sind und der auch in RHEL 7 verfügbar ist.
Ein Vergleich zwischen FirewallD und iptables
Unter der Haube kommunizieren sowohl firewalld als auch der iptables-Dienst mit dem netfilter-Framework im Kernel über die gleiche Schnittstelle, wenig überraschend, den iptables-Befehl. Im Gegensatz zum iptables-Dienst kann firewalld die Einstellungen jedoch während des normalen Systembetriebs ändern, ohne dass bestehende Verbindungen verloren gehen.
Firewalld sollte standardmäßig auf Ihrem RHEL-System installiert sein, obwohl es möglicherweise nicht ausgeführt wird. Sie können dies mit den folgenden Befehlen überprüfen (firewall-config ist das Konfigurationstool für die Benutzeroberfläche):
yum info firewalld firewall-config
und
systemctl status -l firewalld.service
Auf der anderen Seite ist der iptables-Dienst nicht standardmäßig enthalten, sondern kann über installiert werden.
yum update && yum install iptables-services
Beide Daemons 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
Lesen Sie auch: Nützliche Befehle zur Verwaltung von systemd-Diensten
Was die Konfigurationsdateien betrifft, so verwendet der iptables-Dienst /etc/sysconfig/iptables (die nicht existiert, wenn das Paket nicht auf Ihrem System installiert ist). Auf einer RHEL 7-Box, die als Clusterknoten verwendet wird, 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 weiter untersuchen, nachdem wir hier und da ein paar Regeln hinzugefügt haben. Bis jetzt reicht es aus, Sie daran zu erinnern, dass Sie immer weitere Informationen zu beiden Tools finden können.
man firewalld.conf
man firewall-cmd
man iptables
Abgesehen davon denken Sie daran, einen Blick auf die Überprüfung der grundlegenden Befehle und der Systemdokumentation – Teil 1 der aktuellen Serie zu werfen, in der ich mehrere Quellen beschrieben habe, in denen Sie Informationen über die auf Ihrem RHEL 7-System installierten Pakete erhalten können.
Verwenden von iptables zum Steuern des Netzwerkverkehrs
Sie können sich auf Konfigurieren der iptables-Firewall – Teil 8 der Linux Foundation Certified Engineer (LFCE)-Reihe beziehen, um Ihr Gedächtnis über iptables-Interna aufzufrischen, bevor Sie fortfahren. So können wir direkt in die Beispiele einsteigen.
Beispiel 1: Zulassen von eingehendem und ausgehendem Webverkehr
Die TCP-Ports 80 und 443 sind die Standardports, die vom Apache-Webserver verwendet werden, um normalen (HTTP) und sicheren (HTTPS) Webverkehr zu verarbeiten. Sie können eingehenden und ausgehenden Webdatenverkehr über beide Ports an der enp0s3-Schnittstelle 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 den gesamten (oder einen Teil) von Datenverkehr blockieren müssen, der aus einem bestimmten Netzwerk stammt, z. B. 192.168.1.0/24:
iptables -I INPUT -s 192.168.1.0/24 -j DROP
verwirft alle Pakete, die aus dem Netzwerk 192.168.1.0/24 kommen, wohingegen
iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
lässt nur eingehenden Datenverkehr über Port 22 zu.
Beispiel 3: Umleiten von eingehendem Datenverkehr an ein anderes Ziel
Wenn Sie Ihre RHEL 7-Box nicht nur als Software-Firewall, sondern auch als tatsächliche hardwarebasierte Firewall verwenden, sodass sie sich zwischen zwei unterschiedlichen Netzwerken befindet, muss die IP-Weiterleitung in Ihrem System bereits aktiviert sein. Wenn nicht, müssen Sie /etc/sysctl.conf bearbeiten und den Wert von net.ipv4.ip_forward wie folgt auf 1 setzen:
net.ipv4.ip_forward = 1
Speichern Sie dann die Änderung, schließen Sie Ihren Texteditor und führen Sie schließlich den folgenden Befehl aus, um die Änderung zu übernehmen:
sysctl -p /etc/sysctl.conf
Angenommen, Sie haben einen Drucker auf einer internen Box mit der IP-Adresse 192.168.0.10 installiert, wobei der CUPS-Dienst Port 631 (sowohl auf dem Druckserver als auch in Ihrer Firewall) überwacht. Um Druckanforderungen 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 nacheinander liest, also stellen Sie sicher, dass die Standardrichtlinien oder spätere Regeln die in den obigen Beispielen beschriebenen Regeln nicht außer Kraft setzen.
Erste Schritte mit FirewallD
Eine der Änderungen, die mit firewalld eingeführt wurden, sind Zonen. Dieses Konzept ermöglicht es, Netzwerke in verschiedene Zonen zu unterteilen. Die Vertrauensstufe, die der Benutzer auf die Geräte und den Datenverkehr innerhalb dieses Netzwerks gelegt hat.
So listen Sie die aktiven Zonen auf:
firewall-cmd --get-active-zones
Im folgenden Beispiel ist die öffentliche Zone aktiv und ihr wurde automatisch die Schnittstelle enp0s3 zugewiesen. So zeigen Sie alle Informationen zu einer bestimmten Zone an:
firewall-cmd --zone=public --list-all
Da Sie mehr über Zonen im RHEL 7-Sicherheitsleitfaden lesen können, werden wir hier nur einige spezifische Beispiele auflisten.
Beispiel 4: Zulassen von Diensten durch die Firewall
Um eine Liste der unterstützten Dienste zu erhalten, verwenden Sie.
firewall-cmd --get-services
Um HTTP- und HTTPS-Webverkehr durch die Firewall zu lassen, gilt ab sofort und bei nachfolgenden Starts:
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–zone nicht angegeben wird, wird die Standardzone (Sie können dies mit firewall-cmd –get-default-zone überprüfen) verwendet.
Um die Regel zu entfernen, ersetzen Sie in den obigen Befehlen das Wort add durch remove.
Beispiel 5: IP/Portweiterleitung
Zunächst müssen Sie herausfinden, ob die Maskierung für die gewünschte Zone aktiviert ist:
firewall-cmd --zone=MyZone --query-masquerade
In der Abbildung unten sehen wir, dass die Maskierung für die externe Zone aktiviert ist, aber nicht für die Öffentlichkeit:
Sie können entweder die Maskierung für die Öffentlichkeit aktivieren:
firewall-cmd --zone=public --add-masquerade
oder verwenden Sie Masquerading in external. 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.
Weitere Beispiele finden Sie in Teil 9 der RHCSA-Serie, in dem wir erklärt haben, wie Sie die Ports, die normalerweise von einem Webserver und einem FTP-Server verwendet werden, zulassen oder deaktivieren und wie Sie die entsprechende Regel ändern, wenn der Standardport für diese Dienste geändert wird. Darüber hinaus kannst du dich auf das firewalld-Wiki beziehen, um weitere Beispiele zu finden.
Lesen Sie auch: Nützliche FirewallD-Beispiele zum Konfigurieren der Firewall in RHEL 7
Schlussfolgerung
In diesem Artikel haben wir erläutert, was eine Firewall ist, welche Dienste zum Implementieren einer Firewall in RHEL 7 verfügbar sind, und einige Beispiele bereitgestellt, die Ihnen den Einstieg in diese Aufgabe erleichtern können. Wenn Sie Kommentare, Vorschläge oder Fragen haben, können Sie uns dies über das untenstehende Formular mitteilen. Vielen Dank im Voraus!







