GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So konfigurieren und verwalten Sie die Firewall unter CentOS 8

Eine Firewall ist eine Methode zum Überwachen und Filtern des eingehenden und ausgehenden Netzwerkverkehrs. Es funktioniert durch die Definition einer Reihe von Sicherheitsregeln, die bestimmen, ob bestimmter Datenverkehr zugelassen oder blockiert werden soll. Eine richtig konfigurierte Firewall ist einer der wichtigsten Aspekte der gesamten Systemsicherheit.

CentOS 8 wird mit einem Firewall-Daemon namens firewalld ausgeliefert. Es ist eine Komplettlösung mit einer D-Bus-Schnittstelle, mit der Sie die Firewall des Systems dynamisch verwalten können.

In diesem Tutorial sprechen wir darüber, wie die Firewall unter CentOS 8 konfiguriert und verwaltet wird. Außerdem erklären wir die grundlegenden FirewallD-Konzepte.

Voraussetzungen #

Um den Firewall-Dienst zu konfigurieren, müssen Sie als Root oder Benutzer mit sudo-Berechtigungen angemeldet sein.

Grundlegende Firewalld-Konzepte #

firewalld verwendet die Konzepte von Zonen und Diensten. Basierend auf den von Ihnen konfigurierten Zonen und Diensten können Sie steuern, welcher Datenverkehr zum und vom System zugelassen oder blockiert wird.

Firewalld kann mit firewall-cmd konfiguriert und verwaltet werden Befehlszeilenprogramm.

In CentOS 8 wird iptables durch nftables als Standard-Firewall-Backend für den Firewalld-Daemon ersetzt.

Firewalld-Zonen #

Zonen sind vordefinierte Regelsätze, die die Vertrauensstufe der Netzwerke angeben, mit denen Ihr Computer verbunden ist. Sie können einer Zone Netzwerkschnittstellen und -quellen zuweisen.

Unten sind die von FirewallD bereitgestellten Zonen, sortiert nach der Vertrauensstufe der Zone von nicht vertrauenswürdig bis vertrauenswürdig:

  • fallen :Alle eingehenden Verbindungen werden ohne Benachrichtigung getrennt. Nur ausgehende Verbindungen sind erlaubt.
  • blockieren :Alle eingehenden Verbindungen werden mit einem icmp-host-prohibited abgewiesen Nachricht für IPv4 und icmp6-adm-prohibited für IPv6n. Nur ausgehende Verbindungen sind erlaubt.
  • öffentlich :Zur Verwendung in nicht vertrauenswürdigen öffentlichen Bereichen. Sie vertrauen anderen Computern im Netzwerk nicht, aber Sie können ausgewählte eingehende Verbindungen zulassen.
  • extern :Zur Verwendung in externen Netzwerken mit aktiviertem NAT-Masquerading, wenn Ihr System als Gateway oder Router fungiert. Nur ausgewählte eingehende Verbindungen sind erlaubt.
  • intern :Zur Verwendung in internen Netzwerken, wenn Ihr System als Gateway oder Router fungiert. Anderen Systemen im Netzwerk wird im Allgemeinen vertraut. Nur ausgewählte eingehende Verbindungen sind erlaubt.
  • dmz :Wird für Computer in Ihrer entmilitarisierten Zone verwendet, die eingeschränkten Zugriff auf den Rest Ihres Netzwerks haben. Nur ausgewählte eingehende Verbindungen sind erlaubt.
  • arbeiten :Wird für Arbeitsmaschinen verwendet. Anderen Computern im Netzwerk wird im Allgemeinen vertraut. Nur ausgewählte eingehende Verbindungen sind erlaubt.
  • Zuhause :Wird für Heimmaschinen verwendet. Anderen Computern im Netzwerk wird im Allgemeinen vertraut. Nur ausgewählte eingehende Verbindungen sind erlaubt.
  • vertrauenswürdig :Alle Netzwerkverbindungen werden akzeptiert. Vertrauen Sie allen Computern im Netzwerk.

Firewall-Dienste #

Firewalld-Dienste sind vordefinierte Regeln, die innerhalb einer Zone gelten und die notwendigen Einstellungen definieren, um eingehenden Datenverkehr für einen bestimmten Dienst zuzulassen. Mit den Diensten können Sie problemlos mehrere Aufgaben in einem einzigen Schritt ausführen.

