Startseite
» Gewusst wie
»
Öffnen Sie nur den Webverkehr, den Ihr SLES 15-Server benötigt.
Öffnen Sie nur den Webverkehr, den Ihr SLES 15-Server benötigt.
Beispielszenario: Stellen Sie sich einen Administrator vor, der einen fiktiven SLES-15-Server namens web01 für den Betrieb einer kleinen öffentlichen Website vorbereitet. Ziel ist es, eingehende HTTP-Verbindungen über TCP-Port 80 zu ermöglichen und gleichzeitig den bestehenden SSH-Administrationspfad beizubehalten. Dies ist ein Beispiel zur Veranschaulichung und kein Testbericht oder eine Behauptung, dass jede SLES-15-Installation dieselben Schnittstellennamen oder Dienste verwendet.
Unter SLES 15 firewalldist firewalld das Standard-Firewall-Framework und firewall-cmdsteuert dessen Funktion. Zuerst wird die aktive Zone identifiziert und der Fernzugriff überprüft. Anschließend wird der kleinste erforderliche Dienst in der permanenten Konfiguration zu dieser Zone hinzugefügt und das System neu gestartet. Der SUSE-Leitfaden „Sicherheit und Härtung für SLES 15 SP7“ beschreibt dieses zonenbasierte Modell und die Unterscheidung zwischen Laufzeit- und permanenten Regeln. Diese Schritte setzen voraus, dass firewalld installiert ist und ausgeführt wird. Bei älteren, aktualisierten Systemen ist möglicherweise eine separate Migrationsprüfung erforderlich.
1. Überprüfen Sie den Dienst und die aktive Zone, bevor Sie die Regeln ändern.
Stellen Sie eine Verbindung über die Serverkonsole oder eine Management-Sitzung her, die Sie bei Netzwerkunterbrechung wiederherstellen können. Wenn Sie über SSH verbunden sind, lassen Sie diese Sitzung während der Firewall-Änderungen geöffnet. Stellen Sie sicher, dass firewalld ausgeführt wird und prüfen Sie, welche Zone die Schnittstelle verwaltet.
Der erste Befehl sollte eine Meldung ausgeben running. Der Befehl `active-zones` listet Zonen auf, denen Schnittstellen oder Quelladressen zugewiesen sind; es können mehrere angezeigt werden. Im fiktiven Beispiel `web01` wird beispielsweise eine publicSchnittstelle angezeigt ens192. Verwenden Sie in späteren Befehlen die Zone, die der eingehenden Netzwerkschnittstelle zugeordnet ist. Gehen Sie nicht davon aus, dass die Schnittstelle den Namen `<interface1>` trägt eth0, und nehmen Sie nicht an, publicdass `<interface1>` aktiv ist, nur weil dies ein üblicher Standardwert ist.
Beispielhafte Terminalansicht für die erste Überprüfung: firewalld meldet, dass es läuft, und ens192 erscheint in der öffentlichen Zone.
Wenn der Dienst nicht ausgeführt wird, überprüfen Sie seinen Status, bevor Sie ihn starten sudo systemctl status firewalld. Bei Standardinstallationen von SLES 15 ist firewalld standardmäßig installiert und aktiviert. Image-Profile, Upgrades oder lokale Richtlinien können jedoch abweichen. Wenn firewalld installiert, aber gestoppt ist, starten und aktivieren Sie es erst, nachdem Sie sichergestellt haben, dass die aktuellen Richtlinien Ihre benötigten Zugriffsrechte gewährleisten. sudo systemctl enable --now firewalldAuf einem remote verwalteten Host überprüfen Sie den Konsolenzugriff und Ihre SSH-Berechtigung, bevor Sie eine Firewall aktivieren, deren aktuelle Regeln unbekannt sind.
2. Bestätigen Sie die Dienstdefinition und sichern Sie SSH.
Ein firewalld-Dienst ist ein benanntes Bündel von Ports und Protokollen. Überprüfen Sie die lokale Definition, bevor Sie ihn öffnen:
Unter SLES httpentspricht der vordefinierte Dienst dem TCP-Port 80. Die Zonenliste ermöglicht die Überprüfung der aktuell zulässigen Dienste und Ports. Ersetzen Sie publicdie angegebene Zone durch die aktive Zone, die Sie gefunden haben. Wenn Sie den Server per SSH verwalten, stellen Sie sicher, sshdass dies in dieser Zone zulässig ist, bevor Sie fortfahren. Das Installationsverhalten von SLES und die bestehenden Richtlinien können variieren. Überprüfen Sie daher die Einstellungen, anstatt sich auf Annahmen zu verlassen. Wenn der installierte SSH-Daemon auf einem nicht standardmäßigen Port lauscht, sshpasst ein generischer Diensteintrag möglicherweise nicht. Überprüfen Sie daher zuerst den tatsächlichen Port des Daemons und die bestehende Firewall-Richtlinie.
Beispielhafte Dienstprüfung: Die HTTP-Dienstdefinition listet TCP-Port 80 auf.
3. HTTP dauerhaft hinzufügen und anschließend die gespeicherten Regeln laden
Firewalld verwaltet separate Laufzeit- und permanente Konfigurationen. Ein normaler Befehl ändert nur die aktiven Laufzeitregeln; --permanenter schreibt die gespeicherte Konfiguration, aktiviert diese Änderung aber nicht sofort. Fügen Sie für web01 den HTTP-Dienst der Zone hinzu, die seine öffentliche Schnittstelle besitzt.
Verwenden Sie die Option --zoneexplizit, damit die Regel nicht in einer unbeabsichtigten Standardzone landet. Ein Neuladen wendet die permanenten Regeln zur Laufzeit an. Nicht gespeicherte Änderungen, die nur zur Laufzeit gelten, gehen beim Neuladen verloren. Prüfen und speichern Sie daher alle temporären Regeln, die Sie benötigen, bevor Sie den Dienst ausführen. Um einen Dienst zu testen, bevor Sie ihn persistent machen, können Sie ihn zunächst sudo firewall-cmd --zone=public --add-service=httpohne die Option ausführen --permanent. Funktioniert er, fügen Sie die permanente Regel hinzu und laden Sie den Dienst neu. Ein Test, der nur zur Laufzeit gilt, geht nach einem Neuladen oder einem Neustart der Firewall verloren.
Beispielhafte Befehlsfolge: Speichern Sie die HTTP-Zulassung in der öffentlichen Umgebung und laden Sie dann firewalld neu, um sie anzuwenden.
Benötigen Sie einen einzelnen Port anstelle eines vordefinierten Dienstes, geben Sie sowohl Port als auch Protokoll an, z. B. 802. --add-port=8080/tcpFühren Sie dies nur durch, wenn die Anwendung tatsächlich an diesem Port lauscht. Eine Firewall-Freigabe startet keinen Webserver, erstellt keine Cloud-Sicherheitsgruppenregel und konfiguriert keinen Upstream-Router; alle Netzwerkschichten müssen den Datenverkehr zulassen.
4. Überprüfen Sie die Zugriffsrechte und entfernen Sie nicht mehr benötigte Regeln.
Überprüfen Sie die laufenden und gespeicherten Konfigurationen:
Die Ausgabe sollte httpbeide Dienstlisten enthalten, und die Konfigurationsprüfung sollte fehlerfrei abgeschlossen werden. Überprüfen Sie außerdem, ob die Anwendung lokal lauscht, beispielsweise mit `npm install --help` sudo ss -lntp, und testen Sie die Website von einem Client im vorgesehenen Netzwerk. Eine Firewall-Liste bestätigt eine Regel, nicht die End-to-End-Erreichbarkeit: DNS, eine Cloud-Firewall, Routing und der Webserver selbst können die Anfrage weiterhin blockieren oder ablehnen.
Beispielhafte Überprüfungsausgabe: HTTP erscheint unter den Diensten der öffentlichen Zone, während SSH weiterhin aufgeführt ist.
Wenn HTTP nicht mehr benötigt wird, entfernen Sie die gespeicherte Regel und laden Sie sie neu: sudo firewall-cmd --permanent --zone=public --remove-service=http, gefolgt von sudo firewall-cmd --reload. Überprüfen Sie anschließend die Laufzeit- und permanenten Listen erneut. Vermeiden Sie es, alle Regeln zu löschen oder zu einer vertrauenswürdigen Zone zu wechseln, um ein einzelnes Zugriffsproblem zu beheben; solche weitreichenden Änderungen können nicht zusammenhängende Dienste gefährden.