Dienste und Ports verwalten

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie genauer, wie Sie mit firewalld steuern, welcher Datenverkehr Ihr System erreichen darf.

Stellen Sie sich Ihren Computer als ein Gebäude vor. Standardmäßig verschließt die Firewall alle Türen. Damit berechtigte Besucher hineinkommen – zum Beispiel Webdatenverkehr oder Dateiübertragungen –, müssen Sie bestimmte Türen aufschließen. In der Netzwerktechnik werden diese Türen als „Ports“ oder „Dienste“ bezeichnet.

Sie lernen zwei wichtige Möglichkeiten kennen, diese Regeln zu ändern:

  1. Vorübergehend (Runtime): Das ist wie eine Notiz auf einem Whiteboard. Sie gilt sofort, verschwindet aber, sobald der Hausmeister kommt – also beim Neustart oder Neuladen des Systems.
  2. Dauerhaft: Das ist wie ein in Stein gemeißeltes Schild. Die Einstellung bleibt auch nach dem Neuladen und nach Neustarts erhalten.

Diese Trennung zwischen Runtime- und dauerhaftem Zustand gehört zu den wichtigsten Konzepten von Firewalld. Sie ermöglicht es Administratoren, Änderungen sicher zu testen, bevor sie diese dauerhaft übernehmen.

Am Ende dieses Labs können Sie Webdatenverkehr vorübergehend zu Testzwecken zulassen, einen bestimmten benutzerdefinierten Port dauerhaft öffnen und Ihre Änderungen speichern.

Einen Dienst vorübergehend zulassen

In diesem Schritt lassen Sie Datenverkehr für den Dienst HTTP zu.

Hinweis zur Lab-Umgebung: Da wir bei der Einrichtung die Standardzone auf trusted gesetzt haben, damit Ihre Terminalverbindung bestehen bleibt, sind technisch bereits alle Ports geöffnet. Wir arbeiten trotzdem so, als befänden wir uns auf einem sicheren Server, auf dem zunächst alles blockiert ist. So lernen Sie die richtigen Befehle zum Öffnen von Ports kennen.

Sie fügen die Regel http als Runtime-Konfiguration hinzu. Sie gilt damit nur vorübergehend.

Diese Unterscheidung zwischen Runtime- und dauerhaftem Zustand ist eine der nützlichsten Sicherheitsfunktionen von Firewalld. Sie können damit prüfen, ob eine Regel funktioniert, bevor Sie sie dauerhaft in die Konfiguration übernehmen.

Prüfen Sie zunächst, welche Dienste in Ihrer aktuellen Zone ausdrücklich erlaubt sind.

sudo firewall-cmd --list-services

Zu Beginn wird möglicherweise nur eine kurze Liste oder gar nichts angezeigt. Fügen Sie nun den Dienst http zur Liste der erlaubten Dienste hinzu.

sudo firewall-cmd --add-service=http

Wenn der Vorgang erfolgreich war, zeigt das Terminal einfach success an.

Überprüfen Sie anschließend erneut die Liste der Dienste.

sudo firewall-cmd --list-services

Jetzt sollte http in der Liste erscheinen. Denken Sie daran: Da Sie der Firewall nicht mitgeteilt haben, dass diese Einstellung „dauerhaft“ sein soll, ist die Regel wie eine Notiz auf einem Whiteboard. Sie existiert momentan nur im Arbeitsspeicher.

Einen Port dauerhaft öffnen

In diesem Schritt öffnen Sie direkt eine bestimmte „Türnummer“, statt einen benannten Dienst zu verwenden. Port 8080 wird beispielsweise häufig zum Testen von Webservern verwendet.

Auch die Entscheidung zwischen Dienst und Port ist konzeptionell wichtig. Ein Dienst ist ein benanntes Paket, das normalerweise einem oder mehreren bekannten Ports zugeordnet ist. Eine direkte Portregel ist dagegen wörtlicher und arbeitet auf einer niedrigeren Ebene. Beide Varianten sind gültig, aber Dienstnamen sind oft leichter zu lesen und zu verwalten.

In diesem Fall soll die Regel auch nach einem Neustart des Servers bestehen bleiben. Verwenden Sie daher die Option --permanent.

Führen Sie den folgenden Befehl aus, um den TCP-Port 8080 dauerhaft zu öffnen.

sudo firewall-cmd --permanent --add-port=8080/tcp

Die Ausgabe sollte success lauten.

Wichtiges Konzept: Wenn Sie --permanent verwenden, bearbeiten Sie die Konfigurationsdatei – die „Steintafel“ –, ändern aber die aktive Firewall nicht sofort.

Überprüfen wir das. Lassen Sie sich die aktuell laufenden Runtime-Ports anzeigen.

sudo firewall-cmd --list-ports

