Einführung
Das Freischalten eines Netzwerkdienstes ist nur die halbe Miete bei der Systemadministration. Sie müssen auch kontrollieren, welcher Datenverkehr von der Host-Firewall zugelassen wird. Auf Red Hat-Systemen verwaltet firewalld die Firewall-Richtlinien über Zonen, Dienste, Ports und sogenannte Rich Rules.
In diesem Lab ist ein kleiner HTTP-Dienst für Sie auf dem TCP-Port 8088 vorbereitet. Sie werden die Standardzone untersuchen, den Port zur Laufzeit öffnen, die Regel permanent machen, die pauschale Port-Freigabe durch eine quellbeschränkte Rich Rule ersetzen und den finalen Firewall-Status überprüfen.
Firewall und Dienst-Baseline untersuchen
In diesem Schritt untersuchen Sie den aktuellen Status von firewalld und den vorbereiteten Netzwerkdienst. Die Firewall sollte laufen, bevor Sie Änderungen an den Regeln vornehmen.
Die Vorbereitung erhält die Freigaben für SSH und das LabEx-Browserterminal auf 3002/tcp dauerhaft in der Zone public. Behalten Sie diese Verwaltungsregeln bei, wenn Sie die Firewall-Richtlinie für die Anwendung ändern.
Wechseln Sie in das Projektverzeichnis.
cd /home/labex/project
Überprüfen Sie, ob firewalld läuft. Verwenden Sie in dieser Umgebung sudo firewall-cmd sowohl für Lese- als auch für Schreibvorgänge.
sudo firewall-cmd --state
Zeigen Sie die Standardzone an.
sudo firewall-cmd --get-default-zone
Untersuchen Sie die aktive Zone. Beachten Sie, dass ssh zugelassen ist, damit die LabEx-SSH-Sitzung erreichbar bleibt.
sudo firewall-cmd --list-all
Bestätigen Sie, dass der Übungs-Webdienst läuft und auf Port 8088 lauscht.
systemctl is-active rhcsa-fw-web.service
ss -ltn | grep ':8088'
curl -s http://127.0.0.1:8088/
Überprüfen Sie, ob der Port 8088/tcp in firewalld noch nicht allgemein geöffnet ist.
sudo firewall-cmd --query-port=8088/tcp || echo "port 8088 is not open in the zone"
Einen Laufzeit-Port öffnen
In diesem Schritt fügen Sie eine Laufzeit-Firewall-Regel hinzu. Laufzeitregeln werden sofort wirksam, verschwinden jedoch nach einem Neuladen von firewalld, es sei denn, Sie machen sie permanent.
Öffnen Sie den TCP-Port 8088 in der aktuellen Laufzeitkonfiguration. Da keine Zone angegeben ist, wendet firewall-cmd die Änderung auf die Standardzone an, die Sie zuvor untersucht haben.
sudo firewall-cmd --add-port=8088/tcp
Fragen Sie die Laufzeitregel ab. Ein Ergebnis von yes bedeutet, dass die aktive Firewall den Port derzeit zulässt.
sudo firewall-cmd --query-port=8088/tcp
Listen Sie die Laufzeit-Ports auf. Dies gibt Ihnen einen kompakten Überblick über die manuell geöffneten Ports in der aktiven Zone.
sudo firewall-cmd --list-ports
Überprüfen Sie die permanente Konfiguration. Sie sollte weiterhin no melden, da Laufzeit- und permanente Konfiguration getrennt sind; eine reine Laufzeitregel funktioniert zwar jetzt, würde aber beim Neuladen von firewalld verloren gehen.
sudo firewall-cmd --permanent --query-port=8088/tcp || echo "port 8088 is not permanent yet"
Die Port-Regel permanent machen
In diesem Schritt fügen Sie denselben Port zur permanenten Konfiguration hinzu und laden firewalld neu. Das Neuladen wendet die permanente Konfiguration auf die Laufzeit-Firewall an.
Fügen Sie die permanente Port-Regel hinzu. Die Option --permanent schreibt die Regel in die firewalld-Konfiguration, anstatt nur die laufende Firewall zu ändern.
sudo firewall-cmd --permanent --add-port=8088/tcp
Laden Sie firewalld neu. Das Neuladen baut die Laufzeit-Firewall aus der permanenten Konfiguration neu auf. Deshalb testet dieser Schritt, ob Ihre gespeicherte Regel einen Neustart übersteht.
sudo firewall-cmd --reload
Fragen Sie sowohl die Laufzeit- als auch die permanente Konfiguration ab. Der erste Befehl prüft die aktive Firewall, der zweite die gespeicherte Konfiguration.
sudo firewall-cmd --query-port=8088/tcp
sudo firewall-cmd --permanent --query-port=8088/tcp
Beide Befehle sollten yes zurückgeben.
Den offenen Port durch eine Rich Rule ersetzen
In diesem Schritt schränken Sie den Zugriff ein, anstatt den Dienst für jede Quelle offen zu lassen. Eine Rich Rule kann eine Quelladresse und einen Zielport in einer einzigen Regel kombinieren.
Entfernen Sie die pauschale permanente Port-Freigabe. Dies bereitet die Firewall auf eine restriktivere Regel vor; andernfalls wäre die Rich Rule zwar vorhanden, aber die allgemeine Port-Regel würde weiterhin jede Quelle zulassen.
sudo firewall-cmd --permanent --remove-port=8088/tcp
Fügen Sie eine Rich Rule hinzu, die 8088/tcp nur aus dem Dokumentationsnetzwerk 192.0.2.0/24 zulässt. Rich Rules sind nützlich, wenn eine einfache Dienst- oder Port-Regel nicht spezifisch genug ist, beispielsweise wenn Einschränkungen der Quelladresse erforderlich sind.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" port port="8088" protocol="tcp" accept'
Laden Sie firewalld neu, um die permanente Änderung anzuwenden.
sudo firewall-cmd --reload
Bestätigen Sie, dass der allgemeine Port nicht mehr offen ist. Das erwartete Ergebnis no bedeutet, dass der Dienst nicht mehr durch eine allgemeine Port-Regel exponiert ist.
sudo firewall-cmd --query-port=8088/tcp || echo "broad port rule removed"
Listen Sie die Rich Rules auf. Die Ausgabe der Rich Rule ist der Beweis dafür, dass die restriktivere, quellbasierte Regel die pauschale Öffnung ersetzt hat.
sudo firewall-cmd --list-rich-rules
Den finalen Firewall-Status prüfen
In diesem Schritt überprüfen Sie den finalen Status. Eine abschließende Verifizierung ist eine wichtige administrative Gewohnheit: Bestätigen Sie, dass der Dienst läuft, SSH weiterhin erlaubt ist, der allgemeine Port geschlossen ist und die restriktive Regel existiert.
Listen Sie die aktive Zone auf.
sudo firewall-cmd --list-all
Listen Sie die permanenten Rich Rules auf.
sudo firewall-cmd --permanent --list-rich-rules
Bestätigen Sie, dass SSH weiterhin erlaubt ist.
sudo firewall-cmd --query-service=ssh
Bestätigen Sie, dass der Dienst selbst lokal weiterhin antwortet. Der Zugriff über das Loopback-Interface verifiziert den Dienstprozess; firewalld kontrolliert den eingehenden Zonen-Datenverkehr separat.
curl -s http://127.0.0.1:8088/
Zusammenfassung
Sie haben die Verwaltung der Host-Firewall mit firewalld geübt. Sie haben die Standardzone untersucht, die Ausführung eines Netzwerkdienstes bestätigt, eine Laufzeit-Port-Regel hinzugefügt, eine Regel permanent gemacht, firewalld neu geladen, eine pauschale Öffnung durch eine quellbeschränkte Rich Rule ersetzt und den finalen Firewall-Status überprüft.



