firewalld für Web-Traffic unter Linux konfigurieren

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Labor lernen Sie die wesentlichen Schritte zur Konfiguration von firewalld auf einem Linux-System, um Web-Traffic durch praktische Übungen mit echten Servern zu ermöglichen. Sie werden das Kommandozeilen-Dienstprogramm firewall-cmd zur Verwaltung von Firewall-Zonen und -Diensten verwenden, eine grundlegende Fähigkeit für jeden Systemadministrator, der für die Absicherung von Servern verantwortlich ist. Das Hauptziel ist es, die Standardports für HTTP und HTTPS zu öffnen, um einen Webserver von außen zugänglich zu machen und gleichzeitig eine sichere Standardhaltung beizubehalten.

Sie beginnen damit, den Status des firewalld-Dienstes zu überprüfen und sicherzustellen, dass er installiert, ausgeführt und für den Start beim Booten aktiviert ist. Anschließend setzen Sie die Standard-Firewall-Zone auf public und erleben die praktischen Auswirkungen von Firewall-Regeln, indem Sie einen einfachen Python-Webserver ausführen. Durch das Hinzufügen und Entfernen von Firewall-Regeln für die Dienste http und https werden Sie aus erster Hand erfahren, wie sich diese Konfigurationen auf die tatsächliche Netzwerkkonnektivität auswirken. Das Labor schließt damit, dass wir Ihnen zeigen, wie Sie Ihre Konfigurationen überprüfen und andere verfügbare firewall-cmd-Optionen für weiteres Lernen erkunden können.

Status und Standardzone von firewalld überprüfen

In diesem Schritt beginnen Sie mit der Arbeit an firewalld, einem leistungsstarken und flexiblen Firewall-Verwaltungstool für Linux. Bevor Sie Konfigurationsänderungen vornehmen, ist es unerlässlich zu überprüfen, ob der Dienst installiert und aktiv ist und seine aktuellen Standardeinstellungen zu ermitteln. Dies stellt sicher, dass Sie eine klare Ausgangsbasis haben.

Zuerst stellen wir sicher, dass firewalld auf Ihrem System installiert ist. Obwohl es möglicherweise bereits vorhanden ist, ist die Ausführung des Installationsbefehls eine sichere Methode zur Bestätigung. Öffnen Sie Ihr Terminal und führen Sie die folgenden Befehle aus, um Ihre Paketliste zu aktualisieren und firewalld zu installieren:

sudo apt-get update && sudo apt-get install -y firewalld

Nach Abschluss der Installation sollte firewalld standardmäßig aktiv sein. Um dies zu überprüfen, prüfen Sie den Status des firewalld-Dienstes mit dem Befehl systemctl, der zur Verwaltung von Diensten in modernen Linux-Distributionen verwendet wird.

Führen Sie diesen Befehl aus, um zu sehen, ob firewalld aktiv ist:

sudo systemctl status firewalld

Die Ausgabe sollte active (running) anzeigen, was bedeutet, dass die Firewall betriebsbereit ist.

Da der Dienst läuft, können Sie nun seine Konfiguration überprüfen. firewalld verwendet "Zonen", um Vertrauensstufen für Netzwerkverbindungen zu verwalten. Eine Zone ist eine vordefinierte Regelsammlung. Lassen Sie uns herausfinden, welche Zone derzeit als Standard festgelegt ist.

Verwenden Sie das Dienstprogramm firewall-cmd, die primäre Befehlszeilenschnittstelle für firewalld, um die Standardzone zu ermitteln:

sudo firewall-cmd --get-default-zone

Der Befehl gibt wahrscheinlich public zurück, was die Standardzone für Neuinstallationen ist.

public

Sie haben nun erfolgreich den Status von firewalld überprüft und seine Standardzone ermittelt. In den nächsten Schritten lernen Sie, wie Sie diese Konfiguration ändern können.

Standardzone auf public setzen

In diesem Schritt lernen Sie, wie Sie die Standardzone für firewalld festlegen. Die Standardzone wird auf jede Netzwerkschnittstelle angewendet, die nicht explizit einer anderen Zone zugewiesen ist. Obwohl die Standardzone bei einer Neuinstallation oft public ist, ist die Kenntnis, wie man sie festlegt, eine grundlegende Fähigkeit für die Verwaltung Ihrer Firewall. Die public-Zone wird typischerweise für öffentliche, nicht vertrauenswürdige Netzwerke verwendet. Sie vertrauen den anderen Computern in diesen Netzwerken nicht, dass sie Ihren Computer nicht schädigen.

