Einrichten einer Firewall mit FirewallD unter CentOS 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 Paketfiltersystem iptables fungiert. In diesem Handbuch erfahren Sie, wie Sie eine Firewall für Ihren Server einrichten und wie Sie die Firewall mit dem Verwaltungstoolfirewall-cmdverwalten (wenn Sieiptables lieber mit CentOS verwenden möchten, folgen Sie den Anweisungen this guide).

[.note] #Note: Es besteht die Möglichkeit, dass Sie mit einer neueren Version von firewalld arbeiten, als zum Zeitpunkt dieses Schreibens verfügbar war, oder dass Ihr Server geringfügig anders eingerichtet wurde als der durchgehend verwendete Beispielserver diese Anleitung. 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 uns mit der tatsächlichen Verwendung des Dienstprogrammsfirewall-cmdzum Verwalten Ihrer Firewall-Konfiguration befassen, sollten wir uns mit einigen grundlegenden Konzepten vertraut machen, die das Tool einführt.

Zonen

Derfirewalld-Daemon verwaltet Regelgruppen mithilfe von Entitäten, die als "Zonen" bezeichnet werden. Zonen sind im Grunde genommen Regelsätze, die festlegen, welcher Datenverkehr zulässig sein soll, abhängig von der Vertrauensstufe, die Sie in die Netzwerke haben, mit denen Ihr Computer verbunden ist. Netzwerkschnittstellen wird eine Zone zugewiesen, um das Verhalten der Firewall festzulegen.

Für Computer, die möglicherweise häufig zwischen Netzwerken wechseln (z. B. Laptops), bietet diese Art der Flexibilität eine gute Methode zum Ändern Ihrer Regeln in Abhängigkeit von Ihrer Umgebung. Möglicherweise gelten strenge Regeln, die den größten Teil des Datenverkehrs in einem öffentlichen WLAN-Netzwerk verbieten, während Sie bei einer Verbindung mit Ihrem Heimnetzwerk lockerere Einschränkungen zulassen. Für einen Server sind diese Zonen nicht so unmittelbar wichtig, da sich die Netzwerkumgebung kaum oder gar nicht ändert.

Unabhängig davon, wie dynamisch Ihre Netzwerkumgebung sein mag, ist es dennoch hilfreich, die allgemeine Idee hinter jeder der vordefinierten Zonen fürfirewalld zu kennen. In der Reihenfolge vonleast trusted bismost trusted sind die vordefinierten Zonen innerhalb vonfirewalld:

  • drop: Die niedrigste Vertrauensstufe. Alle eingehenden Verbindungen werden ohne Antwort getrennt und es sind nur ausgehende Verbindungen möglich.

  • block: Ähnlich wie oben, aber anstatt einfach Verbindungen zu trennen, werden eingehende Anforderungen mit einericmp-host-prohibited- odericmp6-adm-prohibited-Nachricht abgelehnt.

  • public: Repräsentiert öffentliche, nicht vertrauenswürdige Netzwerke. Sie vertrauen anderen Computern nicht, gestatten jedoch möglicherweise von Fall zu Fall ausgewählte eingehende Verbindungen.

  • external: Externe Netzwerke für den Fall, dass Sie die Firewall als Gateway verwenden. Es ist für NAT-Masquerading konfiguriert, sodass Ihr internes Netzwerk zwar privat, aber erreichbar bleibt.

  • 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 in einer DMZ verwendet (isolierte Computer, die keinen Zugriff auf den Rest Ihres Netzwerks haben). Es sind nur bestimmte eingehende Verbindungen zulässig.

  • work: Wird für Arbeitsmaschinen verwendet. Vertrauen Sie den meisten Computern im Netzwerk. Einige weitere Dienste sind möglicherweise zulässig.

  • home: Eine häusliche Umgebung. Im Allgemeinen bedeutet dies, dass Sie den meisten anderen Computern vertrauen und dass ein paar weitere Dienste akzeptiert werden.

  • trusted: Vertrauen Sie allen Computern 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. Anschließend weisen wir unsere Netzwerkschnittstellen den Zonen zu, die am besten geeignet sind.

Regelbeständigkeit

In der Firewall können Regeln entweder als permanent oder als unmittelbar 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 Start werden die alten Regeln zurückgesetzt.