Beispielsweise kann der Dienst Definitionen zum Öffnen von Ports, Weiterleiten von Datenverkehr und mehr enthalten.

Firewalld-Laufzeit und permanente Einstellungen #

Firewalld verwendet zwei getrennte Konfigurationssätze, Laufzeit und permanente Konfiguration.

Die Laufzeitkonfiguration ist die tatsächlich ausgeführte Konfiguration und bleibt beim Neustart nicht erhalten. Wenn der Firewalld-Daemon startet, lädt er die permanente Konfiguration, die zur Laufzeitkonfiguration wird.

Standardmäßig, wenn Sie Änderungen an der Firewalld-Konfiguration mit firewall-cmd vornehmen werden die Änderungen auf die Laufzeitkonfiguration angewendet. Um die Änderungen dauerhaft zu machen, hängen Sie --permanent an Option zum Befehl.

Um die Änderungen in beiden Konfigurationssätzen anzuwenden, können Sie eine der beiden folgenden Methoden verwenden:

  1. Ändern Sie die Laufzeitkonfiguration und machen Sie sie dauerhaft:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. Ändern Sie die permanente Konfiguration und laden Sie den Firewalld-Daemon neu:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

FirewallD aktivieren #

Unter CentOS 8 ist firewalld standardmäßig installiert und aktiviert. Wenn er aus irgendeinem Grund nicht auf Ihrem System installiert ist, können Sie den Daemon installieren und starten, indem Sie Folgendes eingeben:

sudo dnf install firewalldsudo systemctl enable firewalld --now

Sie können den Status des Firewall-Dienstes überprüfen mit:

sudo firewall-cmd --state

Wenn die Firewall aktiviert ist, sollte der Befehl running ausgeben . Andernfalls wird not running angezeigt .

Firewalld-Zonen #

Wenn Sie es nicht geändert haben, ist die Standardzone auf public eingestellt , und alle Netzwerkschnittstellen werden dieser Zone zugewiesen.

Die Standardzone ist diejenige, die für alles verwendet wird, was nicht ausdrücklich einer anderen Zone zugewiesen ist.

Sie können die Standardzone anzeigen, indem Sie Folgendes eingeben:

sudo firewall-cmd --get-default-zone
public

Um eine Liste aller verfügbaren Zonen zu erhalten, geben Sie Folgendes ein:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

So sehen Sie die aktiven Zonen und die ihnen zugewiesenen Netzwerkschnittstellen:

sudo firewall-cmd --get-active-zones

Die folgende Ausgabe zeigt, dass die Schnittstellen eth0 und eth1 sind dem public zugeordnet Bereich:

public
  interfaces: eth0 eth1

Sie können die Zonenkonfigurationseinstellungen ausdrucken mit:

