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

So richten Sie eine Firewall mit FirewallD unter CentOS 7 ein

Eine richtig konfigurierte Firewall ist einer der wichtigsten Aspekte der gesamten Systemsicherheit.

FirewallDist eine vollständige Firewall-Lösung, die die iptables-Regeln des Systems verwaltet und eine D-Bus-Schnittstelle für deren Betrieb bereitstellt. Beginnend mit CentOS 7 ersetzt FirewallD iptables als standardmäßiges Firewall-Verwaltungstool.

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Firewall mit FirewallD auf Ihrem CentOS 7-System einrichten und erklären Ihnen die grundlegenden FirewallD-Konzepte.

Voraussetzungen #

Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie mit einem Benutzerkonto mit sudo-Berechtigungen oder mit dem Root-Benutzer bei Ihrem Server angemeldet sind. Die bewährte Methode besteht darin, Verwaltungsbefehle als sudo-Benutzer statt als root auszuführen. Wenn Sie keinen sudo-Benutzer auf Ihrem CentOS-System haben, können Sie einen erstellen, indem Sie diesen Anweisungen folgen.

Grundlegende Firewalld-Konzepte #

FirewallD verwendet die Konzepte von Zonen und Diensten anstelle von iptables-Ketten und -Regeln. Basierend auf den Zonen und Diensten, die Sie konfigurieren, können Sie steuern, welcher Datenverkehr zum und vom System zugelassen oder nicht zugelassen wird.

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

Firewalld-Zonen #

Zonen sind vordefinierte Regelsätze, die angeben, welcher Datenverkehr basierend auf der Vertrauensstufe in den Netzwerken, mit denen Ihr Computer verbunden ist, zugelassen werden soll. 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.

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 bei Neustarts nicht bestehen. Wenn der Firewalld-Dienst 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, müssen Sie den --permanent verwenden Option.

Installieren und Aktivieren von FirewallD #

  1. Firewalld wird standardmäßig auf CentOS 7 installiert, aber wenn es nicht auf Ihrem System installiert ist, können Sie das Paket installieren, indem Sie Folgendes eingeben:

    sudo yum install firewalld
  2. Der Firewalld-Dienst ist standardmäßig deaktiviert. Sie können den Firewall-Status überprüfen mit:

    sudo firewall-cmd --state

    Wenn Sie gerade erst installiert oder noch nie zuvor aktiviert haben, wird der Befehl not running ausgeben . Andernfalls sehen Sie running .

  3. Um den FirewallD-Dienst zu starten und beim Booten zu aktivieren, geben Sie Folgendes ein:

    sudo systemctl start firewalldsudo systemctl enable firewalld

Arbeiten mit Firewalld-Zonen #

Nachdem Sie den FirewallD-Dienst zum ersten Mal aktiviert haben, wird die Datei public Zone ist als Standardzone festgelegt. 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

Standardmäßig wird allen Netzwerkschnittstellen die Standardzone zugewiesen. Um zu überprüfen, welche Zonen von Ihrer/Ihren Netzwerkschnittstelle(n) verwendet werden, geben Sie Folgendes ein:

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

Die obige Ausgabe sagt uns, dass beide Schnittstellen eth0 und eth1 sind der öffentlichen Zone zugeordnet.

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 und als Standard festgelegt ist und sowohl von eth0 verwendet wird und eth1 Schnittstellen. Außerdem sind die Verbindungen zum DHCP-Client und SSH erlaubt.

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 der Zone einer Schnittstelle #

Sie können die Schnittstellenzone einfach ändern, indem Sie --zone verwenden Option in Kombination mit --change-interface Möglichkeit. Der folgende Befehl weist den eth1 zu Schnittstelle zur Arbeitszone:

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.

Um beispielsweise die Standardzone auf home zu ändern, sollten Sie 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

Öffnen eines Ports oder Dienstes #

Mit FirewallD können Sie Datenverkehr für bestimmte Ports basierend auf vordefinierten Regeln, die Dienste genannt werden, zulassen.

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

Wenn Sie den Port 80 nach einem Neustart offen halten möchten, müssen Sie denselben Befehl noch einmal eingeben, diesmal jedoch mit dem --permanent Möglichkeit:

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

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 Möglichkeit:

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

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

