Wie Sie firewalld unter Centos 7 nutzen

, ,
Passwort-Manager

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 Dienst schützt ihren Centos 7 Server

Der firewalld Dienst schützt ihren Centos 7 Server

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

Die meisten Kommandos für den firewall-Dienst werden auf der Kommando-Zeile eingegeben

Die meisten Kommandos für den firewall-Dienst werden auf der Kommando-Zeile eingegeben

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:

services: dhcpv6-client ssh

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.

Mehr zum Thema:
Was ist OpenSuSE Linux - einfach erklärt

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

Mehr Sicherheit mit der richten Firewalld-Konfiguration unter Centos 7

Mehr Sicherheit mit der richten Firewalld-Konfiguration unter Centos 7

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

Blog kein Loch in die Centos Firewall "bohren" ...

Blog kein Loch in die Centos Firewall „bohren“ …

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.

Mehr zum Thema:
IPFire vs pfSense: Welche Firewall ist Top?

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