Linux - Firewall einrichten
Inhaltsverzeichnis:
- Voraussetzungen
- Grundlegende Firewall-Konzepte
- Firewalld-Zonen
- Firewall-Dienste
- Firewall-Laufzeit und permanente Einstellungen
- Installieren und Aktivieren von FirewallD
- Arbeiten mit Firewalld-Zonen
- Ändern der Zone einer Schnittstelle
- Ändern der Standardzone
- Port oder Service öffnen
- Erstellen eines neuen FirewallD-Dienstes
- Weiterleitungsport mit Firewalld
- Erstellen eines Regelsatzes mit FirewallD
- Fazit
Eine ordnungsgemäß konfigurierte Firewall ist einer der wichtigsten Aspekte der Gesamtsystemsicherheit.
FirewallD ist eine vollständige Firewall-Lösung, die die iptables-Regeln des Systems verwaltet und eine D-Bus-Schnittstelle für den Betrieb bereitstellt. Ab CentOS 7 ersetzt FirewallD iptables als Standard-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 Lernprogramm beginnen, stellen Sie sicher, dass Sie mit einem Benutzerkonto mit Sudo-Berechtigungen oder mit dem Root-Benutzer auf Ihrem Server angemeldet sind. Am besten führen Sie administrative Befehle als sudo-Benutzer anstelle von root aus. Wenn Sie keinen sudo-Benutzer auf Ihrem CentOS-System haben, können Sie einen erstellen, indem Sie diese Anweisungen befolgen.
Grundlegende Firewall-Konzepte
FirewallD verwendet anstelle von iptables chain und rules die Konzepte von Zonen und Diensten. Anhand der Zonen und Dienste, die Sie konfigurieren, können Sie steuern, welcher Datenverkehr zum und vom System zugelassen oder nicht zugelassen wird.
FirewallD kann mit dem Befehlszeilenprogramm
firewall-cmd
konfiguriert und verwaltet werden.
Firewalld-Zonen
Zonen sind vordefinierte Regelsätze, die festlegen, welcher Datenverkehr basierend auf der Vertrauensstufe in den Netzwerken, mit denen Ihr Computer verbunden ist, zulässig sein soll. Sie können einer Zone Netzwerkschnittstellen und -quellen zuweisen.
Nachfolgend sind die von FirewallD bereitgestellten Zonen aufgeführt, die nach der Vertrauensstufe der Zone von nicht vertrauenswürdig nach vertrauenswürdig sortiert sind:
- drop: Alle eingehenden Verbindungen werden ohne Benachrichtigung getrennt. Es sind nur ausgehende Verbindungen zulässig. blockieren: Alle eingehenden Verbindungen werden mit einer
icmp-host-prohibited
icmp6-adm-prohibited
fürIPv4
und "icmp6-adm-prohibited
disabled" für IPv6n zurückgewiesen. Es sind nur ausgehende Verbindungen zulässig. public: Zur Verwendung in nicht vertrauenswürdigen öffentlichen Bereichen. Sie vertrauen anderen Computern im Netzwerk nicht, können jedoch ausgewählte eingehende Verbindungen zulassen. external: Zur Verwendung in externen Netzwerken mit aktiviertem NAT-Masquerading, wenn Ihr System als Gateway oder Router fungiert. Nur ausgewählte eingehende Verbindungen sind zulässig. 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 zulässig. dmz: Wird für Computer in Ihrer demilitarisierten Zone verwendet, die nur eingeschränkten Zugriff auf den Rest Ihres Netzwerks haben. Nur ausgewählte eingehende Verbindungen sind zulässig. Arbeit: Wird für Arbeitsmaschinen verwendet. Anderen Computern im Netzwerk wird im Allgemeinen vertraut. Nur ausgewählte eingehende Verbindungen sind zulässig. home: Wird für Heimmaschinen verwendet. Anderen Computern im Netzwerk wird im Allgemeinen vertraut. Nur ausgewählte eingehende Verbindungen sind zulässig. 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 erforderlichen Einstellungen definieren, um eingehenden Datenverkehr für einen bestimmten Dienst zuzulassen.
Firewall-Laufzeit und permanente Einstellungen
Firewalld verwendet zwei separate Konfigurationssätze, die Laufzeit und die permanente Konfiguration.
Die Laufzeitkonfiguration ist die aktuell ausgeführte Konfiguration und bleibt beim Neustart nicht erhalten. Wenn der Firewalld-Dienst gestartet wird, wird die permanente Konfiguration geladen, die zur Laufzeitkonfiguration wird.
Wenn Sie mit dem Dienstprogramm
firewall-cmd
Änderungen an der Firewalld-Konfiguration vornehmen, werden diese Änderungen standardmäßig auf die Laufzeitkonfiguration angewendet. Um die Änderungen dauerhaft zu machen, müssen Sie die Option
--permanent
.
Installieren und Aktivieren von FirewallD
-
Firewalld wird standardmäßig unter CentOS 7 installiert. Wenn Firewalld jedoch nicht auf Ihrem System installiert ist, können Sie das Paket installieren, indem Sie Folgendes eingeben:
sudo yum install firewalld
Der Firewall-Dienst ist standardmäßig deaktiviert. Sie können den Firewall-Status folgendermaßen überprüfen:
sudo firewall-cmd --state
So starten Sie den FirewallD-Dienst und aktivieren ihn beim Booten:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Arbeiten mit Firewalld-Zonen
Nach der erstmaligen Aktivierung des FirewallD-Dienstes wird die
public
Zone als Standardzone festgelegt. Sie können die Standardzone anzeigen, indem Sie Folgendes eingeben:
sudo firewall-cmd --get-default-zone
public
Geben Sie Folgendes ein, um eine Liste aller verfügbaren Zonen zu erhalten:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Standardmäßig wird allen Netzwerkschnittstellen die Standardzone zugewiesen. So überprüfen Sie, welche Zonen von Ihren Netzwerkschnittstellentypen verwendet werden:
sudo firewall-cmd --get-active-zones
public interfaces: eth0 eth1
Die Ausgabe oben sagt uns, dass beide Schnittstellen
eth0
und
eth1
der öffentlichen Zone zugewiesen sind.
Sie können die Zonenkonfigurationseinstellungen folgendermaßen drucken:
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
eth0
dass die öffentliche Zone aktiv und als Standard
eth0
und
eth1
Schnittstellen
eth0
als auch
eth1
verwendet wird. Außerdem sind die mit dem DHCP-Client und SSH verbundenen Verbindungen zulässig.
sudo firewall-cmd --list-all-zones
Der Befehl druckt eine große Liste mit den Einstellungen aller verfügbaren Zonen.
Ändern der Zone einer Schnittstelle
Sie können die Schnittstellenzone einfach ändern, indem
--zone
Option
--zone
in Kombination mit der Option
--change-interface
. Der folgende Befehl weist der
eth1
Schnittstelle
eth1
zu:
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
Verwenden Sie zum
--set-default-zone
Option
--set-default-zone
gefolgt vom Namen der Zone, die
--set-default-zone
möchten.
Um beispielsweise die Standardzone auf "Zuhause" zu ändern, müssen 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
Port oder Service öffnen
Mit FirewallD können Sie Datenverkehr für bestimmte Ports zulassen, basierend auf vordefinierten Regeln, die als Dienste bezeichnet werden.
So rufen Sie eine Liste aller standardmäßig verfügbaren Dienste ab:
sudo firewall-cmd --get-services
Weitere Informationen zu den einzelnen Diensten finden Sie, indem Sie die zugehörige XML-Datei im Verzeichnis
/usr/lib/firewalld/services
öffnen. Der HTTP-Dienst ist beispielsweise folgendermaßen definiert:
WWW (HTTP) 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.
WWW (HTTP) 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.
Um eingehenden HTTP-Verkehr (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
--zone
können Sie die Option
--zone
.
Um zu überprüfen, ob der Dienst erfolgreich hinzugefügt wurde, verwenden Sie die Option
--list-services
:
sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client
sudo firewall-cmd --permanent --zone=public --add-service=http
Verwenden Sie
--list-services
zusammen mit der Option
--permanent
, um Ihre Änderungen zu überprüfen:
sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client
Die Syntax zum Entfernen eines Dienstes ist dieselbe wie beim Hinzufügen eines Dienstes. Verwenden
--remove-service
einfach
--remove-service
anstelle der Option
--add-service
:
sudo firewall-cmd --zone=public --remove-service=http --permanent
Mit dem obigen Befehl wird der http-Dienst aus der permanenten Konfiguration der öffentlichen Zone entfernt.
Was ist, wenn Sie eine Anwendung wie Plex Media Server ausführen, für die kein entsprechender 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.
Der Plex Server überwacht beispielsweise Port 32400 und verwendet TCP. Verwenden Sie zum Öffnen des Ports in der öffentlichen Zone für die aktuelle Sitzung die Option
--add-port=
:
sudo firewall-cmd --zone=public --add-port=32400/tcp
Protokolle können entweder
tcp
oder
udp
.
Um zu überprüfen, ob der Port erfolgreich hinzugefügt wurde, verwenden Sie die Option
--list-ports
:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
Um den Port
32400
nach einem Neustart offen zu halten, fügen Sie die Regel zu den permanenten Einstellungen hinzu, indem Sie denselben Befehl mit der Option
--permanent
.
Die Syntax zum Entfernen eines Ports ist dieselbe wie beim Hinzufügen eines Ports. Verwenden
--remove-port
einfach
--remove-port
anstelle der Option
--add-port
.
sudo firewall-cmd --zone=public --remove-port=32400/tcp
Erstellen eines neuen FirewallD-Dienstes
Wie bereits erwähnt, werden die Standarddienste im Verzeichnis
/usr/lib/firewalld/services
gespeichert. Am einfachsten können Sie einen neuen Dienst erstellen, indem Sie eine vorhandene Dienstdatei in das Verzeichnis
/etc/firewalld/services
kopieren, in dem vom Benutzer erstellte Dienste gespeichert sind, und die Dateieinstellungen ändern.
Um beispielsweise eine Service-Definition für den Plex Media Server zu erstellen, können Sie die SSH-Service-Datei verwenden:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
Öffnen Sie die neu erstellte Datei
plexmediaserver.xml
und ändern Sie den Kurznamen und die Beschreibung für den Dienst im
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.
plexmediaserver 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.
plexmediaserver 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.
Speichern Sie die Datei und laden Sie den FirewallD-Dienst neu:
sudo firewall-cmd --reload
Sie können den
plexmediaserver
Dienst jetzt in Ihren Zonen wie jeden anderen Dienst verwenden.
Weiterleitungsport mit Firewalld
Um Datenverkehr von einem Port zu einem anderen Port oder einer anderen Adresse weiterzuleiten, aktivieren Sie zuerst die Maskierung für die gewünschte Zone mit dem Schalter
--add-masquerade
. So aktivieren Sie beispielsweise das Maskieren für den Typ der
external
Zone:
sudo firewall-cmd --zone=external --add-masquerade
- Leiten Sie Datenverkehr von einem Port zu einem anderen auf demselben Server weiter
Im folgenden Beispiel leiten wir den Datenverkehr von Port
80
an Port
8080
auf demselben Server weiter:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
- Datenverkehr an einen anderen Server weiterleiten
Im folgenden Beispiel
10.10.10.2
wir den Datenverkehr von Port
80
an Port
80
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
- Leiten Sie den Datenverkehr an einen anderen Server an einem anderen Port weiter
Im folgenden Beispiel
10.10.10.2
wir den Datenverkehr von Port
80
an Port
8080
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
Erstellen eines Regelsatzes mit FirewallD
Im folgenden Beispiel wird gezeigt, wie Sie Ihre Firewall konfigurieren, wenn Sie einen Webserver ausgeführt haben. Wir gehen davon aus, dass Ihr Server nur eine Schnittstelle
eth0
hat und Sie eingehenden Datenverkehr nur über SSH-, HTTP- und HTTPS-Ports zulassen möchten.
-
Ändern Sie die Standardzone in dmz
Wir werden die dmz-Zone (demilitarisiert) verwenden, da standardmäßig nur SSH-Verkehr zugelassen wird. Führen Sie die folgenden Befehle aus, um die Standardzone in dmz zu ändern und der
eth0
Schnittstelle zuzuweisen:sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
Öffnen Sie HTTP- und
Um HTTP- und HTTPS-Ports zu öffnen, fügen Sie der dmz-Zone permanente Dienstregeln hinzu:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
Machen Sie die Änderungen sofort wirksam, indem Sie die Firewall neu laden:
sudo firewall-cmd --reload
Überprüfen Sie die Änderungen
So überprüfen Sie die Konfigurationseinstellungen für die DMZ-Zone:
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:
Aus der obigen Ausgabe geht hervor, dass dmz die Standardzone ist, auf die
eth0
Schnittstelle angewendet wird und dieeth0
ssh (22) http (80) und https (443) geöffnet sind.
Fazit
Sie haben gelernt, wie Sie den FirewallD-Dienst auf Ihrem CentOS-System konfigurieren und verwalten.
Stellen Sie sicher, dass alle eingehenden Verbindungen zugelassen sind, die für den ordnungsgemäßen Betrieb Ihres Systems erforderlich sind, und begrenzen Sie alle unnötigen Verbindungen.
Firewall Firewall Iptables Centos SicherheitSo richten Sie SSH-Tunneling ein, um eine Firewall zu umgehen
Eine Firewall ist eine gute Sache, aber wenn sie Sie davon abhält, etwas zu tun, ist SSH-Tunneling eine gute Option, die Sie erkunden können.
So richten Sie eine Firewall mit ufw unter Debian 9 ein
UFW (Uncomplicated Firewall) ist ein benutzerfreundliches Front-End für die Verwaltung von iptables-Firewall-Regeln. Das Hauptziel besteht darin, die Verwaltung von iptables zu vereinfachen oder, wie der Name schon sagt, unkompliziert zu gestalten. In diesem Tutorial zeigen wir Ihnen, wie Sie eine Firewall mit UFW unter Debian 9 einrichten.
So richten Sie eine Firewall mit ufw unter Ubuntu ein 18.04
Standardmäßig wird Ubuntu mit einem Firewall-Konfigurationstool namens UFW (Uncomplicated Firewall) ausgeliefert. UFW ist ein benutzerfreundliches Front-End für die Verwaltung von iptables-Firewall-Regeln. Das Hauptziel besteht darin, die Verwaltung von iptables zu vereinfachen oder, wie der Name schon sagt, unkompliziert zu gestalten.