Die meistenfirewall-cmd-Operationen können das--permanent-Flag verwenden, um anzuzeigen, dass die nicht kurzlebige Firewall als Ziel ausgewählt werden soll. Dies wirkt sich auf den Regelsatz aus, der beim Booten neu geladen wird. Durch diese Trennung können Sie Regeln in Ihrer aktiven Firewall-Instanz testen und bei Problemen neu laden. Sie können auch das--permanent-Flag verwenden, um im Laufe der Zeit einen ganzen Satz von Regeln zu erstellen, die alle auf einmal angewendet werden, wenn der Befehl zum erneuten Laden 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. Möglicherweise müssen Sie die Firewall jedoch selbst installieren:

sudo yum install firewalld

Nach der Installation vonfirewalld können Sie den Dienst aktivieren und Ihren Server neu starten. Beachten Sie, dass durch das Aktivieren von Firewalld der Dienst beim Booten gestartet wird. Es wird empfohlen, Ihre Firewall-Regeln zu erstellen und diese 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 gestartet werden, Ihre Netzwerkschnittstellen sollten in die von Ihnen konfigurierten Zonen gestellt werden (oder auf die konfigurierte Standardzone zurückgreifen), und alle Regeln, die mit der / den Zone (n) verknüpft sind, werden auf die zugeordneten angewendet Schnittstellen.

Wir können überprüfen, ob der Dienst ausgeführt wird und erreichbar ist, indem wir Folgendes eingeben:

sudo firewall-cmd --state
outputrunning

Dies zeigt an, dass unsere Firewall mit der Standardkonfiguration läuft.

Machen Sie sich mit den aktuellen Firewall-Regeln vertraut

Bevor wir Änderungen vornehmen, sollten wir uns mit der Standardumgebung und den vom Dämon bereitgestellten Regeln vertraut machen.

Erkunden der Standardeinstellungen

Wir können sehen, welche Zone derzeit als Standardzone ausgewählt ist, indem wir Folgendes eingeben:

firewall-cmd --get-default-zone
outputpublic

Da wirfirewalld keine Befehle gegeben haben, die von der Standardzone abweichen sollen, 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 steuert) den Verkehr für unsere Schnittstellen). Wir können das überprüfen, indem wir Folgendes eingeben:

firewall-cmd --get-active-zones
outputpublic
  interfaces: eth0 eth1

Hier sehen wir, dass unser Beispielserver zwei Netzwerkschnittstellen hat, die von der Firewall gesteuert werden (eth0 undeth1). 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:

An der Ausgabe können wir erkennen, dass diese Zone sowohl die Standardzone als auch die aktive Zone ist und dass die Schnittstelleneth0 undeth1 dieser Zone zugeordnet sind (all dies wussten wir bereits aus unseren vorherigen Anfragen). Wir können jedoch auch feststellen, dass diese Zone die normalen Vorgänge für einen DHCP-Client (für die Zuweisung von IP-Adressen) und für SSH (für die Remoteverwaltung) zulässt.

Erkundung alternativer Zonen

Jetzt haben wir eine gute Vorstellung von der Konfiguration für die Standardzone und die aktive Zone. Wir können uns auch über andere Zonen informieren.

Geben Sie Folgendes ein, um eine Liste der verfügbaren Zonen zu erhalten:

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-zonesausgeben. Wahrscheinlich möchten Sie die Ausgabe zur einfacheren Anzeige in einen Pager leiten:

sudo firewall-cmd --list-all-zones | less

Auswählen von Zonen für Ihre Schnittstellen

Sofern Sie Ihre Netzwerkschnittstellen nicht anders konfiguriert haben, wird jede Schnittstelle beim Starten der Firewall in die Standardzone versetzt.

Ändern der Zone einer Schnittstelle

Sie können eine Schnittstelle zwischen Zonen während einer Sitzung wechseln, indem Sie den Parameter--zone= in Kombination mit dem Parameter--change-interface= verwenden. Wie bei allen Befehlen, die die Firewall ändern, müssen Siesudo verwenden.

Zum Beispiel können wir dieeth0-Schnittstelle in die "Home" -Zone überführen, indem wir Folgendes eingeben:

sudo firewall-cmd --zone=home --change-interface=eth0
outputsuccess

