Einführung
Firewalld ist eine Firewall-Verwaltungslösung, die für viele Linux-Distributionen verfügbar ist und als Frontend für das vom Linux-Kernel bereitgestellte iptables-Paketfiltersystem fungiert. In diesem Handbuch erfahren Sie, wie Sie eine Firewall für Ihren Server einrichten und wie Sie die Firewall mit dem Verwaltungstool firewall-cmd
verwalten (wenn Sie iptables
lieber mit CentOS verwenden möchten, folgen Sie dieser Anleitung).
Hinweis: Es besteht die Möglichkeit, dass Sie mit einer neueren Version von firewalld arbeiten, als zum Zeitpunkt des Schreibens dieses Artikels verfügbar war, oder dass Ihr Server etwas anders eingerichtet wurde als der in diesem Handbuch verwendete Beispielserver. Daher kann das Verhalten einiger der in diesem Handbuch erläuterten Befehle abhängig von Ihrer spezifischen Konfiguration variieren.
Grundlegende Konzepte in Firewalld
Bevor wir darüber sprechen, wie Sie das Dienstprogramm firewall-cmd
zur Verwaltung Ihrer Firewall-Konfiguration verwenden, sollten wir uns mit einigen grundlegenden Konzepten vertraut machen, die das Tool einführt.
Zonen
Der firewalld
-Daemon verwaltet Regelgruppen mithilfe von Entitäten, die als „Zonen“ bezeichnet werden. Zonen sind im Grunde genommen Regelwerke, die festlegen, welcher Datenverkehr zugelassen werden soll, abhängig von der Vertrauensstufe, die Sie in den Netzwerken haben, mit denen Ihr Computer verbunden ist. Netzwerkschnittstellen wird eine Zone zugewiesen, um das Verhalten zu bestimmen, das die Firewall zulassen soll.
Für Computer, die häufig zwischen Netzwerken wechseln (z. B. Laptops), bietet diese Art von Flexibilität eine gute Methode, um Ihre Regeln abhängig von Ihrer Umgebung zu ändern. Möglicherweise gibt es strenge Regeln, die den größten Teil des Datenverkehrs verbieten, wenn Sie in einem öffentlichen WLAN-Netzwerk arbeiten, und gleichzeitig entspanntere Einschränkungen zulassen, wenn Sie mit Ihrem Heimnetzwerk verbunden sind. Für einen Server sind diese Zonen nicht so unmittelbar wichtig, da sich die Netzwerkumgebung selten, wenn überhaupt, ändert.
Unabhängig davon, wie dynamisch Ihre Netzwerkumgebung sein mag, ist es dennoch nützlich, mit der allgemeinen Idee hinter jeder der vordefinierten Zonen für firewalld
vertraut zu sein. In der Reihenfolge von am wenigsten vertrauenswürdig zu am meisten vertrauenswürdig sind die vordefinierten Zonen innerhalb von firewalld
:
- tropfen: Das niedrigste Maß an Vertrauen. Alle eingehenden Verbindungen werden ohne Antwort gelöscht und nur ausgehende Verbindungen sind möglich.
- Block: Ähnlich wie oben, aber anstatt einfach Verbindungen zu löschen, werden eingehende Anforderungen mit einer
icmp-host-prohibited
odericmp6-adm-prohibited
Nachricht abgelehnt. - public: Repräsentiert öffentliche, nicht vertrauenswürdige Netzwerke. Sie vertrauen anderen Computern nicht, können jedoch ausgewählte eingehende Verbindungen von Fall zu Fall zulassen.
- extern: Externe Netzwerke für den Fall, dass Sie die Firewall als Gateway verwenden. Es ist für NAT-Masquerading konfiguriert, sodass Ihr internes Netzwerk privat, aber erreichbar bleibt.
- intern: 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 (isolierte Computer, die keinen Zugriff auf den Rest Ihres Netzwerks haben). Nur bestimmte eingehende Verbindungen sind zulässig.
- Arbeit: Wird für Arbeitsmaschinen verwendet. Vertrauen Sie den meisten Computern im Netzwerk. Ein paar mehr Dienste könnten erlaubt sein.
- Zuhause: Eine häusliche Umgebung. Dies bedeutet im Allgemeinen, dass Sie den meisten anderen Computern vertrauen und dass einige weitere Dienste akzeptiert werden.
- vertrauenswürdig: Vertrauen Sie allen Maschinen im Netzwerk. Die offenste der verfügbaren Optionen und sollte sparsam verwendet werden.
Um die Firewall zu verwenden, können wir Regeln erstellen und die Eigenschaften unserer Zonen ändern und dann unsere Netzwerkschnittstellen den am besten geeigneten Zonen zuweisen.
Regelpermanenz
In firewalld können Regeln entweder als dauerhaft oder sofort festgelegt werden. Wenn eine Regel hinzugefügt oder geändert wird, wird standardmäßig das Verhalten der aktuell ausgeführten Firewall geändert. Beim nächsten Booten werden die alten Regeln zurückgesetzt.
Die meisten firewall-cmd
-Vorgänge können das --permanent
-Flag verwenden, um anzuzeigen, dass die nicht-ephemere Firewall als Ziel verwendet werden soll. Dies wirkt sich auf den Regelsatz aus, der beim Booten neu geladen wird. Diese Trennung bedeutet, dass Sie Regeln in Ihrer aktiven Firewall-Instanz testen und dann bei Problemen neu laden können. Sie können auch das Flag --permanent
verwenden, um im Laufe der Zeit einen ganzen Satz von Regeln zu erstellen, die alle gleichzeitig angewendet werden, wenn der Befehl reload ausgegeben wird.
Installieren und aktivieren Sie Ihre Firewall, um beim Booten zu starten
firewalld
ist standardmäßig auf einigen Linux-Distributionen installiert, einschließlich vieler Images von CentOS 7. Es kann jedoch erforderlich sein, dass Sie firewalld selbst installieren:
- sudo yum install firewalld
Nach der Installation von firewalld
können Sie den Dienst aktivieren und den Server neu starten. Beachten Sie, dass das Aktivieren von firewalld dazu führt, dass der Dienst beim Booten gestartet wird. Es empfiehlt sich, Ihre Firewallregeln zu erstellen und die Gelegenheit zu nutzen, sie zu testen, bevor Sie dieses Verhalten konfigurieren, um potenzielle Probleme zu vermeiden.
- sudo systemctl enable firewalld
- sudo reboot
Wenn der Server neu gestartet wird, sollte Ihre Firewall aufgerufen werden, Ihre Netzwerkschnittstellen sollten in die von Ihnen konfigurierten Zonen verschoben werden (oder auf die konfigurierte Standardzone zurückfallen), und alle mit den Zonen verknüpften Regeln werden auf die zugeordneten Schnittstellen angewendet.
Wir können überprüfen, ob der Dienst ausgeführt wird und erreichbar ist, indem Sie Folgendes eingeben:
- sudo firewall-cmd --state
outputrunning
Dies zeigt an, dass unsere Firewall mit der Standardkonfiguration läuft.
Sich mit den aktuellen Firewall-Regeln vertraut machen
Bevor wir Änderungen vornehmen, sollten wir uns mit der Standardumgebung und den vom Daemon bereitgestellten Regeln vertraut machen.
Erkundung der Standardwerte
Wir können sehen, welche Zone derzeit als Standard ausgewählt ist, indem wir Folgendes eingeben:
- firewall-cmd --get-default-zone
outputpublic
Da wir firewalld
keine Befehle zum Abweichen von der Standardzone gegeben haben und keine unserer Schnittstellen für die Bindung an eine andere Zone konfiguriert ist, ist diese Zone auch die einzige „aktive“ Zone (die Zone, die den Datenverkehr für unsere Schnittstellen steuert). Wir können dies überprüfen, indem Wir Folgendes eingeben:
- firewall-cmd --get-active-zones
outputpublic interfaces: eth0 eth1
Hier sehen wir, dass unser Beispielserver über zwei Netzwerkschnittstellen verfügt, die von der Firewall gesteuert werden (eth0
und eth1
). Beide werden derzeit gemäß den für die öffentliche Zone definierten Regeln verwaltet.
Woher wissen wir, welche Regeln mit der öffentlichen Zone verbunden sind? Wir können die Konfiguration der Standardzone ausdrucken, indem wir Folgendes eingeben:
- sudo firewall-cmd --list-all
outputpublic (default, active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Wir können an der Ausgabe erkennen, dass diese Zone sowohl Standard als auch aktiv ist und dass die Schnittstellen eth0
und eth1
dieser Zone zugeordnet sind (wir wussten dies alles bereits aus unseren vorherigen Anfragen). Wir können jedoch auch sehen, dass diese Zone die normalen Vorgänge ermöglicht, die mit einem DHCP-Client (für die Zuweisung von IP-Adressen) und SSH (für die Remoteverwaltung) verbunden sind.
Erkundung alternativer Zonen
Jetzt haben wir eine gute Vorstellung von der Konfiguration für die Standard- und die aktive Zone. Wir können auch Informationen über andere Zonen herausfinden.
Um eine Liste der verfügbaren Zonen zu erhalten, geben Sie:
- firewall-cmd --get-zones
outputblock dmz drop external home internal public trusted work
Wir können die spezifische Konfiguration einer Zone anzeigen, indem wir den Parameter --zone=
in unseren Befehl --list-all
aufnehmen:
- sudo firewall-cmd --zone=home --list-all
outputhome interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Sie können alle Zonendefinitionen mit der Option --list-all-zones
ausgeben. Wahrscheinlich möchten Sie die Ausgabe zur einfacheren Anzeige in einen Pager leiten:
- sudo firewall-cmd --list-all-zones | less
Zonen für Ihre Schnittstellen auswählen
Sofern Sie Ihre Netzwerkschnittstellen nicht anders konfiguriert haben, wird jede Schnittstelle beim Booten der Firewall in die Standardzone verschoben.
Ändern der Zone einer Schnittstelle
Sie können eine Schnittstelle während einer Sitzung zwischen Zonen wechseln, indem Sie den Parameter --zone=
in Kombination 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 überführen, indem wir Folgendes eingeben:
- sudo firewall-cmd --zone=home --change-interface=eth0
outputsuccess
Wenn Sie eine Schnittstelle in eine neue Zone umstellen, beachten Sie, dass Sie wahrscheinlich die Dienste ändern, die in Betrieb sein werden. Zum Beispiel bewegen wir uns hier in die „Home“ -Zone, in der SSH verfügbar ist. Dies bedeutet, dass unsere Verbindung nicht unterbrochen werden sollte. In einigen anderen Zonen ist SSH standardmäßig nicht aktiviert, und wenn Ihre Verbindung unterbrochen wird, während Sie eine dieser Zonen verwenden, können Sie sich möglicherweise nicht wieder anmelden.
Wir können überprüfen, ob dies erfolgreich war, indem wir erneut nach den aktiven Zonen fragen:
- firewall-cmd --get-active-zones
outputhome interfaces: eth0public interfaces: eth1
Anpassen der Standardzone
Wenn alle Ihre Schnittstellen am besten von einer einzigen Zone verwaltet werden können, ist es wahrscheinlich einfacher, nur die beste Standardzone auszuwählen und diese dann für Ihre Konfiguration zu verwenden.
Sie können die Standardzone mit dem Parameter --set-default-zone=
ändern. Dadurch wird jede Schnittstelle, die auf die Standardeinstellung zurückgefallen ist, sofort in die neue Zone geändert:
- sudo firewall-cmd --set-default-zone=home
outputsuccess
Festlegen von Regeln für Ihre Anwendungen
Die grundlegende Methode zum Definieren von Firewall-Ausnahmen für die Dienste, die Sie verfügbar machen möchten, ist einfach. Wir werden hier die Grundidee durchgehen.
Hinzufügen eines Dienstes zu Ihren Zonen
Die einfachste Methode besteht darin, die benötigten Dienste oder Ports zu den von Ihnen verwendeten Zonen hinzuzufügen. Auch hier können Sie mit der Option --get-services
eine Liste der verfügbaren Dienste abrufen:
- firewall-cmd --get-services
outputRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Weitere Informationen zu jedem dieser Dienste finden Sie in der zugehörigen .xml
-Datei im /usr/lib/firewalld/services
-Verzeichnis. Der SSH-Dienst ist beispielsweise folgendermaßen definiert:
<?xml version="1.0" encoding="utf-8"?><service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/></service>
Sie können einen Dienst für eine Zone mit dem Parameter --add-service=
aktivieren. Die Operation zielt auf die Standardzone oder eine beliebige Zone ab, die durch den Parameter --zone=
angegeben wird. Standardmäßig wird dadurch nur die aktuelle Firewall-Sitzung angepasst. Sie können die permanente Firewall-Konfiguration anpassen, indem Sie das Flag --permanent
einfügen.
Wenn wir beispielsweise einen Webserver betreiben, der herkömmlichen HTTP-Datenverkehr bereitstellt, können wir diesen Datenverkehr für Schnittstellen in unserer „öffentlichen“ Zone für diese Sitzung zulassen, indem wir Folgendes eingeben:
- sudo firewall-cmd --zone=public --add-service=http
Sie können die --zone=
weglassen, wenn Sie die Standardzone ändern möchten. Wir können überprüfen, ob die Operation erfolgreich war, indem wir die Operationen --list-all
oder --list-services
verwenden:
- sudo firewall-cmd --zone=public --list-services
outputdhcpv6-client http ssh
Sobald Sie getestet haben, dass alles ordnungsgemäß funktioniert, möchten Sie wahrscheinlich die permanenten Firewall-Regeln so ändern, dass Ihr Dienst nach einem Neustart weiterhin verfügbar ist. Wir können unsere „öffentliche“ Zonenänderung dauerhaft machen, indem wir Folgendes eingeben:
- sudo firewall-cmd --zone=public --permanent --add-service=http
outputsuccess
Sie können überprüfen, ob dies erfolgreich war, indem Sie das Flag --permanent
zur Operation --list-services
hinzufügen. Sie müssen sudo
für alle --permanent
Operationen verwenden:
- sudo firewall-cmd --zone=public --permanent --list-services
outputdhcpv6-client http ssh
Ihre „öffentliche“ Zone erlaubt jetzt HTTP-Webverkehr auf Port 80. Wenn Ihr Webserver für die Verwendung von SSL /TLS konfiguriert ist, sollten Sie auch den Dienst https
hinzufügen. Wir können dies der aktuellen Sitzung und dem permanenten Regelsatz hinzufügen, indem wir Folgendes eingeben:
- sudo firewall-cmd --zone=public --add-service=https
- sudo firewall-cmd --zone=public --permanent --add-service=https
Was ist, wenn kein geeigneter Service verfügbar ist?
Die Firewalldienste, die in der firewalld-Installation enthalten sind, stellen viele der häufigsten Anforderungen für Anwendungen dar, auf die Sie möglicherweise zugreifen möchten. Es wird jedoch wahrscheinlich Szenarien geben, in denen diese Dienste nicht Ihren Anforderungen entsprechen.
In dieser Situation haben Sie zwei Möglichkeiten.
Öffnen eines Ports für Ihre Zonen
Die einfachste Möglichkeit, Unterstützung für Ihre spezifische Anwendung hinzuzufügen, besteht darin, die Ports zu öffnen, die sie in den entsprechenden Zonen verwendet. Dies ist so einfach wie die Angabe des Ports oder Portbereichs und des zugehörigen Protokolls für die Ports, die Sie öffnen müssen.
Wenn unsere Anwendung beispielsweise auf Port 5000 ausgeführt wird und TCP verwendet, können wir dies mithilfe des Parameters --add-port=
zur Zone „public“ für diese Sitzung hinzufügen. Protokolle können entweder tcp
oder udp
:
- sudo firewall-cmd --zone=public --add-port=5000/tcp
outputsuccess
Wir können überprüfen, ob dies mit der Operation --list-ports
erfolgreich war:
- sudo firewall-cmd --zone=public --list-ports
output5000/tcp
Es ist auch möglich, einen sequentiellen Bereich von Ports anzugeben, indem Sie den Anfangs- und Endport im Bereich durch einen Bindestrich trennen. Wenn unsere Anwendung beispielsweise die UDP-Ports 4990 bis 4999 verwendet, können wir diese auf „öffentlich“ öffnen, indem wir Folgendes eingeben:
- sudo firewall-cmd --zone=public --add-port=4990-4999/udp
Nach dem Testen möchten wir diese wahrscheinlich zur permanenten Firewall hinzufügen. Sie können dies 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
outputsuccesssuccess5000/tcp 4990-4999/udp
Definieren eines Dienstes
Das Öffnen von Ports für Ihre Zonen ist einfach, aber es kann schwierig sein, den Überblick darüber zu behalten, wofür die einzelnen Zonen bestimmt sind. Wenn Sie jemals einen Dienst auf Ihrem Server außer Betrieb nehmen, fällt es Ihnen möglicherweise schwer, sich daran zu erinnern, welche geöffneten Ports noch benötigt werden. Um diese Situation zu vermeiden, ist es möglich, einen Dienst zu definieren.
Dienste sind einfach Sammlungen von Ports mit einem zugeordneten Namen und einer zugehörigen Beschreibung. Die Verwendung von Diensten ist einfacher zu verwalten als Ports, erfordert jedoch ein wenig Vorarbeit. Am einfachsten ist es, ein vorhandenes Skript (in /usr/lib/firewalld/services
) in das Verzeichnis /etc/firewalld/services
zu kopieren, in dem die Firewall nach nicht standardmäßigen Definitionen sucht.
Zum Beispiel könnten wir die SSH-Service-Definition kopieren, um sie für unsere „Beispiel“ -Service-Definition wie diese zu verwenden. Der Dateiname abzüglich des Suffixes .xml
bestimmt den Namen des Dienstes in der Liste der Firewall-Dienste:
- sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml
Jetzt können Sie die Definition in der kopierten Datei anpassen:
sudo vi /etc/firewalld/services/example.xml
Zu Beginn enthält die Datei die SSH-Definition, die Sie kopiert haben:
<?xml version="1.0" encoding="utf-8"?><service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/></service>
Der Großteil dieser Definition ist eigentlich Metadaten. Sie möchten den Kurznamen für den Dienst innerhalb der <short>
-Tags ändern. Dies ist ein von Menschen lesbarer Name für Ihren Dienst. Sie sollten auch eine Beschreibung hinzufügen, damit Sie weitere Informationen erhalten, wenn Sie den Dienst jemals überprüfen müssen. Die einzige Konfiguration, die Sie vornehmen müssen, die sich tatsächlich auf die Funktionalität des Dienstes auswirkt, ist wahrscheinlich die Portdefinition, in der Sie die Portnummer und das Protokoll identifizieren, die Sie öffnen möchten. Dies kann mehrfach angegeben werden.
Stellen Sie sich für unseren „Beispiel“ -Dienst vor, dass wir Port 7777 für TCP und 8888 für UDP öffnen müssen. Durch Aufrufen des Einfügemodus durch Drücken von i
können wir die vorhandene Definition folgendermaßen ändern:
<?xml version="1.0" encoding="utf-8"?><service> <short>Example Service</short> <description>This is just an example service. It probably shouldn't be used on a real system.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/></service>
Drücken Sie ESC
und geben Sie dann :x
ein, um die Datei zu speichern und zu schließen.
Laden Sie Ihre Firewall neu, um Zugriff auf Ihren neuen Dienst zu erhalten:
- sudo firewall-cmd --reload
Sie können sehen, dass es jetzt in der Liste der verfügbaren Dienste enthalten ist:
- firewall-cmd --get-services
outputRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch example freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Sie können diesen Dienst jetzt wie gewohnt in Ihren Zonen verwenden.
Erstellen eigener Zonen
Obwohl die vordefinierten Zonen für die meisten Benutzer wahrscheinlich mehr als ausreichend sind, kann es hilfreich sein, eigene Zonen zu definieren, die ihre Funktion besser beschreiben.
Sie können beispielsweise eine Zone für Ihren Webserver mit dem Namen „publicweb“ erstellen. Möglicherweise möchten Sie jedoch eine andere Zone für den DNS-Dienst konfigurieren, den Sie in Ihrem privaten Netzwerk bereitstellen. Vielleicht möchten Sie dafür eine Zone namens „privateDNS“.
Wenn Sie eine Zone hinzufügen, müssen Sie sie der permanenten Firewall-Konfiguration hinzufügen. Sie können dann neu laden, um die Konfiguration in Ihre laufende Sitzung zu bringen. Zum Beispiel könnten wir die beiden oben diskutierten Zonen erstellen, indem wir Folgendes eingeben:
- sudo firewall-cmd --permanent --new-zone=publicweb
- sudo 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-zones
outputblock 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-zones
outputblock dmz drop external home internal public trusted work
Laden Sie die Firewall neu, um diese neuen Zonen in die aktive Konfiguration aufzunehmen:
- sudo firewall-cmd --reload
- firewall-cmd --get-zones
outputblock dmz drop external home internal privateDNS public publicweb trusted work
Jetzt können Sie damit beginnen, Ihren Zonen die entsprechenden Dienste und Ports zuzuweisen. Es ist normalerweise eine gute Idee, die aktive Instanz anzupassen und diese Änderungen nach dem Testen in die permanente Konfiguration zu übertragen. Für die Zone „publicweb“ können Sie beispielsweise die Dienste SSH, HTTP und HTTPS 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
- sudo firewall-cmd --zone=publicweb --list-all
outputpublicweb target: default icmp-block-inversion: no interfaces: sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Ebenso können wir den DNS-Dienst zu unserer Zone „privateDNS“ hinzufügen:
- sudo firewall-cmd --zone=privateDNS --add-service=dns
- sudo firewall-cmd --zone=privateDNS --list-all
outputprivateDNS interfaces: sources: services: dns ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Wir könnten dann unsere Schnittstellen auf diese neuen Zonen umstellen, um sie zu testen:
- 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 funktionieren, sollten Sie der permanenten Konfiguration dieselben Regeln hinzufügen. Sie können dies tun, indem Sie die Regeln mit dem Flag --permanent
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
Nachdem Sie diese Regeln dauerhaft angewendet haben, können Sie Ihr Netzwerk neu starten und Ihren Firewall-Dienst neu laden:
- sudo systemctl restart network
- sudo systemctl reload firewalld
Überprüfen, ob die richtigen Zonen zugewiesen wurden:
- firewall-cmd --get-active-zones
outputprivateDNS interfaces: eth1publicweb interfaces: eth0
Und überprüfen Sie, ob die entsprechenden Dienste für beide Zonen verfügbar sind:
- sudo firewall-cmd --zone=publicweb --list-services
outputhttp https ssh
- sudo firewall-cmd --zone=privateDNS --list-services
outputdns
Sie haben erfolgreich Ihre eigenen Zonen eingerichtet! Wenn Sie eine dieser Zonen zum Standard für andere Schnittstellen machen möchten, denken Sie daran, dieses Verhalten mit dem Parameter --set-default-zone=
zu konfigurieren:
sudo firewall-cmd --set-default-zone=publicweb
Fazit
Sie sollten jetzt ein ziemlich gutes Verständnis dafür haben, wie Sie den Firewalld-Dienst auf Ihrem CentOS-System für den täglichen Gebrauch verwalten.
Mit dem firewalld-Dienst können Sie wartbare Regeln und Regelsätze konfigurieren, die Ihre Netzwerkumgebung berücksichtigen. Es ermöglicht Ihnen den nahtlosen Übergang zwischen verschiedenen Firewall-Richtlinien durch die Verwendung von Zonen und gibt Administratoren die Möglichkeit, die Portverwaltung in benutzerfreundlichere Service-Definitionen zu abstrahieren. Wenn Sie sich mit diesem System vertraut machen, können Sie die Flexibilität und Leistungsfähigkeit dieses Tools nutzen.