sudo firewall-cmd --zone=public --list-all
public (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:

Aus der obigen Ausgabe können wir sehen, dass die öffentliche Zone aktiv ist und das Standardziel verwendet, das REJECT ist . Die Ausgabe zeigt auch, dass die Zone von eth0 verwendet wird und eth1 Schnittstellen und ermöglicht DHCP-Client- und SSH-Verkehr.

Wenn Sie die Konfigurationen aller verfügbaren Zonen überprüfen möchten, geben Sie Folgendes ein:

sudo firewall-cmd --list-all-zones

Der Befehl druckt eine riesige Liste mit den Einstellungen aller verfügbaren Zonen.

Ändern des Zonenziels #

Das Ziel definiert das Standardverhalten der Zone für den eingehenden Datenverkehr, der nicht angegeben ist. Es kann auf eine der folgenden Optionen eingestellt werden:default , ACCEPT , REJECT , und DROP .

Um das Ziel der Zone festzulegen, geben Sie die Zone mit --zone an Option und das Ziel mit --set-target Option.

Zum Beispiel, um den public zu ändern das Ziel der Zone auf DROP Sie würden Folgendes ausführen:

sudo firewall-cmd --zone=public --set-target=DROP

Eine Schnittstelle einer anderen Zone zuweisen #

Sie können spezifische Regelwerke für verschiedene Zonen erstellen und diesen unterschiedliche Schnittstellen zuweisen. Dies ist besonders nützlich, wenn Sie mehrere Schnittstellen auf Ihrem Computer haben.

Um eine Schnittstelle einer anderen Zone zuzuweisen, geben Sie die Zone mit --zone an Option und die Schnittstelle mit dem --change-interface Option.

Beispielsweise weist der folgende Befehl den eth1 zu Schnittstelle zum work Bereich:

sudo firewall-cmd --zone=work --change-interface=eth1

Überprüfen Sie die Änderungen, indem Sie Folgendes eingeben:

sudo firewall-cmd --get-active-zones
work
  interfaces: eth1
public
  interfaces: eth0

Ändern der Standardzone #

Um die Standardzone zu ändern, verwenden Sie --set-default-zone Option gefolgt vom Namen der Zone, die Sie als Standard festlegen möchten.

Zum Beispiel, um die Standardzone auf home zu ändern Sie würden den folgenden Befehl ausführen:

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

Überprüfen Sie die Änderungen mit:

sudo firewall-cmd --get-default-zone
home

Neue Zonen erstellen #

Mit Firewalld können Sie auch Ihre eigenen Zonen erstellen. Dies ist praktisch, wenn Sie anwendungsspezifische Regeln erstellen möchten.

Im folgenden Beispiel erstellen wir eine neue Zone namens memcached , öffnen Sie den Port 11211 und erlauben Sie den Zugriff nur von 192.168.100.30 IP-Adresse:

  1. Erstellen Sie die Zone:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Fügen Sie die Regeln zur Zone hinzu:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. Laden Sie den Firewalld-Daemon neu, um die Änderungen zu aktivieren:

    sudo firewall-cmd --reload

Firewalld-Dienste #

Mit firewalld können Sie Datenverkehr für bestimmte Ports und/oder Quellen zulassen, basierend auf vordefinierten Regeln, die Dienste genannt werden.

Um eine Liste aller standardmäßig verfügbaren Dienste zu erhalten, geben Sie Folgendes ein:

sudo firewall-cmd --get-services

Weitere Informationen zu jedem Dienst finden Sie, indem Sie die zugehörige XML-Datei in /usr/lib/firewalld/services öffnen Verzeichnis. Der HTTP-Dienst ist beispielsweise wie folgt definiert:

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

Um eingehenden HTTP-Datenverkehr (Port 80) für Schnittstellen in der öffentlichen Zone nur für die aktuelle Sitzung (Laufzeitkonfiguration) zuzulassen, geben Sie Folgendes ein:

sudo firewall-cmd --zone=public --add-service=http
Wenn Sie die Standardzone ändern, können Sie --zone weglassen Möglichkeit.

Um zu überprüfen, ob der Dienst erfolgreich hinzugefügt wurde, verwenden Sie --list-services Möglichkeit:

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

Um den Port 80 nach einem Neustart offen zu halten, führen Sie den gleichen Befehl noch einmal mit dem --permanent aus Option, oder führen Sie Folgendes aus:

sudo firewall-cmd --runtime-to-permanent

Verwenden Sie die --list-services zusammen mit dem --permanent Option zum Überprüfen Ihrer Änderungen:

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

Die Syntax zum Entfernen eines Dienstes ist dieselbe wie beim Hinzufügen eines Dienstes. Verwenden Sie einfach --remove-service anstelle von --add-service Flagge:

sudo firewall-cmd --zone=public --remove-service=http --permanent

Der obige Befehl entfernt den http Dienst aus der permanenten Konfiguration der öffentlichen Zone.

Erstellen eines neuen FirewallD-Dienstes #

Wie bereits erwähnt, sind die Standarddienste in /usr/lib/firewalld/services gespeichert Verzeichnis. Der einfachste Weg, einen neuen Dienst zu erstellen, besteht darin, eine vorhandene Dienstdatei nach /etc/firewalld/services zu kopieren Verzeichnis, das der Speicherort für vom Benutzer erstellte Dienste ist, und die Dateieinstellungen ändern.

Um beispielsweise eine Dienstdefinition für den Plex Media Server zu erstellen, können Sie die SSH-Dienstdatei verwenden:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Öffnen Sie die neu erstellte plexmediaserver.xml Datei und ändern Sie den Kurznamen und die Beschreibung für den Dienst innerhalb von <short> und <description> Stichworte. Das wichtigste Tag, das Sie ändern müssen, ist der port -Tag, das die Portnummer und das Protokoll definiert, die Sie öffnen möchten.

Im folgenden Beispiel öffnen wir die Ports 1900 UDP und 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description>
<port protocol="udp" port="1900"/>
<port protocol="tcp" port="32400"/>
</service>

Speichern Sie die Datei und laden Sie den FirewallD-Dienst neu:

sudo firewall-cmd --reload

Sie können jetzt den plexmediaserver verwenden Dienst in Ihren Zonen wie jeder andere Dienst.

Öffne Ports und Quell-IPs #

Mit Firewalld können Sie auch den gesamten Datenverkehr von einer vertrauenswürdigen IP-Adresse oder einem bestimmten Port schnell aktivieren, ohne eine Dienstdefinition zu erstellen.

Öffnen einer Quell-IP #

Um den gesamten eingehenden Datenverkehr von einer bestimmten IP-Adresse (oder einem Bereich) zuzulassen, geben Sie die Zone mit --zone an Option und die Quell-IP mit --add-source Option.

Zum Beispiel, um den gesamten eingehenden Datenverkehr von 192.168.1.10 im public zuzulassen Zone, führe aus:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

Machen Sie die neue Regel dauerhaft:

sudo firewall-cmd --runtime-to-permanent

Überprüfen Sie die Änderungen mit dem folgenden Befehl:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

Die Syntax zum Entfernen einer Quell-IP ist die gleiche wie beim Hinzufügen einer. Verwenden Sie einfach --remove-source anstelle von --add-source Möglichkeit:

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

Öffnen eines Quellports #

Um den gesamten eingehenden Datenverkehr an einem bestimmten Port zuzulassen, geben Sie die Zone mit --zone an Option und den Port und das Protokoll mit --add-port Option.

Zum Beispiel, um Port 8080 zu öffnen in der öffentlichen Zone für die aktuelle Sitzung, die Sie ausgeführt haben:

sudo firewall-cmd --zone=public --add-port=8080/tcp

Das Protokoll kann entweder tcp sein , udp , sctp , oder dccp .

Überprüfen Sie die Änderungen:

sudo firewall-cmd --zone=public --list-ports
8080

Um den Port nach einem Neustart offen zu halten, fügen Sie die Regel zu den permanenten Einstellungen hinzu, indem Sie denselben Befehl mit --permanent ausführen Flag oder durch Ausführen von:

sudo firewall-cmd --runtime-to-permanent

Die Syntax zum Entfernen eines Ports ist dieselbe wie beim Hinzufügen eines Ports. Verwenden Sie einfach --remove-port anstelle von --add-port Option.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Weiterleitungsports #

Um Datenverkehr von einem Port zu einem anderen Port weiterzuleiten, aktivieren Sie zuerst das Masquerading für die gewünschte Zone mit --add-masquerade Möglichkeit. Zum Beispiel, um Masquerading für external zu aktivieren geben Sie Folgendes ein:

sudo firewall-cmd --zone=external --add-masquerade

Weiterleiten von Datenverkehr von einem Port zu einem anderen auf der IP-Adresse #

Im folgenden Beispiel leiten wir den Datenverkehr von Port 80 weiter um 8080 zu portieren auf demselben Server:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Verkehr an eine andere IP-Adresse weiterleiten #

Im folgenden Beispiel leiten wir den Datenverkehr von Port 80 weiter um 80 zu portieren auf einem Server mit IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

Weiterleiten von Datenverkehr an einen anderen Server an einem anderen Port #

Im folgenden Beispiel leiten wir den Datenverkehr von Port 80 weiter um 8080 zu portieren auf einem Server mit IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Um die Weiterleitungsregel dauerhaft zu machen, verwenden Sie:

sudo firewall-cmd --runtime-to-permanent

Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. So aktivieren und verwenden Sie firewalld unter CentOS 7

  3. So richten Sie eine Firewall mit FirewallD unter CentOS 7 ein

  4. So konfigurieren Sie die Firewall unter CentOS 7

  5. Wie installiere und konfiguriere ich den HAProxy unter CentOS?

So installieren und konfigurieren Sie CSF (Config Server Firewall) unter CentOS 7

So stoppen und deaktivieren Sie die Firewall unter CentOS 8

So installieren und konfigurieren Sie Nagios 4.0.7 unter CentOS 7

So installieren und konfigurieren Sie ISPConfig CP unter CentOS 7

So installieren und konfigurieren Sie ownCloud auf CentOS 7

So konfigurieren Sie FirewallD in RHEL, CentOS und Fedora