Note

[.note] # Wenn Sie eine Schnittstelle in eine neue Zone überführen, beachten Sie, dass Sie wahrscheinlich die Dienste ändern, die betriebsbereit sind. Zum Beispiel bewegen wir uns hier in die „Heimatzone“, in der SSH verfügbar ist. Dies bedeutet, dass unsere Verbindung nicht unterbrochen werden darf. In einigen anderen Zonen ist SSH standardmäßig nicht aktiviert. Wenn Ihre Verbindung während der Verwendung einer dieser Zonen unterbrochen wird, können Sie sich möglicherweise nicht erneut 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: eth0
public
  interfaces: eth1

Anpassen der Standardzone

Wenn alle Ihre Schnittstellen am besten von einer einzigen Zone verwaltet werden können, ist es wahrscheinlich einfacher, 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 werden alle Schnittstellen, die auf den Standard zurückgesetzt wurden, sofort in die neue Zone geändert:

sudo firewall-cmd --set-default-zone=home
outputsuccess

Regeln für Ihre Anwendungen festlegen

Die grundlegende Methode zum Definieren von Firewall-Ausnahmen für die Dienste, die Sie bereitstellen möchten, ist einfach. Wir werden hier die Grundidee durchgehen.

Hinzufügen eines Dienstes zu Ihren Zonen

Die einfachste Methode besteht darin, die Dienste oder Ports, die Sie benötigen, zu den von Ihnen verwendeten Zonen hinzuzufügen. Auch hier können Sie mit der Option--get-serviceseine 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

Note

[.Hinweis]##

Weitere Informationen zu jedem dieser Dienste erhalten Sie, indem Sie die zugehörige.xml-Datei im Verzeichnis/usr/lib/firewalld/services anzeigen. Beispielsweise ist der SSH-Dienst folgendermaßen definiert:

/usr/lib/firewalld/services/ssh.xml



  SSH
  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.
  
 +
You can enable a service for a zone using the `+--add-service=+` parameter. The operation will target the default zone or whatever zone is specified by the `+--zone=+` parameter. By default, this will only adjust the current firewall session. You can adjust the permanent firewall configuration by including the `+--permanent+` flag.

Wenn wir zum Beispiel einen Webserver betreiben, der herkömmlichen HTTP-Verkehr bedient, können wir diesen Verkehr 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--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

Nachdem Sie getestet haben, dass alles ordnungsgemäß funktioniert, möchten Sie wahrscheinlich die Regeln für die permanente Firewall so ändern, dass Ihr Dienst nach einem Neustart weiterhin verfügbar ist. Wir können unseren "öffentlichen" Zonenwechsel 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 der Operation--list-servicesdas Flag--permanenthinzufügen. Sie müssensudo für alle--permanent-Operationen verwenden:

sudo firewall-cmd --zone=public --permanent --list-services
outputdhcpv6-client http ssh

Ihre "öffentliche" Zone lässt jetzt HTTP-Webdatenverkehr auf Port 80 zu. Wenn Ihr Webserver für die Verwendung von SSL / TLS konfiguriert ist, möchten Sie auch den Diensthttpshinzufügen. Das können wir 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 passiert, wenn kein entsprechender Service verfügbar ist?

Die Firewall-Dienste, die in der Firewall-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

Der einfachste Weg, Unterstützung für Ihre spezifische Anwendung hinzuzufügen, besteht darin, die von ihr verwendeten Ports in den entsprechenden Zonen zu öffnen. Dies ist so einfach wie das Angeben des Ports oder des 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 "öffentlichen" Zone für diese Sitzung hinzufügen. Protokolle können entwedertcp oderudp sein:

sudo firewall-cmd --zone=public --add-port=5000/tcp
outputsuccess

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

sudo firewall-cmd --zone=public --list-ports
output5000/tcp

Sie können auch einen sequenziellen Bereich von Ports angeben, indem Sie den Anfangs- und den Endport in dem Bereich durch einen Bindestrich trennen. Wenn unsere Anwendung beispielsweise die UDP-Ports 4990 bis 4999 verwendet, können Sie diese auf "public" öffnen, indem Sie 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
outputsuccess
success
5000/tcp 4990-4999/udp

Service definieren