Was ist, wenn Sie eine Anwendung wie Plex Media Server ausführen, für die kein geeigneter Dienst verfügbar ist?

In solchen Situationen haben Sie zwei Möglichkeiten. Sie können entweder die entsprechenden Ports öffnen oder einen neuen FirewallD-Dienst definieren.

Zum Beispiel lauscht der Plex Server auf Port 32400 und verwendet TCP, um den Port in der öffentlichen Zone für die aktuelle Sitzung zu öffnen, verwenden Sie den --add-port= Möglichkeit:

sudo firewall-cmd --zone=public --add-port=32400/tcp
Protokolle können entweder tcp sein oder udp .

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

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

Um den Port 32400 beizubehalten nach einem Neustart öffnen, fügen Sie die Regel zu den permanenten Einstellungen hinzu, indem Sie denselben Befehl mit --permanent ausführen Option.

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=32400/tcp

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 wir 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 Service in Ihren Zonen wie jeder andere Service..

Weiterleitungsport mit Firewalld #

Um Datenverkehr von einem Port zu einem anderen Port oder einer anderen Adresse weiterzuleiten, aktivieren Sie zuerst das Masquerading für die gewünschte Zone mit --add-masquerade schalten. Zum Beispiel, um Masquerading für external zu aktivieren Zonentyp:

sudo firewall-cmd --zone=external --add-masquerade
  • Weiterleiten von Datenverkehr von einem Port zu einem anderen auf demselben Server

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
  • Traffic an einen anderen Server 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
  • Verkehr an einen anderen Server an einem anderen Port weiterleiten

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

Wenn Sie die Weiterleitung dauerhaft machen möchten, hängen Sie einfach den --permanent an Option.

Erstellen eines Regelsatzes mit FirewallD #

Im folgenden Beispiel zeigen wir, wie Sie Ihre Firewall konfigurieren, wenn Sie einen Webserver betreiben. Wir gehen davon aus, dass Ihr Server nur eine Schnittstelle eth0 hat , und eingehenden Datenverkehr nur über SSH-, HTTP- und HTTPS-Ports zulassen möchten.

  1. Ändern Sie die Standardzone auf dmz

    Wir werden die dmz (demilitarisierte) Zone verwenden, da sie standardmäßig nur SSH-Verkehr zulässt. Um die Standardzone auf dmz zu ändern und sie dem eth0 zuzuweisen Schnittstelle, führen Sie die folgenden Befehle aus:

    sudo firewall-cmd --set-default-zone=dmzsudo firewall-cmd --zone=dmz --add-interface=eth0
  2. HTTP- und HTTPS-Ports öffnen:

    Um HTTP- und HTTPS-Ports zu öffnen, fügen Sie permanente Dienstregeln zur dmz-Zone hinzu:

    sudo firewall-cmd --permanent --zone=dmz --add-service=httpsudo firewall-cmd --permanent --zone=dmz --add-service=https

    Machen Sie die Änderungen sofort wirksam, indem Sie die Firewall neu laden:

    sudo firewall-cmd --reload
  3. Überprüfen Sie die Änderungen

    Geben Sie Folgendes ein, um die Konfigurationseinstellungen der dmz-Zone zu überprüfen:

    sudo firewall-cmd --zone=dmz --list-all
    dmz (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: ssh http https
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

    Die obige Ausgabe sagt uns, dass dmz die Standardzone ist und auf eth0 angewendet wird Schnittstelle und ssh (22) http (80) und https (443) Ports sind offen.


Cent OS
  1. Richten Sie FirewallD unter CentOS 7 ein

  2. So richten Sie eine Firewall mit iptables unter Ubuntu und CentOS ein

  3. So richten Sie eine Firewall mit UFW unter Ubuntu 16.04 ein

  4. So richten Sie eine Firewall mit Firewalld unter CentOS 8 ein

  5. CentOS / RHEL 7 :Wie öffne ich einen Port in der Firewall mit Firewall-cmd?

So konfigurieren und verwalten Sie die Firewall unter CentOS 8

So richten Sie eine Firewall mit UFW unter Debian 10 ein

So richten Sie eine Firewall mit UFW unter Debian 9 ein

So stoppen und deaktivieren Sie die Firewall unter CentOS 8

So richten Sie eine Firewall mit GUFW unter Linux ein

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter CentOS/RHEL 8 ein