Um die Standardzone zu ändern, verwenden Sie den Befehl firewall-cmd mit der Option --set-default-zone. Diese Änderung ist persistent und wird sofort angewendet.

Führen Sie in Ihrem Terminal den folgenden Befehl aus, um die Standardzone auf public zu setzen:

sudo firewall-cmd --set-default-zone=public

Nach Ausführung des Befehls wird firewalld bestätigen, dass die Änderung erfolgreich war.

success

Es ist immer eine gute Praxis, zu überprüfen, ob Ihre Änderungen korrekt angewendet wurden. Dies können Sie tun, indem Sie erneut den Befehl --get-default-zone ausführen, genau wie im vorherigen Schritt.

sudo firewall-cmd --get-default-zone

Die Ausgabe sollte bestätigen, dass die Standardzone nun public ist.

public

Sie haben nun erfolgreich die Standardzone für Ihre Firewall festgelegt und verifiziert. Dies gewährleistet eine grundlegende Sicherheitslage für alle Netzwerkverbindungen. In den folgenden Schritten werden Sie dieser Zone Regeln hinzufügen, um bestimmte Arten von Datenverkehr zuzulassen.

Hinzufügen des http-Dienstes zur public-Zone und Testen mit einem Webserver

In diesem Schritt fügen Sie Ihrer Firewall eine Regel hinzu, um Web-Traffic zu erlauben, und demonstrieren dann die praktischen Auswirkungen, indem Sie einen einfachen Webserver ausführen. Standardmäßig blockiert firewalld den meisten eingehenden Datenverkehr, um Ihr System zu schützen. Um bestimmte Verbindungen zuzulassen, müssen Sie Regeln für die Dienste hinzufügen, die Sie verfügbar machen möchten. firewalld verwendet vordefinierte "Dienste", die leicht zu merkende Namen für Standard-Netzwerkports sind. Zum Beispiel entspricht der http-Dienst dem TCP-Port 80, dem Standardport für unverschlüsselten Web-Traffic.

Zuerst überprüfen wir den aktuellen Firewall-Status für die public-Zone, bevor wir Änderungen vornehmen:

sudo firewall-cmd --zone=public --list-services

Sie werden feststellen, dass http anfangs nicht in der Liste enthalten ist, was bedeutet, dass externe Verbindungen zu Port 80 blockiert sind.

Nun fügen wir den http-Dienst zur public-Zone hinzu. Sie verwenden den Befehl firewall-cmd mit der Option --add-service und geben die Zone an, die Sie ändern möchten:

sudo firewall-cmd --zone=public --add-service=http

Dieser Befehl weist firewalld an, die public-Zone zu ändern, indem die Regel für den http-Dienst hinzugefügt wird. Die Änderung wird auf die Laufzeitkonfiguration angewendet, was bedeutet, dass sie sofort wirksam wird. Sie sollten eine Bestätigungsnachricht sehen:

success

Lassen Sie uns überprüfen, ob der Dienst hinzugefügt wurde, indem wir die Liste der Dienste erneut überprüfen:

sudo firewall-cmd --zone=public --list-services

Sie sollten nun http in der Liste der erlaubten Dienste sehen.

Um die praktischen Auswirkungen zu demonstrieren, starten wir einen einfachen Webserver. Wir verwenden den integrierten HTTP-Server von Python auf Port 80:

cd /tmp
echo "<h1>Welcome to LabEx Firewall Demo</h1><p>This server is running on port 80</p>" > index.html
sudo python3 -m http.server 80

Beachten Sie, dass wir sudo benötigen, da Port 80 ein privilegierter Port ist (unter 1024). Lassen Sie diesen Server in einem separaten Terminal laufen.

Testen Sie nun von einem anderen Terminal aus die Verbindung:

curl http://localhost

Die Verbindung funktioniert, da der http-Dienst jetzt durch die Firewall erlaubt ist. Beachten Sie, dass localhost-Verbindungen Firewall-Regeln umgehen können, aber der entscheidende Punkt ist, dass externe Verbindungen zu Port 80 nun von der Firewall zugelassen würden.

Um die Verwaltungsfähigkeiten der Firewall weiter zu veranschaulichen, entfernen wir den HTTP-Dienst vorübergehend:

sudo firewall-cmd --zone=public --remove-service=http

Überprüfen Sie die Liste der Dienste, um zu bestätigen, dass er entfernt wurde:

sudo firewall-cmd --zone=public --list-services