Das Öffnen von Ports für Ihre Zonen ist einfach, es kann jedoch schwierig sein, den Überblick darüber zu behalten, wofür die einzelnen Ports 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 erforderlich sind. Um dies zu vermeiden, können Sie einen Service definieren.

Dienste sind einfach Sammlungen von Ports mit einem zugehörigen Namen und einer zugehörigen Beschreibung. Die Verwendung von Diensten ist einfacher zu verwalten als die Verwendung von Ports, erfordert jedoch ein wenig Vorarbeit. Der einfachste Weg, um zu beginnen, besteht darin, 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-Servicedefinition kopieren, um sie für unsere Beispiel-Servicedefinition wie diese zu verwenden. Der Dateiname abzüglich des Suffixes.xmlbestimmt 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



  SSH
  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.
  

Der größte Teil dieser Definition sind Metadaten. Sie möchten den Kurznamen für den Dienst innerhalb der<short>-Tags ändern. Dies ist ein lesbarer Name für Ihren Dienst. Sie sollten auch eine Beschreibung hinzufügen, damit Sie weitere Informationen erhalten, falls Sie den Service jemals prüfen müssen. Die einzige Konfiguration, die Sie vornehmen müssen, um die Funktionalität des Dienstes zu beeinträchtigen, ist wahrscheinlich die Portdefinition, in der Sie die Portnummer und das Protokoll angeben, die Sie öffnen möchten. Dies kann mehrfach angegeben werden.

Stellen Sie sich für unseren Beispieldienst vor, dass wir Port 7777 für TCP und 8888 für UDP öffnen müssen. Durch Aufrufen des INSERT-Modus durch Drücken voni können wir die vorhandene Definition folgendermaßen ändern:

/etc/firewalld/services/example.xml



  Example Service
  This is just an example service.  It probably shouldn't be used on a real system.
  
  

Drücken SieESC 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 nutzen.

Erstellen eigener Zonen

Während 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.

Beispielsweise möchten Sie möglicherweise eine Zone für Ihren Webserver namens "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. Anschließend können Sie die Konfiguration neu laden, um sie in Ihre laufende Sitzung zu übernehmen. Zum Beispiel könnten wir die beiden Zonen erstellen, die wir oben besprochen haben, 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 zu übernehmen:

sudo firewall-cmd --reload
firewall-cmd --get-zones
outputblock dmz drop external home internal privateDNS public publicweb trusted work

Jetzt können Sie beginnen, Ihren Zonen die entsprechenden Dienste und Ports zuzuweisen. In der Regel empfiehlt es sich, die aktive Instanz anzupassen und diese Änderungen nach dem Testen in die permanente Konfiguration zu übertragen. Beispielsweise möchten Sie für die Zone „publicweb“ möglicherweise 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 "privateDNS" -Zone 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 zutreffen, möchten Sie der permanenten Konfiguration dieselben Regeln hinzufügen. Sie können dies tun, indem Sie die Regeln mit dem Flag--permanenterneut 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

Vergewissern Sie sich, dass die richtigen Zonen zugewiesen wurden:

firewall-cmd --get-active-zones
outputprivateDNS
  interfaces: eth1
publicweb
  interfaces: eth0

Stellen Sie sicher, dass 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 eigene Zonen eingerichtet! Wenn Sie eine dieser Zonen als Standard für andere Schnittstellen festlegen möchten, müssen Sie dieses Verhalten mit dem Parameter--set-default-zone=konfigurieren:

sudo firewall-cmd --set-default-zone=publicweb

Fazit

Sie sollten jetzt ein ziemlich gutes Verständnis dafür haben, wie Sie den Firewall-Dienst auf Ihrem CentOS-System für den täglichen Gebrauch verwalten.

Mit dem Firewall-Dienst können Sie wartbare Regeln und Regelsätze konfigurieren, die Ihre Netzwerkumgebung berücksichtigen. Mithilfe von Zonen können Sie nahtlos zwischen verschiedenen Firewall-Richtlinien wechseln, und Administratoren können die Portverwaltung in benutzerfreundlichere Dienstdefinitionen zusammenfassen. Wenn Sie sich mit diesem System vertraut machen, können Sie die Flexibilität und Leistungsfähigkeit dieses Tools nutzen.