So richten Sie eine Firewall mit FirewallD auf CentOS ein 7

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 oder icmp6-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
output
running

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
output
public

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
output
public 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
output
public (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
output
block 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
output
home 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
output
success
Hinweis

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
output
home 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
output
success

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
output
RH-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

Hinweis

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:

/usr/lib/firewalld/services/ssh .xml
<?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
output
dhcpv6-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
output
success

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
output
dhcpv6-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
output
success

Wir können überprüfen, ob dies mit der Operation --list-ports erfolgreich war:

  • sudo firewall-cmd --zone=public --list-ports
output
5000/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
output
successsuccess5000/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:

/etc/firewalld/services/example.xml
<?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:

/etc/firewalld/services/example.xml
<?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
output
RH-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
output
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-zones
output
block 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
output
block 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
output
publicweb 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
output
privateDNS 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
output
privateDNS 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
output
http https ssh
  • sudo firewall-cmd --zone=privateDNS --list-services
output
dns

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post Cefalu, Italien: Ein vollständiger Leitfaden für die sizilianische Strandstadt
Next post Mystery Dinner Ideen mit Menüpunkten