Sie sollten feststellen, dass http nicht mehr in der Liste enthalten ist. Fügen Sie den Dienst nun wieder hinzu:

sudo firewall-cmd --zone=public --add-service=http

Überprüfen Sie erneut, ob er hinzugefügt wurde:

sudo firewall-cmd --zone=public --list-services

Sie haben nun erfolgreich gelernt, wie Sie den HTTP-Dienst in der Firewall verwalten und die Konfigurationsänderungen demonstriert. Das Kernkonzept ist, dass ohne die Regel für den http-Dienst externe Verbindungen zu Port 80 von der Firewall blockiert würden, selbst wenn ein Webserver läuft. Sie können den Webserver mit Strg+C stoppen, wenn Sie mit der Demonstration fertig sind.

Hinzufügen des https-Dienstes zur public-Zone und Testen der HTTPS-Konfiguration

In diesem Schritt konfigurieren Sie Ihre Firewall weiter, indem Sie den https-Dienst hinzufügen. Während http den Standard-Web-Traffic ermöglicht, setzt die moderne Webkommunikation auf https (HTTP Secure) für Verschlüsselung und Sicherheit. Der https-Dienst entspricht dem TCP-Port 443 und ist für jeden Server unerlässlich, der sensible Informationen verarbeitet.

Bevor wir den HTTPS-Dienst hinzufügen, überprüfen wir zunächst, was passiert, wenn wir versuchen, die HTTPS-Konnektivität ohne die Firewall-Regel zu testen. Führen Sie den folgenden Befehl aus, um die aktuellen Firewall-Dienste zu überprüfen:

sudo firewall-cmd --zone=public --list-services

Sie sollten http in der Liste sehen, aber nicht https.

Nun fügen wir den https-Dienst zur public-Zone hinzu. Sie verwenden den Befehl firewall-cmd --add-service, um https-Traffic durch die public-Zone zuzulassen. Dies stellt sicher, dass Ihr Server sichere Verbindungen von externen Benutzern akzeptieren kann.

Führen Sie in Ihrem Terminal den folgenden Befehl aus, um den https-Dienst hinzuzufügen:

sudo firewall-cmd --zone=public --add-service=https

Dieser Befehl modifiziert die Laufzeitkonfiguration der public-Zone, um eine Regel für den https-Dienst aufzunehmen. firewalld wird die erfolgreiche Hinzufügung der Regel bestätigen.

success

Lassen Sie uns nun überprüfen, ob der HTTPS-Dienst hinzugefügt wurde, indem wir die Liste der Dienste erneut überprüfen:

sudo firewall-cmd --zone=public --list-services

Sie sollten nun sowohl http als auch https in der Ausgabe sehen, was bestätigt, dass Ihre Firewall so konfiguriert ist, dass beide Arten von Web-Traffic zugelassen werden.

Um den praktischen Unterschied zu demonstrieren, können Sie auch überprüfen, welche Ports jetzt geöffnet sind:

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

Der Befehl --list-services zeigt die Dienste nach Namen an, während Sie sehen können, dass der http-Dienst dem Port 80 und https dem Port 443 entspricht.

Sie haben nun Ihre Firewall so konfiguriert, dass sowohl Standard- (http) als auch sicherer (https) Web-Traffic zugelassen wird. Dies ist eine übliche und notwendige Einrichtung für das Hosting von Websites, die sensible Informationen verarbeiten oder sichere Verbindungen erfordern.

Überprüfen, ob Webdienste zur public-Zone hinzugefügt wurden

In diesem Schritt bestätigen Sie, dass die Dienste http und https erfolgreich zur public-Zone hinzugefügt wurden. Nach der Durchführung von Konfigurationsänderungen ist es eine kritische Best Practice, zu überprüfen, ob diese wie erwartet angewendet wurden. Dies stellt sicher, dass Ihre Firewall im gewünschten Zustand ist und hilft bei der Fehlerbehebung.

Um die Liste aller Dienste anzuzeigen, die derzeit in einer Zone erlaubt sind, können Sie den Befehl firewall-cmd mit der Option --list-services verwenden. Da Sie die Dienste zur public-Zone hinzugefügt haben, müssen Sie diese im Befehl angeben.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die aktiven Dienste für die public-Zone aufzulisten:

sudo firewall-cmd --list-services --zone=public

Die Ausgabe zeigt eine Liste von Servicenamen an. Sie sollten http und https in dieser Liste sehen, zusammen mit anderen Diensten, die möglicherweise standardmäßig aktiviert sind, wie z. B. dhcpv6-client und ssh.

