Wie Sie firewalld unter Centos 7 nutzen
firewalld ist eine komplette Firewall-Lösung, die standardmäßig auf CentOS 7 Servern verfügbar ist. Während unter Centos 6 noch iptables zum Einsatz kam, wird unter Centos 7 mit dem Dienst-Programm firewalld gearbeitet. In diesem Tutorial erklären wir, wie Sie als Linux-Administrator eine Firewall für Ihren Centos 7 Server mit firewalld einrichten und Ihnen die Grundlagen der Verwaltung der Firewall mit der firewall-cmd-Befehlszeile erklären.
Grundkonzepte in firewalld
Bevor wir anfangen, wie man das Firewall-cmd-Dienstprogramm zur Verwaltung Ihrer Firewall-Konfiguration verwendet, sollten wir uns mit einigen grundlegenden Konzepten von firewalld vertraut machen.
Zonen in firewalld
Der firewalld-Daemon verwaltet Gruppen von Regeln mit Elementen (bzw. Entitäten), die „Zonen“ genannt werden. Zonen sind im Wesentlichen Mengen von Regeln, die definieren, welchen Verkehr je nach dem Vertrauensniveau erlaubt werden soll, das Sie in den Netzwerken haben, mit denen Ihr Computer gerade verbunden ist. Netzwerkschnittstellen werden einer Zone zugeordnet, um das Verhalten zu bestimmen, das die Firewall zulassen soll.
Für Computer, die sich häufig zwischen Netzwerken (WLAN, Arbeit, Zuhause, …) bewegen können (wie Laptops), bietet diese Art von Flexibilität eine gute Methode, um Ihre Regeln abhängig von Ihrer aktuellen Netzwerk-Umgebung zu ändern. Sie können strenge Regeln an Orten verbieten die meisten Verkehr beim Betrieb auf einem öffentlichen WiFi-Netzwerk, während ermöglicht mehr entspannte Einschränkungen, wenn mit Ihrem Heimnetzwerk verbunden. Für einen Server sind diese Zonen nicht so wichtig, da sich die Netzwerkumgebung nur selten ändert.
Unabhängig davon, wie dynamisch Ihre Netzwerkumgebung sein mag, ist es immer noch sinnvoll, mit der allgemeinen Idee hinter jeder der vordefinierten Zonen für firewalld vertraut zu sein. Nachfolgend finden Sie die Zonen die standardmässig in firewalld vorhanden sind, In der Reihenfolge von den wenigsten vertrauenswürdigen zu den meisten vertrauenswürdigen:
- drop: das niedrigste Vertrauensniveau. Alle eingehenden Verbindungen werden ohne Antwort abgelegt und nur ausgehende Verbindungen (vom Laptop oder Server) sind möglich.
- block: Ähnlich wie „drop“, aber anstatt einfach nur Verbindungen zu verschieben, werden eingehende Anfragen mit einer icmp-host-deny oder icmp6-adm-deny Nachricht abgelehnt. Im Gegensatz zu oben erhält der Absender also wenigstens eine Antwort
- public: Repräsentiert öffentliche, nicht vertrauenswürdige Netzwerke. Sie vertrauen anderen Computern nicht, sondern können ausgewählte eingehende Verbindungen von Fall zu Fall zulassen.
- external: Externe Netzwerke für den Fall, dass Sie die Firewall als Gateway verwenden. Hier ist firewalld für NAT-Masquerading konfiguriert, so dass etwa Ihr internes Netzwerk privat aber erreichbar ist.
- internal: Die andere Seite der externen Zone, die für den internen Teil eines Gateways verwendet wird. Die Computer sind ziemlich vertrauenswürdig und einige zusätzliche Dienste sind verfügbar.
- dmz: Wird für Computer verwendet, die sich in einer DMZ befinden (DMZ = demilitarisierte Zone, in der Regel innerhalb eines Rechenzentrums und zwischen zwei Firewalls). Es sind nur bestimmte eingehende Verbindungen erlaubt.
- work: Wird für PCs & Workstation verwendet. Vertraut den meisten Computer im Netzwerk. Ein paar weitere Dienste sind erlaubt.
- home: Eine häusliche Umgebung. Es bedeutet im Allgemeinen, dass Sie die meisten anderen Computer vertrauen und dass weitere Dienste akzeptiert werden.
- trusted: Vertraut allen Maschinen im Netzwerk. Diese offenste der verfügbaren Optionen von firewalld sollte sparsam verwendet werden.
Um die Firewall nutzen zu können, können wir Regeln erstellen und die Eigenschaften der verwendeten Zonen verändern und anschließend unsere Netzwerkschnittstellen den Zonen zuordnen.
Regelbeständigkeit von firewalld
In firewalld können Regeln als permanent oder „immediate“ (im Sinne von „sofort“) bezeichnet werden. Wenn eine Regel hinzugefügt oder geändert wird, wird standardmäßig das Verhalten der aktuell laufenden Firewall geändert und der –immediate Zusatz verwendet. Beim nächsten Stiefel werden die alten Regeln zurückgesetzt – d.h. Änderungen mit „—immediate“ sind nach einem Neustart des firewalld-Dienstes verloren
Bei den meisten Firewall-cmd-Operationen können Sie den –permanent-Zusatz nutzen, um anzugeben, dass nicht die aktuell kaufende Konfiguration gemeint ist, sondern die langfristig gespeicherte. Dies wirkt sich auf den Regelsatz aus, der beim Start von firewalld neu geladen wird. Diese Trennung bedeutet, dass Sie Regeln in Ihrer aktiven Firewall-Instanz testen und dann neu laden können, wenn es Probleme gibt. Sie können auch die –permanent-Flagge verwenden, um einen ganzen Satz von Regeln über die Zeit aufzubauen, die alle sofort angewendet werden, wenn der Reload-Befehl ausgegeben wird.
Starten von firewalld
Bevor Sie anfangen können, Firewall-Regeln mit firewalld zu erstellen, müssen wir den eigentlichen Dienst unter Centos 7 starten. Die Systemdatendatei dazu heißt firewalld.service. Wir können den Dämon für diese Sitzung starten, indem wir folgendes eingeben:
sudo systemctl start firewalld.service
Sie können überprüfen, ob der Service läuft und erreichbar ist:
firewall-cmd – State
Sie sehen nun, daß ihr Firewall unter Centos 7 mit der Standardkonfiguration läuft und läuft.
An diesem Punkt werden wir den Service (noch) nicht aktivieren. Die Aktivierung des Dienstes würde dazu führen, dass die Firewall beim Booten gestartet wird. Sie sollten warten, bis Sie ihre Firewall-Regeln fertig erstellt haben und außerdem Gelegenheit hatten, sie zu testen, bevor wir den Dienst beim Starten konfigurieren. So vermeiden Sie , vom Host geblockt zu werden, für den Fall dass etwas schief geht.
firewalld – Basics
Bevor wir anfangen, Änderungen vorzunehmen, sollten wir uns mit der Standardumgebung und den Regeln des Dämons vertraut machen.
Standard-Einstellungen von firewalld
Wir können sehen, welche Zone derzeit als Voreinstellung ausgewählt ist, indem Sie Folgendes eingeben:
firewall-cmd –get-default-zone
Ausgabe
public
Da wir Firewall bisher keine konkreten Befehle gegeben haben, die von der Standardzone abzuweichen, und keine unserer Schnittstellen konfiguriert ist, um Sie etwa an eine andere Zone zu binden, ist diese Zone auch die einzige „aktive“ Zone (die Zone, die den Verkehr für unsere kontrolliert Schnittstellen). Sie können das überprüfen, in den Sie folgendes eingeben:
firewall-cmd –get-active-zone
Ausgabe:
Public
Interfaces: eth0 eth1
Hier sehen wir, dass wir zwei Netzwerkschnittstellen (eth0 und eth1) haben, die von der Firewall gesteuert werden. Sie werden beide derzeit nach den für die öffentliche Zone festgelegten Regeln verwaltet.
Wie können Sie nun heraus finden, welche Regeln mit der öffentlichen Zone verbunden sind? Wir können die Konfiguration der Standardzone anzeigen lassen, indem wir Folgendes eingeben:
firewall-cmd –list-all
Ausgabe
Public (Standard, aktiv)
Interfaces: eth0 eth1
sources:
ports:
…
Wir können aus der Ausgabe ableiten, dass diese Zone sowohl die Vorgabe als auch die aktive ist und dass die eth0- und eth1-Schnittstellen mit dieser Zone verbunden sind. Allerdings können wir auch sehen, dass diese Zone die normalen Operationen mit einem DHCP-Client (für IP-Adresszuweisung) und SSH (für Remote-Administration) ermöglicht.
Erforschung alternativer Zonen
Jetzt haben wir eine gute Vorstellung von der Konfiguration für die Standard- und Aktivzone. Wir können auch Informationen über andere Zonen herausfinden.
Um eine Liste der verfügbaren Zonen zu erhalten, geben Sie Folgendes ein:
firewall-cmd -get-zonen
Ausgabe
block dmz drop external home internal public trusted work
Sie können sich die spezifische Konfiguration, die mit einer Zone verbunden ist, anschauen, indem sie den Parameter –zone = in den –list-all-Befehl einfügen:
firewall-cmd – zone = home –list-all
Ausgabe
home
Schnittstellen:
sources:
services: dhcpv6-client ipp-client mdns samba-client ssh
ports:
…
Sie können alle Zonendefinitionen mit der Option –list-all-zones ausgeben. Zur besseren Lesbarkeit sollten Sie den Befehl dann mit „|less“ oder „|more“ kombinieren
firewall-cmd –list-all-zonen | less
Auswählen von Zonen für Ihre Netzwerk-Schnittstellen
Sofern Sie nicht Ihre Netzwerkschnittstellen anders konfiguriert haben, wird jedes Interface (also die Schnittstelle) in die Standardzone gesetzt, wenn die Firewall gebootet wird.
Ändern der Zone einer Schnittstelle für die aktuelle Sitzung
Sie können eine Schnittstelle zwischen den Zonen während einer Sitzung übergeben, indem Sie den Parameter –zone = in Verbindung mit dem Parameter –change-interface = verwenden. Wie bei allen Befehlen, die die Firewall ändern, müssen Sie sudo verwenden.
Zum Beispiel können wir unsere eth0-Schnittstelle in die „home“ -Zone übergehen, indem wir folgendes eingeben:
sudo firewall-cmd – zone = home – change-interface = eth0
Immer wenn Sie eine Schnittstelle zu einer neuen Zone übergeben, sollten Sie sich darüber bewusst sein, dass Sie wahrscheinlich die Dienste ändern, die in Betrieb sein werden. Zum Beispiel bewegen wir uns hier in die „home“ Zone, die SSH zur Verfügung stellt. Das bedeutet, dass unsere Verbindung nicht unterbrochen werden sollten. Einige andere Zonen sind standardmäßig nicht SSH aktiviert und wenn Ihre Verbindung unter Verwendung einer dieser Zonen gekappt wird, können Sie sich nicht wieder anmelden.
Sie überprüfen, dass dies erfolgreich war, indem wir wieder nach den aktiven Zonen fragen:
firewall-cmd –get-active-zonen
Wenn die Firewall komplett neu gestartet wird, wechselt die Schnittstelle zur Standardzone:
sudo systemctl restart firewalld.service
firewall-cmd –get-active-zonen
Ausgabe
public
interfaces: eth0 eth1
Zone Ihrer Schnittstelle dauerhaft ändern
Schnittstellen werden immer auf die Standardzone zurückgesetzt, wenn sie keine alternative Zone haben, die in ihrer Centos Konfiguration abgespeichert ist. Bei CentOS 7 sind diese Konfigurationen im Verzeichnis /etc/sysconfig/network-scripts mit Dateien des Formats ifcfg-<interface-name> definiert.
Um eine Zone für das Interface zu ändern, öffnen Sie die Datei, die mit der Schnittstelle verknüpft ist, die Sie ändern möchten. Bsp mit eth0 (erste Netzwerkkarte):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Am unteren Rand der Datei setzen Sie die ZONE = Variable auf die Zone, die Sie mit der Schnittstelle verknüpfen möchten. In unserem Fall wäre das die „home“ -Schnittstelle:
/ etc/sysconfig/network-scripts/ifcfg-eth0
…
ZONE = home
Speichern und schließen Sie die Datei. (:wq in vi)
Um Ihre Änderungen zu übernehmen, müssen Sie den Netzwerkdienst neu starten – anschließend das Gleiche mit dem firewalld -Dienst:
sudo systemctl restart network.service
sudo systemctl restart firewalld.service
Nachdem Ihre Firewall neu gestartet wurde, können Sie sehen, dass Ihre eth0-Schnittstelle automatisch in die „home“ gesetzt wird:
firewall-cmd –get-active-zones
Ausgabe
home
interfaces: eth0
public
interfaces: eth1
Falls dies nicht die tatsächliche Zone ist, die Sie für diese Schnittstelle verwenden möchten, so machen Sie diese Einstellung einfach wieder rückgängig und starten die beiden Dienste erneut
Einstellen der Standardzone
Wenn Sie alle Ihre Schnittstellen in einer einzigen Zone verwalten können, ist es wahrscheinlich einfacher, die für Ihren Einsatzzweck passendste Standardzone auszuwählen und diese dann diese für Ihre Konfiguration zu verwenden.
Sie können die Standardzone mit dem Parameter –set-default-zone = jederzeit ändern. Dadurch wird sofort eine beliebige Schnittstelle geändert, die auf die Voreinstellung der neuen Zone zurückgefallen ist:
sudo firewall-cmd –set-default-zone = home
Ausgabe
home
interfaces: eth0 eth1
Festlegung von Regeln für Ihre Dienste & Anwendungen
Die grundsätzlich Art und Weise, Firewall-Ausnahmen für die Dienste zu definieren, die Sie zur Verfügung stellen möchten, ist einfach
Hinzufügen eines Dienstes zu Ihren Zonen
Die einfachste Methode ist es, die Dienste oder Ports, die Sie benötigen, den Zonen zuzuweisen, die Sie hauptsächlich verwenden. Auch hier können Sie mit der Option –get-services eine Liste der verfügbaren Dienste abrufen:
firewall-cmd -get-services
output
dhcp dhcpv6 dhcpv6-client dns ftp … (gekürzt) samba-client smtp ssh telnet tftp tftp-client vnc-server
Hinweis
Sie können weitere Einzelheiten zu jedem dieser Dienste erhalten, indem Sie ihre zugehörige XML-Datei im Verzeichnis/usr/lib/firewalld/services betrachten. Zum Beispiel ist der SSH-Service wie folgt definiert:
/usr/lib/firewalld/services/ssh.xml
<? Xml version = „1.0“ encoding = „utf-8“?>
<Service>
<Short> SSH </ short>
<Description> Secure Shell (SSH) ist ein Protokoll für die Anmeldung und Ausführung von Befehlen auf entfernten Rechnern. Es bietet sichere verschlüsselte Kommunikation. Wenn Sie planen, auf Ihre Maschine remote über SSH über eine Firewall-Schnittstelle zuzugreifen, aktivieren Sie diese Option. Sie benötigen das für diese Option installierte openssh-Serverpaket. </ Description>
<Port protocol = „tcp“ port = „22“ />
</ Service>
Sie können einen Dienst einer Zone mit dem Parameter –add-service = hinzufügen. Die Operation wirkt sich auf die Standardzone oder die Zone, die durch den Parameter –zone = angegeben wird aus. Standardmäßig wird nur die aktuelle Firewall-Sitzung angepasst. Sie können die permanente Firewall-Konfiguration anpassen, indem Sie das –permanent-Flag hinzu fügen..
Wenn wir zum Beispiel einen Webserver mit konventionellem HTTP-Verkehr betreiben, können wir diesen Datenverkehr für Schnittstellen in unserer „öffentlichen“ Zone für diese Sitzung zulassen, indem Sie Folgendes eingeben:
sudo firewall-cmd –zone = public –add-service = http
Sie können den Zusatz „–zone =“ weglassen, wenn Sie die Standardzone ändern möchten. Sie können überprüfen, ob die Operation erfolgreich war, indem Sie die –list-all- oder –list-services-Operationen verwenden:
firewall-cmd – zone = public –list-services
Ausgabe
dhcpv6-client http ssh
Sobald Sie getestet haben, dass alles so funktioniert, wie es sollte, werden Sie wahrscheinlich die permanenten Firewall-Regeln ändern, damit Ihr Service nach einem Neustart weiterhin verfügbar ist. Wir können Zonenänderung der „public“-Zone durch Eingabe durchführen:
sudo firewall-cmd –zone = public –permanent –add-service = http
Sie können überprüfen, ob dies erfolgreich war, indem Sie das –permanent-Flag zum –list-services-Vorgang hinzufügen. Sie müssen sudo für – permanent Abfragen verwenden:
sudo firewall-cmd –zone = public –permanent –list-services
Ihre „public“ Zone erlaubt nun den HTTP-Webverkehr auf Port 80. Wenn Ihr Webserver für die Verwendung von SSL/TLS konfiguriert ist, möchten Sie auch den https-Dienst hinzufügen. Wir können das in der aktuellen Session hinzufügen und die permanente Regel aktivieren bzw. speichern durch Eingabe von:
sudo firewall-cmd – zone = public –add-service = https
sudo firewall-cmd –zone = public –permanent –add-service = https
Wenn kein entsprechender Service vorhanden ist?
Die Firewall-Services, die in der firewalld-Installation enthalten sind, stellen viele der häufigsten Anforderungen für Anwendungen dar, auf die Sie Zugriff haben können. Allerdings kann es Anwendungsfälle geben, in denen diese Dienste nicht Ihren Anforderungen entsprechen.
In dieser Situation haben Sie zwei Möglichkeiten.
Öffnen eines Ports für ihre Zonen
Der einfachste Weg, um Unterstützung für Ihre spezifische Anwendung hinzuzufügen, ist, die Ports zu öffnen, die es in der entsprechenden Zone (n) verwendet. Dies ist so einfach wie die Angabe der Port- oder Port-Bereich und das zugehörige Protokoll für die Ports, die Sie öffnen müssen.
Zum Beispiel, wenn unsere Anwendung auf Port 5000 läuft und TCP verwendet, könnten wir dies in der „public“ Zone für diese Sitzung mit dem Parameter –add-port = hinzufügen. Protokolle können dabei entweder tcp oder udp sein:
sudo firewall-cmd – zone = public –add-port = 5000/tcp
Sie können überprüfen, dass dies mit der Anwendung –list-ports erfolgreich war:
firewall-cmd –list-Ports
Ausgabe
5000/tcp
Es ist auch möglich, einen sequentiellen Bereich von Ports zu spezifizieren, indem der Anfangs- und End-Port im Bereich mit einem Bindestrich getrennt wird. Zum Beispiel, wenn unsere Anwendung UDP-Ports 4990 bis 4999 verwendet, könnten wir diese auf „public“ durch die folgende Eingabe einstellen:
sudo firewall-cmd – zone = public –add-port = 4990-4999/udp
Nach dem Testen würden wir diese wahrscheinlich der permanenten Firewall hinzufügen wollen. Sie können das tun, indem Sie folgendes eingeben:
sudo firewall-cmd – zone = public –permanent –add-port = 5000/tcp
sudo firewall-cmd – zone = public –permanent –add-port = 4990-4999/udp
sudo firewall-cmd –zone = public –permanent –list-ports
Ausgabe:
4990-4999/udp 5000/tcp
Einen Dienst definieren
Bestimmte Ports für eine Zone zu öffnen ist einfach. Es kann auf Dauer aber schwierig sein, den Überblick zu behalten, welcher Port-Wert zu welchem Dienst gehört. Wenn Sie jemals einen „Service“ auf Ihrem Server ausschalten, können Sie sich vielleicht nur schwer daran erinnern, welche Ports, die geöffnet wurden, noch erforderlich sind. Um diese Situation zu entschärfen, ist es möglich, eigene Services zu definieren.
Services sind einfach Sammlungen von Ports mit einem zugehörigen Namen und einer Beschreibung. Die Verwendung von Diensten ist einfacher zu verwalten als Ports, erfordert aber etwas Vorarbeit in der Konfiguration von Centos 7. Der einfachste Weg ist das Kopieren eines vorhandenen Skripts (zu finden in/usr/lib/firewalld/services) in das Verzeichnis/etc/firewalld/services, in dem die Firewall nach Nicht-Standarddefinitionen für firewalld sucht.
Zum Beispiel könnten wir die SSH-Service-Definition kopieren, um für unsere „Beispiel“ Service-Definition wie diese zu verwenden. Der Dateiname abzüglich des .xml-Suffixes bestimmt den Namen des Dienstes in der Liste der Firewall-Dienste:
cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/beispiel.xml
Nun können Sie die Definition in der Datei, die Sie kopiert haben, anpassen:
Sudo nano /etc/firewalld/services/beispiel.xml
Zum Starten enthält die Datei die SSH-Definition, die Sie kopiert haben:
/etc/firewalld/services/beispiel.xml
<? Xml version = „1.0“ encoding = „utf-8“?>
<Service>
<Short> SSH </ short>
<Description> Secure Shell (SSH) ist ein Protokoll für die Anmeldung und Ausführung von Befehlen auf entfernten Rechnern. Es bietet sichere verschlüsselte Kommunikation. Wenn Sie planen, auf Ihre Maschine remote über SSH über eine Firewall-Schnittstelle zuzugreifen, aktivieren Sie diese Option. Sie benötigen das für diese Option installierte openssh-Serverpaket. </ Description>
<Port protocol = „tcp“ port = „22“ />
</ Service>
Der Großteil dieser Definition sind eigentlich Metadaten. Sie werden vermutlich am besten den Kurznamen für den Dienst innerhalb der <short> -Tags ändern. Dies ist ein besser lesbarer Name für Ihren Service. Sie sollten ebenfalls eine Beschreibung hinzufügen, so dass Sie mehr Informationen haben, wenn Sie den Service prüfen (und vorher nicht mehr wissen, wofür er gedacht ist).
Die einzige Ändreug, die Sie machen müssen, die tatsächlich die Funktionalität des Dienstes beeinflusst, wird wahrscheinlich die Port-Definition sein, wo Sie die Portnummer und das Protokoll identifizieren, die Sie öffnen möchten. Dies kann mehrfach angegeben werden.
Für unseren „Beispiel“ -Dienst stellen Sie sich vor, dass wir Port 7777 für TCP und 8888 für UDP öffnen müssen. Wir könnten die bestehende Definition etwas folgendermaßen ändern:
/etc/firewalld/services/beispiel.xml
<? Xml version = „1.0“ encoding = „utf-8“?>
<Service>
<Short> Beispiel Service </ short>
<Description> Dies ist nur ein Beispiel Service. Es sollte wohl nicht auf einem realen System verwendet werden. </ Description>
<Port protocol = „tcp“ port = „7777“ />
<Portprotokoll = „udp“ Port = „8888“ />
</ Service>
Speichern und schließen Sie die Datei. Laden Sie Ihre Firewall neu, um Zugang zu Ihrem neuen Service zu erhalten:
sudo firewall-cmd – reload
Sie können sehen, dass es jetzt unter der Liste der verfügbaren Dienste ist:
firewall-cmd -get-services
Ausgabe
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns Beispiel ftp hochverfügbarkeit http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy Pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client übertragung-client vnc-server wbem-https
Sie können diesen Service jetzt in all Ihren Zonen verwenden.
Eigene Zonen in firewalld erstellen
Während die vordefinierten Zonen für die meisten Benutzer wahrscheinlich mehr als ausreichend sind, kann es hilfreich sein, eigene Zonen zu definieren, die etwa eine andere Benennung oder Beschreibung haben.
Zum Beispiel möchten Sie vielleicht eine Zone für Ihren Webserver mit dem Namen „publicweb“ erstellen. Allerdings möchten Sie vielleicht eine andere Zone für den DNS-Dienst konfigurieren, den Sie in Ihrem privaten Netzwerk bereitstellen. Vielleicht möchten Sie eine Zone namens „privateDNS“ dafür.
Beim Hinzufügen einer Zone müssen Sie diese der permanenten Firewall-Konfiguration hinzufügen. Sie können die Definition dann erneut laden, um die Konfiguration in Ihrer laufenden Sitzung zu verwenden. Zum Beispiel könnten wir die beiden Zonen, die wir oben besprochen haben, wie folgt erzeugen:
sudo firewall-cmd –permanent –new-zone = publicweb
udo firewall-cmd –permanent –new-zone = privateDNS
Sie können überprüfen, ob diese in Ihrer permanenten Konfiguration vorhanden sind, indem Sie Folgendes eingeben:
sudo firewall-cmd –permanent –get-zonen
Ausgabe
block dmz drop external home internal privateDNS public publicweb trusted work
Wie bereits erwähnt, sind diese in der aktuellen Instanz der Firewall noch nicht verfügbar:
firewall-cmd -get-zonen
Ausgabe
block dmz drop external home internal public trusted work
Laden Sie die Firewall neu, um diese neuen Zonen zu aktivieren:
sudo firewall-cmd – reload
firewall-cmd -get-zonen
Ausgabe
block dmz drop external home internal privateDNS public publicweb trusted work
Jetzt können Sie anfangen, die entsprechenden Dienste und Ports zu Ihren Zonen zuzuordnen. Es ist normalerweise eine gute Idee, die aktive Instanz anzupassen und diese Änderungen nach dem Testen in die permanente Konfiguration zu übertragen. Zum Beispiel können Sie für die „publicweb“ -Zone die SSH-, HTTP- und HTTPS-Dienste hinzufügen:
sudo firewall-cmd – zone = publicweb –add-service = ssh
sudo firewall-cmd –zone = publicweb –add-service = http
sudo firewall-cmd –zone = publicweb –add-service = https
firewall-cmd –zone = publicweb –list-all
Ausgabe
Publicweb
(…)
Ebenso können wir den DNS-Service in unsere Zone „privateDNS“ hinzufügen:
sudo firewall-cmd – zone = privateDNS –add-service = dns
firewall-cmd –zone = privateDNS –list-all
Ausgabe
PrivateDNS
Wir könnten dann unsere Interfaces (z.B. eth0) zu diesen neuen Zonen ändern, um sie auszuprobieren:
sudo firewall-cmd – zone = publicweb – change-interface = eth0
sudo firewall-cmd – zone = privateDNS – change-interface = eth1
An dieser Stelle haben Sie die Möglichkeit, Ihre Konfiguration zu testen. Wenn diese Werte für Sie zufriedenstellen funktionieren, wollen Sie die gleichen Regeln der permanenten Konfiguration hinzufügen. Sie können das tun, indem Sie die Regeln mit dem –permanent-Flag erneut anwenden:
sudo firewall-cmd –zone = publicweb –permanent –add-service = ssh
sudo firewall-cmd –zone = publicweb –permanent –add-service = http
sudo firewall-cmd –zone = publicweb –permanent –add-service = https
sudo firewall-cmd –zone = privateDNS –permanent –add-service = dns
Sie können anschließend Ihre Netzwerkschnittstellen ändern, um automatisch die richtigen Zonen auszuwählen. Wir können etwa die eth0-Schnittstelle mit der „publicweb“ -Zone verbinden:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
ZONE =publicWeb
Und Sie können die eth1-Schnittstelle mit „privateDNS“ verknüpfen:
vi/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth1
ZONE = privateDNS
Anschließend können Sie Ihre Netzwerk- und Firewall-Services neu starten:
sudo systemctl restart Netzwerk
sudo systemctl restart firewalld
Überprüfen der korrekten Zuweisung der Zone(n)
firewall-cmd –get-active-zonen
Ausgabe
PrivateDNS
interfaces: eth1
Publicweb
interfaces: eth0
So prüfen Sie, dass die entsprechenden Dienste für beide Zonen zur Verfügung stehen:
firewall-cmd –zone = publicweb –list-services
Ausgabe
Http htpps ssh
firewall-cmd –zone = privateDNS –list-services
Ausgabe
Dns
Sie haben Ihre eigenen Zonen erfolgreich eingerichtet. Wenn Sie eine dieser Zonen als Standard für andere Schnittstellen machen möchten, denken Sie daran, dieses Verhalten mit dem Parameter –set-default-zone = <ZONE> zu konfigurieren:
Sudo firewall-cmd –set-default-zone = publicweb
Aktivieren des firewalld Dienstes beim Booten
Am Anfang des Tutorials haben wir unseren Firewall-Service gestartet, aber ihn (noch) nicht aktiviert. Wenn Sie jetzt mit Ihrer aktuellen Konfiguration für den firewalld-Dienst zufrieden sind und ihn getestet haben, können Sie den Service aktivieren damit er beim nächsten Reboot des Centos 7 Servers startet.
Das erledigen Sie mit dem Kommando:
sudo systemctl enable firewalld
Wenn der Server neu gestartet wird, sollte ihre Firewall gestartet werden, deine Netzwerkschnittstellen sollten in den von Ihnen konfigurierten Zonen gelegt werden (oder auf die konfigurierte Standardzone zurückgreifen), und die Regeln, die mit der Zone (n) verknüpft sind, werden auf die zugehörigen Schnittstellen angewendet.
Fazit zu firewalld unter Centos 7
Sie sollten nun ein gutes Verständnis dafür haben, wie Sie den firewalld-Service auf Ihrem CentOS-7-System für den täglichen Gebrauch verwalten können.
Mit dem firewalld-Dienst können Sie Wartungsregeln und Regelsätze konfigurieren, die Ihre konkrete Netzwerkumgebung berücksichtigen. Es ermöglicht Ihnen, nahtlos zwischen verschiedenen Firewall-Richtlinien durch die Verwendung von Zonen zu wechseln und gibt Ihnen bzw. Administratoren die Möglichkeit, das Port-Management in „freundlichere“ Service-Definitionen zu abstrahieren.
Sollten Sie konkrete Fragen zum Einsatz von Centos 7 oder firewalld in der Praxis haben, so stehen Ihnen die IT-Experten vom IT-Dienstleister Biteno GmbH gerne zur Verfügung.
Hinweis: Dieser Artikel ist eine sinngemäße Übersetzung von https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
- Über den Autor
- Aktuelle Beiträge
Matthias Böhmichen ist Geschäftsführer des IT-Dienstleisters Biteno GmbH. Neben seinem Job blogt und schreibt er auf den Webseiten der Biteno GmbH über technische und unternehmerische Themen.