Einführung
In diesem Lab erlernen Sie die entscheidenden Schritte zur Konfiguration von firewalld auf einem Linux-System, um Web-Traffic durch praktische Übungen an echten Servern zu ermöglichen. Sie werden das Kommandozeilen-Tool firewall-cmd verwenden, um Firewall-Zonen und Dienste zu verwalten – eine Kernkompetenz für jeden Systemadministrator, der für die Absicherung von Servern verantwortlich ist. Das Hauptziel besteht darin, die Standard-Ports für HTTP und HTTPS zu öffnen, um einen Webserver von außen erreichbar zu machen, während gleichzeitig ein sicherer Grundzustand beibehalten wird.
Sie beginnen mit der Überprüfung des Status des firewalld-Dienstes, um sicherzustellen, dass dieser installiert ist, ausgeführt wird und so eingestellt ist, dass er beim Systemstart automatisch lädt. Anschließend setzen Sie die Standard-Firewall-Zone auf public und erleben die praktischen Auswirkungen von Firewall-Regeln, indem Sie einen einfachen Python-Webserver betreiben. Durch das Hinzufügen und Entfernen von Firewall-Regeln für die Dienste http und https werden Sie unmittelbar sehen, wie diese Konfigurationen die tatsächliche Netzwerkkonnektivität beeinflussen. Das Lab schließt mit der Überprüfung Ihrer Einstellungen und einem Ausblick auf weitere verfügbare Optionen von firewall-cmd ab.
Status und Standard-Zone von firewalld prüfen
In diesem Schritt beginnen Sie mit der Arbeit an firewalld, einem leistungsstarken und flexiblen Werkzeug zur Firewall-Verwaltung unter Linux. Bevor Sie Konfigurationsänderungen vornehmen, ist es wichtig zu prüfen, ob der Dienst installiert ist und läuft, sowie die aktuellen Standardeinstellungen zu identifizieren. Dies stellt sicher, dass Sie eine klare Ausgangsbasis haben.
Zuerst stellen wir sicher, dass firewalld auf Ihrem System installiert ist. Obwohl es oft vorinstalliert ist, ist das Ausführen des Installationsbefehls ein sicherer Weg 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
Sobald die Installation abgeschlossen ist, sollte firewalld standardmäßig aktiv sein. Um dies zu überprüfen, kontrollieren Sie den Status des firewalld-Dienstes mit dem Befehl systemctl, der in modernen Linux-Distributionen zur Verwaltung von Diensten 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 nun läuft, können Sie seine Konfiguration inspizieren. firewalld verwendet sogenannte "Zonen" (Zones), um Vertrauensstufen für Netzwerkverbindungen zu verwalten. Eine Zone ist ein vordefinierter Satz von Regeln. Lassen Sie uns herausfinden, welche Zone derzeit als Standard eingestellt ist.
Verwenden Sie das Dienstprogramm firewall-cmd, die primäre Kommandozeilenschnittstelle für firewalld, um die Standard-Zone abzufragen:
sudo firewall-cmd --get-default-zone
Der Befehl wird höchstwahrscheinlich public zurückgeben, was die Standard-Zone bei Neuinstallationen ist.
public
Sie haben nun erfolgreich den Status von firewalld überprüft und die Standard-Zone identifiziert. In den nächsten Schritten lernen Sie, wie Sie diese Konfiguration anpassen.
Standard-Zone auf public festlegen
In diesem Schritt lernen Sie, wie Sie die Standard-Zone für firewalld festlegen. Die Standard-Zone wird auf jede Netzwerkschnittstelle angewendet, die nicht explizit einer anderen Zone zugewiesen wurde. Obwohl die Standard-Zone bei einer Neuinstallation oft bereits auf public steht, ist das Wissen über deren Konfiguration eine grundlegende Fertigkeit. Die Zone public wird typischerweise für öffentliche, nicht vertrauenswürdige Netzwerke verwendet. Hierbei gehen Sie davon aus, dass Sie anderen Computern im Netzwerk nicht vertrauen und diese potenziell schädlich sein könnten.
Um die Standard-Zone zu ändern, verwenden Sie den Befehl firewall-cmd mit der Option --set-default-zone. Diese Änderung ist dauerhaft und wird sofort wirksam.
Führen Sie in Ihrem Terminal den folgenden Befehl aus, um die Standard-Zone auf public zu setzen:
sudo firewall-cmd --set-default-zone=public
Nach der Ausführung des Befehls bestätigt firewalld den Erfolg der Änderung.
success
Es ist immer ratsam zu überprüfen, ob Ihre Änderungen korrekt übernommen wurden. Dies können Sie tun, indem Sie den Befehl --get-default-zone erneut ausführen, genau wie im vorherigen Schritt.
sudo firewall-cmd --get-default-zone
Die Ausgabe sollte bestätigen, dass die Standard-Zone nun public ist.
public
Sie haben nun erfolgreich die Standard-Zone für Ihre Firewall festgelegt und verifiziert. Dies gewährleistet eine grundlegende Sicherheitsstruktur für alle Netzwerkverbindungen. In den folgenden Schritten werden Sie Regeln zu dieser Zone hinzufügen, um bestimmte Arten von Datenverkehr zuzulassen.
HTTP-Dienst zur Zone public hinzufügen und mit einem Webserver testen
In diesem Schritt fügen Sie Ihrer Firewall eine Regel hinzu, um Web-Traffic zuzulassen, und demonstrieren die praktischen Auswirkungen, indem Sie einen einfachen Webserver starten. Standardmäßig blockiert firewalld den Großteil des eingehenden Datenverkehrs, um Ihr System zu schützen. Um spezifische Verbindungen zu erlauben, müssen Sie Regeln für die Dienste hinzufügen, die Sie freigeben möchten. firewalld verwendet vordefinierte "Dienste" (Services), was leicht zu merkende Namen für Standard-Netzwerkports sind. Zum Beispiel entspricht der Dienst http dem TCP-Port 80, dem Standardport für unverschlüsselten Web-Traffic.
Prüfen wir zunächst den aktuellen Firewall-Status für die Zone "public", bevor wir Änderungen vornehmen:
sudo firewall-cmd --zone=public --list-services
Sie werden feststellen, dass http anfangs nicht in der Liste aufgeführt ist, was bedeutet, dass externe Verbindungen zu Port 80 blockiert werden.
Nun fügen wir den Dienst http zur Zone public hinzu. Dazu verwenden Sie den Befehl firewall-cmd mit der Option --add-service und geben die zu ändernde Zone an:
sudo firewall-cmd --zone=public --add-service=http
Dieser Befehl weist firewalld an, die Zone public durch Hinzufügen der http-Dienstregel zu modifizieren. Die Änderung wird auf die Laufzeitkonfiguration angewendet, was bedeutet, dass sie sofort wirksam wird. Sie sollten eine Bestätigungsmeldung sehen:
success
Verifizieren wir, dass der Dienst hinzugefügt wurde, indem wir die Liste der Dienste erneut prü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 nutzen dafür den in Python integrierten HTTP-Server auf Port 80:
cd /tmp
echo "<h1>Willkommen zur LabEx Firewall Demo</h1><p>Dieser Server läuft auf 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 nun durch die Firewall zugelassen wird. Beachten Sie, dass Verbindungen über localhost Firewall-Regeln oft umgehen können; der entscheidende Punkt ist jedoch, dass externe Verbindungen zu Port 80 nun durch die Firewall erlaubt würden.
Um die Verwaltungsfunktionen der Firewall weiter zu verdeutlichen, entfernen wir den HTTP-Dienst vorübergehend wieder:
sudo firewall-cmd --zone=public --remove-service=http
Prüfen Sie die Dienstliste, um die Entfernung zu bestätigen:
sudo firewall-cmd --zone=public --list-services
Sie sollten sehen, dass http nicht mehr in der Liste steht. Fügen Sie den Dienst nun wieder hinzu:
sudo firewall-cmd --zone=public --add-service=http
Überprüfen Sie die erneute Aktivierung:
sudo firewall-cmd --zone=public --list-services
Sie haben nun erfolgreich gelernt, wie man den HTTP-Dienst in der Firewall verwaltet und die Konfigurationsänderungen demonstriert. Das Kernkonzept ist: Ohne die http-Dienstregel würden externe Verbindungen zu Port 80 von der Firewall blockiert, selbst wenn ein Webserver läuft. Sie können den Webserver mit Ctrl+C beenden, wenn Sie mit der Demonstration fertig sind.
HTTPS-Dienst zur Zone public hinzufügen und HTTPS-Konfiguration testen
In diesem Schritt setzen Sie die Konfiguration Ihrer Firewall fort, indem Sie den Dienst https hinzufügen. Während http Standard-Web-Traffic ermöglicht, basiert moderne Web-Kommunikation auf https (HTTP Secure) für Verschlüsselung und Sicherheit. Der Dienst https entspricht dem TCP-Port 443 und ist für jeden Server unerlässlich, der sensible Informationen verarbeitet.
Bevor wir den HTTPS-Dienst hinzufügen, prüfen wir zunächst, was passiert, wenn wir versuchen, die HTTPS-Konnektivität ohne die entsprechende Firewall-Regel zu testen. Führen Sie den folgenden Befehl aus, um die aktuellen Firewall-Dienste anzuzeigen:
sudo firewall-cmd --zone=public --list-services
Sie sollten http in der Liste sehen, aber nicht https.
Nun fügen wir den Dienst https zur Zone public hinzu. Verwenden Sie den Befehl firewall-cmd --add-service, um https-Traffic durch die Zone public zu erlauben. 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 Dienst https hinzuzufügen:
sudo firewall-cmd --zone=public --add-service=https
Dieser Befehl ändert die Laufzeitkonfiguration der Zone public, um eine Regel für den Dienst https aufzunehmen. firewalld wird das erfolgreiche Hinzufügen der Regel bestätigen.
success
Lassen Sie uns nun verifizieren, dass der HTTPS-Dienst hinzugefügt wurde, indem wir die Dienstliste erneut prü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 sie beide Arten von Web-Traffic zulässt.
Um den praktischen Unterschied zu verdeutlichen, können Sie auch prüfen, welche Ports nun offen 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, wobei Sie sehen können, dass der Dienst http dem Port 80 und https dem Port 443 entspricht.
Sie haben nun Ihre Firewall so konfiguriert, dass sie sowohl Standard- (http) als auch sicheren (https) Web-Traffic zulässt. Dies ist ein gängiges und notwendiges Setup für das Hosting von Websites, die sensible Daten verarbeiten oder sichere Verbindungen erfordern.
Überprüfung der hinzugefügten Web-Dienste in der Zone public
In diesem Schritt bestätigen Sie, dass die Dienste http und https erfolgreich zur Zone public hinzugefügt wurden. Nach der Durchführung von Konfigurationsänderungen ist es eine kritische Best Practice, zu verifizieren, dass diese wie erwartet angewendet wurden. Dies stellt sicher, dass sich Ihre Firewall im gewünschten Zustand befindet und hilft bei der Fehlersuche.
Um die Liste aller derzeit in einer Zone erlaubten Dienste zu sehen, können Sie den Befehl firewall-cmd mit der Option --list-services verwenden. Da Sie die Dienste zur Zone public 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 Zone public aufzulisten:
sudo firewall-cmd --list-services --zone=public
Die Ausgabe zeigt eine Liste von Dienstnamen an. Sie sollten http und https in dieser Liste sehen, zusammen mit anderen Diensten, die möglicherweise standardmäßig aktiviert sind, wie dhcpv6-client und ssh.
dhcpv6-client ssh http https
Das Vorhandensein 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 über Standard- als auch über sichere Ports bereitzustellen.
Verfügbare Befehle mit firewall-cmd --help erkunden
In diesem letzten Schritt lernen Sie, wie Sie die Möglichkeiten von firewall-cmd eigenständig erkunden können. Kommandozeilen-Werkzeuge verfügen oft über eine Vielzahl von Optionen und Funktionen. Zu wissen, wie man auf die integrierte Dokumentation zugreift, ist eine entscheidende Fähigkeit für jeden Linux-Anwender. Die Option --help ist ein universeller Weg, um einen schnellen Überblick über die Syntax eines Befehls und die verfügbaren Optionen zu erhalten.
Um alle verfügbaren Befehle und Optionen für firewall-cmd zu sehen, führen Sie Folgendes in Ihrem Terminal aus. Beachten Sie, dass dieser Befehl kein sudo erfordert, da er lediglich 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 etwa 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 zu sichten. Sie finden Abschnitte für "Zone Options", "Service Options", "Port Options" und viele mehr. Dies ist eine exzellente Ressource, um neue Funktionen zu entdecken oder sich an die Syntax eines Befehls zu erinnern, den Sie nicht oft benutzen. Beispielsweise sehen Sie die Option --remove-service, das Gegenstück zum Befehl --add-service, den Sie zuvor verwendet haben.
Herzlichen Glückwunsch! Sie haben dieses Lab abgeschlossen und die grundlegenden Operationen von firewalld erlernt. Sie können nun den Status prüfen, Zonen verwalten und Dienste hinzufügen, um spezifischen Datenverkehr zuzulassen.
Zusammenfassung
In diesem Lab haben Sie die grundlegenden Schritte zur Verwaltung und Konfiguration von firewalld auf einem Linux-System anhand praktischer Demonstrationen kennengelernt. Sie haben damit begonnen, sicherzustellen, dass der firewalld-Dienst installiert ist, und haben dann systemctl-Befehle verwendet, um ihn zu starten, zu aktivieren und seinen Status zu prüfen. Außerdem haben Sie die aktive Standard-Zone identifiziert und gelernt, wie man diese mit firewall-cmd auf public ändert, um eine klare Basis für Firewall-Regeln zu schaffen.
Der Höhepunkt dieses Labs war die praktische Demonstration der Firewall-Auswirkungen mit einem echten Webserver. Sie haben einen einfachen Python-HTTP-Server eingerichtet und hautnah erlebt, wie Firewall-Regeln den Netzwerkzugriff steuern. Durch das Hinzufügen und Entfernen des http-Dienstes in der Zone public konnten Sie die unmittelbaren Auswirkungen auf die Web-Konnektivität beobachten, was das abstrakte Konzept von Firewall-Regeln greifbar und praxisnah machte.
Auf diesem Fundament aufbauend haben Sie die Firewall so konfiguriert, dass sie sowohl Standard- als auch sicheren Web-Traffic zulässt, indem Sie die Dienste http und https zur Zone public hinzugefügt haben. Sie haben gelernt, Ihre Änderungen mit verschiedenen firewall-cmd-Optionen zu verifizieren und die Beziehung zwischen Dienstnamen und den entsprechenden Portnummern zu verstehen. Schließlich haben Sie entdeckt, wie Sie auf die umfassende Hilfe-Dokumentation von firewall-cmd zugreifen können, was Sie dazu befähigt, fortgeschrittene Funktionen eigenständig zu erkunden.