dhcpv6-client ssh http https

Das Erscheinen von http und https in der Ausgabe bestätigt, dass Sie die Firewall erfolgreich konfiguriert haben, um eingehenden Web-Traffic zuzulassen. Ihr System ist nun bereit, Webinhalte sowohl auf Standard- als auch auf sicheren Ports bereitzustellen.

Verfügbare Befehle mit firewall-cmd --help erkunden

In diesem letzten Schritt lernen Sie, wie Sie die Fähigkeiten von firewall-cmd selbst erkunden können. Befehlszeilentools haben oft viele Optionen und Funktionen, und zu wissen, wie man auf ihre integrierte Dokumentation zugreift, ist eine entscheidende Fähigkeit für jeden Linux-Benutzer. Die Option --help ist eine universelle Methode, um einen schnellen Überblick über die Syntax und die verfügbaren Optionen eines Befehls zu erhalten.

Um alle verfügbaren Befehle und Optionen für firewall-cmd anzuzeigen, führen Sie Folgendes in Ihrem Terminal aus. Beachten Sie, dass dieser Befehl kein sudo benötigt, da er nur Informationen anzeigt.

firewall-cmd --help

Dieser Befehl gibt eine lange Liste von Optionen in Ihrem Terminal aus. Sie können nach oben scrollen, um alles zu sehen. Die Ausgabe beginnt ungefähr so:

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help            Prints a short help text and exists
  -V, --version         Print the version string of firewalld
  -q, --quiet           Do not print status messages

Status Options
  --state               Get state of firewalld
  --reload              Reload firewall rules and keep state information
  --complete-reload     Reload firewall rules and lose state information
  --runtime-to-permanent
                        Save runtime configuration to permanent
...

Nehmen Sie sich einen Moment Zeit, um die Ausgabe durchzusehen. Sie werden Abschnitte für "Zone Options", "Service Options", "Port Options" und viele mehr sehen. Dies ist eine ausgezeichnete Ressource, um neue Funktionen zu entdecken oder sich an die Syntax eines Befehls zu erinnern, den Sie nicht oft verwenden. Sie können zum Beispiel die Option --remove-service sehen, die das Gegenstück zum Befehl --add-service ist, den Sie zuvor verwendet haben.

Herzlichen Glückwunsch! Sie haben dieses Lab abgeschlossen und die grundlegenden Operationen von firewalld gelernt. Sie können nun dessen Status überprüfen, Zonen verwalten und Dienste hinzufügen, um spezifischen Traffic zuzulassen.

Zusammenfassung

In diesem Lab haben Sie die grundlegenden Schritte zur Verwaltung und Konfiguration von firewalld auf einem Linux-System mit praktischen Demonstrationen seiner Auswirkungen gelernt. Sie haben damit begonnen, sicherzustellen, dass der firewalld-Dienst installiert ist, und dann systemctl-Befehle verwendet, um ihn zu starten, zu aktivieren und seinen Status zu überprüfen. Sie haben auch die aktive Standardzone identifiziert und gelernt, wie Sie diese mit firewall-cmd auf public ändern, wodurch eine klare Basis für Firewall-Regeln geschaffen wurde.

Der wichtigste Höhepunkt dieses Labs war die praktische Demonstration der Firewall-Auswirkungen anhand eines realen Webservers. Sie haben einen einfachen Python HTTP-Server eingerichtet und aus erster Hand erfahren, wie Firewall-Regeln den Netzwerkzugriff steuern. Durch das Hinzufügen und Entfernen des http-Dienstes aus der public-Zone haben Sie die unmittelbaren Auswirkungen auf die Webkonnektivität beobachtet, wodurch das abstrakte Konzept der Firewall-Regeln greifbar und praktisch wurde.

Auf dieser Grundlage haben Sie die Firewall so konfiguriert, dass sowohl der Standard- als auch der sichere Web-Traffic zugelassen wird, indem Sie die Dienste http und https zur public-Zone hinzugefügt haben. Sie haben gelernt, Ihre Änderungen mit verschiedenen firewall-cmd-Optionen zu überprüfen und die Beziehung zwischen Servicenamen und ihren entsprechenden Portnummern zu erkunden. Schließlich haben Sie entdeckt, wie Sie auf die umfassende Hilfe-Dokumentation für firewall-cmd zugreifen können, was Sie befähigt, fortgeschrittene Funktionen eigenständig zu erkunden.