Die Liste wird leer sein oder 8080 nicht enthalten. Die Firewall kennt die neue Regel noch nicht, weil sie die aktualisierte Konfigurationsdatei noch nicht eingelesen hat.

Prüfen Sie nun die dauerhafte Konfiguration, um zu bestätigen, dass Ihre Regel sicher auf der Festplatte gespeichert wurde.

sudo firewall-cmd --permanent --list-ports

Hier sollte 8080/tcp erscheinen. Damit ist bestätigt, dass die Regel für die nächste Konfigurationsladung vorgemerkt ist.

Die Firewall neu laden

In diesem Schritt befinden Sie sich in folgender Situation:

  • Sie haben eine vorübergehende Regel, die http zulässt (aus Schritt 1).
  • Sie haben eine dauerhafte Regel, die 8080 zulässt. Diese ist gespeichert, aber noch nicht aktiv (aus Schritt 2).

Damit die dauerhafte Regel aktiv wird, müssen Sie die Firewall neu laden. Dadurch weist Firewalld seine Konfigurationsdateien erneut ein und wendet sie an.

Beim Neuladen treffen die Runtime- und die dauerhafte Konfiguration praktisch aufeinander. Der aktuell im Arbeitsspeicher befindliche Regelsatz wird durch den auf der Festplatte definierten Regelsatz ersetzt. Deshalb verschwinden vorübergehende Tests, sofern Sie sie nicht dauerhaft gespeichert haben.

Warnung: Beim Neuladen wird der Zustand aus den Konfigurationsdateien wiederhergestellt. Da Ihre http-Regel nur vorübergehend war und nicht in der Konfigurationsdatei steht, geht sie verloren.

Führen Sie den Befehl zum Neuladen aus.

sudo firewall-cmd --reload

Überprüfen Sie nun das Ergebnis. Prüfen Sie zuerst, ob Port 8080 jetzt aktiv ist.

sudo firewall-cmd --list-ports

Erfolg! Sie sollten 8080/tcp sehen. Die dauerhafte Regel wurde in das aktive System geladen.

Prüfen Sie nun, was mit dem Dienst http passiert ist.

sudo firewall-cmd --list-services

Der Dienst http ist verschwunden. Das zeigt, dass beim Neuladen alle Änderungen verworfen werden, die nur zur Runtime vorgenommen wurden. Dies ist eine häufige Fehlerquelle für Einsteiger: Denken Sie immer daran, wichtige Regeln dauerhaft zu speichern.

Die vollständige Konfiguration überprüfen

In diesem Schritt verwenden Sie den nützlichsten Befehl für die tägliche Firewall-Verwaltung. Statt Dienste und Ports getrennt zu prüfen, können Sie die gesamte Konfiguration der aktiven Zone auf einmal anzeigen.

Diese Gesamtansicht ist hilfreich, weil Fehler bei Firewalls häufig entstehen, wenn man vergisst, dass mehrere Regeltypen gemeinsam das tatsächliche Verhalten des Hosts bestimmen. Wenn Sie die gesamte Zone betrachten, verringern Sie dieses Risiko.

Verwenden Sie die Option --list-all, um die Gesamtansicht anzuzeigen.

sudo firewall-cmd --list-all

Die Ausgabe enthält eine vollständige Zusammenfassung der aktiven Zone. In unserer Lab-Umgebung ist dies trusted:

  • target: ACCEPT.
  • interfaces: Die aktive Netzwerkschnittstelle, zum Beispiel eth0.
  • services: Die standardmäßig erlaubten Dienste. Beachten Sie, dass http fehlt, weil der Dienst nach dem Neuladen entfernt wurde.
  • ports: Die benutzerdefinierten geöffneten Ports, zum Beispiel 8080/tcp.

Dieser Befehl eignet sich hervorragend zur Fehlersuche, weil er genau zeigt, wie die Firewall im aktuellen Moment arbeitet.

Zusammenfassung

In diesem Lab haben Sie den Unterschied zwischen vorübergehenden und dauerhaften Firewall-Regeln kennengelernt. Sie haben gelernt:

  1. Runtime-Regeln: Wie Sie einen Dienst wie http sofort, aber nur vorübergehend zulassen.
  2. Dauerhafte Regeln: Wie Sie mit der Option --permanent eine Regel – zum Beispiel das Öffnen von Port 8080 – für die Zukunft speichern.
  3. Neuladen: Wie Sie dauerhafte Änderungen mit --reload auf die Runtime-Umgebung anwenden und dass dabei vorübergehende Regeln verworfen werden.
  4. Überprüfen: Wie Sie mit --list-all den vollständigen Zustand Ihrer Firewall anzeigen.

Sie verfügen nun über ein solides Verständnis dafür, wie Sie den Netzwerkzugriff sicher und dauerhaft steuern.