Firewalld
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
|
Ein Service-Daemon für eine dynamische Firewall mit D-Bus-Schnittstelle
Download für openSUSE:
Hersteller: Fedora Project
Lizenz: GPL-2.0
Webseite: http://www.firewalld.org/
Inhaltsverzeichnis
Funktion
Firewalld bietet eine dynamisch verwaltete Firewall mit Unterstützung für Netzwerk- und Firewall-Zonen, um die Vertrauensstufe von Netzwerkverbindungen oder Schnittstellen zu definieren. Sie unterstützt IPv4-, IPv6-Firewall-Einstellungen, Ethernet-Bridges und verfügt über eine Trennung von Laufzeit- und permanenten Konfigurationsoptionen. Sie unterstützt auch eine Schnittstelle für Dienste oder Anwendungen zum direkten Hinzufügen von Firewall-Regeln.
Das sind ein paar der Gründe, warum SuSEFirewall2 vollständig durch Firewalld ersetzt wurde und seit Leap 15.0 standardmäßig voreingestellt ist.
Features
- Sie kann mit IPv4, IPv6 und Netzwerkbrücken "unter einem Dach" umgehen
- Firewall-Regeln können dynamisch über D-Bus-Aufrufe mit Policykit-Authentifizierung geändert werden, ohne dass die gesamte Firewall neu geladen werden muss
- Vollständig in den NetworkManager integriert
- Grafisches Konfigurationswerkzeug: firewall-config und YaST2-Firewall Modul
- Das Konfigurationswerkzeug für die Kommandozeilen ist firewall-cmd
Die Vordefinierte Zonen der Firewall verstehen
- block – Alle eingehenden Netzwerkverbindungen werden abgelehnt. Nur vom System aus initiierte Netzwerkverbindungen sind möglich.
- dmz – Klassische entmilitarisierte Zone (DMZ), die begrenzten Zugang zum LAN bietet und nur ausgewählte eingehende Ports zulässt.
- drop – Alle eingehenden Netzwerkverbindungen werden gelöscht und nur ausgehende Netzwerkverbindungen erlaubt.
- external – Nützlich für Verbindungen als Router. Benötigt auch LAN- und WAN-Schnittstellen für Masquerading (NAT), um korrekt zu arbeiten.
- home – Nützlich für Heimcomputer wie Laptops und Desktops innerhalb des eigenen LANs, in dem anderen Computern vertraut werden kann. Lässt nur ausgewählte TCP/IP-Ports zu.
- internal – Für interne Netzwerke, wenn den anderen Servern oder Computern im LAN vertraut werden kann.
- public – Es wird anderen Computern und Servern im Netzwerk nicht vertraut. Nur erforderliche Ports und Dienste sind erlaubt. Wird meist für Cloud-Server oder Server, die bei gehostet werden, als öffentliche Zone verwendet.
- trusted – Alle Netzwerkverbindungen werden akzeptiert. Diese Zone ist nicht für dedizierte Server oder VMs zu empfehlen, die mit dem WAN verbunden sind.
- work – Für den Einsatz am Arbeitsplatz.
Der folgende Befehl zeigt alle verfügbaren Zonen in der Kommandozeile an, für eine grafische Umgebung siehe YaST Module Firewall:
firewall-cmd --get-zones
Weitere Beispiele
Die aktive Standard-Zone anzeigen, das ist in der Regel die Zone public:
firewall-cmd --get-default-zone
Die aktiven Firewall-Regeln und Dienste in der aktuellen Zone zeigt der folgende Befehl:
firewall-cmd --list-all
Möchte man die Firewall-Regeln und Dienste einer anderen Zone sehen, gibt man das als Option mit an:
firewall-cmd --list-services --zone=home
Um einen Dienst wie SSH kurzfristig der Firewall in der gewünschten Zone hinzuzufügen nimmt man:
firewall-cmd --zone=public --add-service=ssh
Dabei sollte man nicht vergessen zu überprüfen, ob der entsprechende Dienst auch bereit und gestartet ist, bevor man versucht, von einem entfernten System aus, auf den Dienst zuzugreifen:
systemctl status sshd systemctl restart sshd
Sobald die Firewall mit der Optioen --reload neu geladen wird, ist der Dienst wieder aus den Firewall-Regeln entfernt. Um einen Service wie SSH permanent hinzuzufügen, fügt man noch die entsprechende Option an und lädt die Firewall neu:
firewall-cmd --zone=public --add-service=ssh --permanent firewall-cmd --reload
Um herauszufinden, ob das geklappt hat, kann man den Befehl überprüfen:
firewall-cmd --list-services --permanent
Einen Überblick, welche Dienste von der Firewall unterstützt werden, erhält man mit:
firewall-cmd --get-services
Man kann einen Dienst auch wieder entfernen:
firewall-cmd --zone=public --remove-service=ssh --permanent
Die Befehle, um einzelne Ports zu öffnen, aufzulisten und wieder zu löschen lauten:
firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --remove-port=22/tcp --permanent firewall-cmd --reload
Man kann auch den Zugriff auf einzelne Ports, wie hier auf SSH, mit einer Rich-Rule nur von bestimmten IP-Adressen aus zu lassen:
firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.178.10" port port=22 protocol=tcp accept' firewall-cmd --reload firewall-cmd --zone=public --list-rich-rules # Und wieder löschen: firewall-cmd --permanent --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.178.10" port port=22 protocol=tcp accept'
Die Beispiele zeigen nur das Grundkonzept von Firewalld. Weitere Informationen können in der offiziellen Firewalld-Dokumentation gefunden werden.
Dokumentation
- Hauptdokumentation: http://www.firewalld.org/documentation/
- Grafisches Konfigurationsmodul: http://www.firewalld.org/documentation/utilities/firewall-config.html
- Wiki-Dokumentationsseite: https://fedoraproject.org/wiki/FirewallD
Firewalld RPM-Paketierungsrichtlinien
Wenn die Service-Dateien von firewalld zusammen mit RPM paketiert werden sollen, sollte man die Seite Firewalld/RPM_Paketierung beachten.
Migration von SuSEfirewall2
Die Migration von einer Firewall-Lösung zu einer anderen ist kein trivialer Prozess und der Wechsel von SuSEfirewall2 zu Firewalld ist nicht anders. Ein einfaches Skript soll aber helfen, die Migration so reibungslos wie möglich zu gestalten. Abhängig von der eigenen Konfiguration erledigt das Skript erfolgreich seine Arbeit oder macht im Fall eines Fehlers einfach gar nichts. Das Paket heißt susefirewall2-to-firewalld und man kann es folgendermaßen installieren:
zypper install susefirewall2-to-firewalld susefirewall2-to-firewalld
Bitte die Seite README beachten, bevor man das Skript zum ersten Mal ausführt. Das Skript wird unter GitHub betreut, so dass Bugs oder Pull Requests zuerst dort berichtet werden sollten.
Fehlerbehebung
Das Firewalld-Modul startet nach einem Upgrade von Tumbleweed nicht
Speziell beim Upgrade von Tumbleweed Snapshots und von SuSEfirewall2 nach Firewalld, kann es passieren, dass die neue Firewall sich nicht sofort aktiviert. Es ist möglich, dass Firewalld zwar gestartet wurde, sich aber nicht mit der entsprechenden Schnittstelle verbinden kann.
Um Firewalld zu aktivieren und SuSEfirewall2 auszuschalten, öffnet man in Yast die Dienste-Verwaltung und aktiviert den Dienst. Dazu öffnet man entweder das Yast Kontrollzentrum oder man führt den folgenden Befehl in der Kommandozeile aus:
yast2-services-manager
Anschließend sucht man nach firewalld und startet und aktiviert den Dienst.
Dann SuSEfirewall2, SuSEfirewall2_init und SuSEfirewall2_setup stoppen, deaktivieren und mit OK beenden.
Möglicherweise wird ein Dialogfeld mit einer Warnung angezeigt, dass das Schreiben der Konfigurationsdatei fehlgeschlagen sei. Dann wählt man einfach "Weiter", um den Vorgang abzuschließen.
Jetzt sollte das Firewalld-Modul normal funktionieren.