Einführung in den Befehl Firewall und Firewall-CMD unter Linux

Einführung in den Befehl Firewall und Firewall-CMD unter Linux

Zielsetzung

Erfahren Sie die grundlegenden Konzepte hinter Firewalld und wie man mit dem Firewall-CMD-Dienstprogramm mit ihm interagiert

Anforderungen

  • Wurzelberechtigungen

Schwierigkeit

EINFACH

Konventionen

  • # - Erfordert, dass gegebene Linux -Befehle entweder mit Root -Berechtigungen ausgeführt werden müssen
    direkt als Stammbenutzer oder durch Verwendung von sudo Befehl
  • $ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Einführung

Seit Version 7 von Rhel und CentOS und Version 18 von Fedora ist Firewall das Standard -Firewall -System. Eine der unverwechselbaren Merkmale ist seine Modularität: Sie arbeitet am Konzept der Verbindung Zonen. In diesem Tutorial erfahren wir mehr darüber und wie man mit dem interagiert Firewall-CMD Dienstprogramm.

Eine Firewall basiert auf Zonen

Firewalld ist eine zonenbasierte Firewall: Jede Zone kann so konfiguriert werden. Zonen können mit einer oder mehreren Netzwerkschnittstellen verbunden werden. Normalerweise verfügt die Firewalld mit einer Reihe von vorkonfigurierten Zonen: Um diese Zonen aufzulisten, und allgemeiner, um mit der Firewall zu interagieren, werden wir die verwenden Firewall-CMD Dienstprogramm. Ich laufe auf einem Fedora 27 -System. Überprüfen Sie, welche Zonen die verfügbaren Zonen sind:

$ Firewall-CMD-GET-Zonen Fedoraserver FedorworkStation Block DMZ DROP EXTERNAL Home interne öffentliche Vertrauensarbeit 


Wie Sie sehen können, gibt der obige Befehl eine Liste aller verfügbaren Schnittstellen in meinem System zurück. Ihr Name ist ziemlich ein Hinweis auf ihren Zweck, aber wir müssen wissen, welche Dienste und Ports über sie verfügbar sind: Die allgemeine Standardregel ist, dass jeder Dienst oder jeder Port abgelehnt wird. Jede Schnittstelle wird dann mit einigen Ausnahmen konfiguriert, abhängig von den Diensten, die zulässig sein müssen. Wenn wir eine Liste aller mit einer Zone verbundenen Dienste haben möchten, können wir ausführen Firewall-CMD mit dem --Get-Service Möglichkeit. Wenn eine Zone nicht explizit an den Befehl übergeben wird, wird die Standardzone abgefragt:

# Firewall-CMD-List-All Public (aktiv) Ziel: Standard ICMP-Block-Inversion: Keine Schnittstellen: ENS5F5 Quellen: Dienste: SSH MDNS DHCPv6-Client-Ports: Protokolle: Masquerade: No Forward-Ports: Quellports: Quellports: ICMP-Blocks: Reiche Regeln: 

Der Befehl gab eine Zusammenfassung des Zustands der Zone zurück (in diesem Fall der Standard, „öffentlich“). Unter den anderen Dingen können Sie deutlich sehen, welche Netzwerkschnittstellen mit dieser Zone (in diesem Fall ENS5F5) verknüpft sind und welche Dienste (SSH, MDNs, DHCPv6-Client) darin zulässig sind. Wenn wir Informationen über eine bestimmte, nicht defekten Zone abrufen möchten, sollten wir den Zonennamen als Argument an die übergeben --Zone Möglichkeit. Zum Beispiel, um Informationen über die abzurufen extern Zone, wir würden rennen:

# Firewall-cmd --zone = extern-list-alle externes Ziel: Standard-ICMP-Block-Inversion: Keine Schnittstellen: Quellen: Dienste: SSH-Ports: Protokolle: Maskerade: Ja Vorwärts-Ports: Quellports: ICMP-Blocks : Reiche Regeln: 


Zonen Manipulation

Wie bereits erwähnt, wenn ich die benutze Firewall-CMD Tool, wenn keine Zone angegeben ist, wird auf die Standardeinstellung verwiesen. Wir möchten vielleicht ändern, wie die Standardzone ist. Sagen Sie zum Beispiel, wir möchten die externe Zone als Standardeinstellung festlegen:

# Firewall-CMD--Set-Default = external

Vorliebe einfach, nicht wahr??. Lassen Sie uns nun sehen, wie wir Dienste oder Ports zu einer bestimmten Zone hinzufügen oder entfernen können. Erstens Dienstleistungen sind ein vorkonfiguriertes Satz von Ports, die mit einem spezifischen Protokoll verbunden sind. Zum Beispiel: die ssh Der Service wird die enthalten TCP -Port 22, während Samba Der Dienst erfasst den Anschluss an Ports 139 und 445 TCP Und 137 und 138 UDP. Mithilfe von Diensten können wir vermeiden, jedes Mal bestimmte Ports zu erinnern. Nehmen wir an, wir wollen das hinzufügen Samba Service in der externen Zone, nur was wir tun würden:

# Firwall-cmd --zone = extern --add-service = samba Erfolg 

Der Firewall Daemon antwortete mit Erfolg, Das bedeutet, dass die Ausführung erfolgreich war. Um dies zu überprüfen, überprüfen wir die Zonendienste:

$ sudo Firewall-CMD-Zone = externe-List-Services SSH Samba 

Wie Sie sehen können, haben wir das benutzt --Listenservices Option für den Zweck. Das Ergebnis des Befehls bedeutet eindeutig, dass die Samba Der Service wurde in die Zone hinzugefügt. Die auf diese Weise vorgenommenen Modifikationen sind jedoch nur vorübergehend und werden keinen Neustart des Firewall Dämon. Überprüfen wir es. Zuerst laden wir den Service neu:

 # Firewall-CMD-Reload

Dann überprüfen wir erneut die in der zugelassenen Dienste extern Zone:

# Firewall-CMD --zone = externe-List-Services SSH 

Wie Sie sehen können, ist der einzige Service, der in der zulässig ist extern Zone ist ssh. Um eine anhaltende Änderung in einer Zone vorzunehmen, müssen wir die verwenden --dauerhaft Möglichkeit:

 # Firewall-cmd --permanent --zone = externe --add-service = samba

Permanente Modifikationen benötigen eine Firewall -Nachlade, um wirksam zu werden.

Wenn wir den umgekehrten Betrieb durchführen und so einen Dienst aus einer Zone entfernen möchten, würden wir ausführen:

 # Firewall-cmd --permanent --zone = extern-remove-service = samba

Die Syntax ist sehr intuitiv und benötigt keine weitere Erklärung. Aber was ist, wenn wir einen bestimmten Port anstelle des Dienstes hinzufügen möchten?? Die Syntax würde sich leicht ändern:

 # Firewall-cmd --permanent --zone = externe --add-port = 139/tcp

Um zu überprüfen, ob der Port zur Zone hinzugefügt wurde:

# Firewall-CMD --zone = externe-List-Ports 139/TCP 

Die Operation war erfolgreich. Auf die gleiche Weise würden wir einen Port entfernen, den wir tun würden:

# Firewall-cmd --permanent --zone = extern-remove-port = 139/tcp


Erstellen einer benutzerdefinierten Zone

Bisher haben wir nur gesehen, wie vorhandene Zonen modifiziert werden können. Es ist auch möglich, einige neue zu erstellen, und es ist genauso einfach. Nehmen wir an, wir möchten eine benutzerdefinierte Zone namens erstellen Linuxconfig:

# Firewall-CMD --permanent-New-Zone = LinuxConfig

Es wurde eine neue leere Zone erstellt: Standardmäßig sind keine Dienste oder Ports darin zulässig. Es ist auch möglich, eine Zone zu erstellen, indem eine Konfigurationsdatei geladen wird:

# Firewall-cmd --permanent-New-Zone-from-file = Datei --Name = LinuxConfig

Wo Datei ist der Pfad zur Datei, die die Zonendefinition enthält. Beachten Sie das beim Erstellen oder Löschen einer Zone die --dauerhaft Die Option ist obligatorisch: Ein Fehler wird angesprochen, wenn er nicht bereitgestellt wird.

Verbinden Sie eine Zone mit einer Schnittstelle

Das Erstellen einer Zone ist nur der erste Schritt: Wir müssen sie jetzt mit einer Netzwerkschnittstelle in Verbindung bringen. Angenommen, wir möchten unsere neu erstellte Zone verwenden und sie mit der ENS5F5 -Ethernet -Schnittstelle verbinden: Hier ist der Befehl, der uns die Aufgabe erfüllen lässt:

# Firewall-CMD --permanent --zone = LinuxConfig --Add-interface = ENS5F5

Wenn wir die Zone für die ihm zugewiesenen Schnittstellen abfragen, sollten wir sehen:

# Firewall-CMD --zone = LinuxConfig-List-Interfaces ENS5F5 

Das Entfernen der Schnittstelle aus der Zone ist genauso einfach wie:

# Firewall-CMD--Remove-Interface = Ens5f5 --zone = LinuxConfig


Reiche Regeln

In bestimmten Situationen müssen wir möglicherweise komplexere Regel erstellen und nicht nur einige Ports oder Dienste in einer Zone zulassen. Zum Beispiel möchten wir möglicherweise eine Regel erstellen, um einen Datenverkehr von einer bestimmten Maschine zu blockieren. Das ist, was Reiche Regeln sind für. Eine Regel besteht im Grunde genommen aus zwei Teilen: Im ersten haben wir die Bedingungen angeben, die für die Anwendung der Regel erfüllt werden müssen, und in der zweiten, die ausführte Aktion: akzeptieren, tropfen, oder ablehnen.

Nehmen wir an, wir möchten den Datenverkehr mit IP von der Maschine blockieren 192.168.0.37 Im lokalen Netzwerk: So würden wir unsere Regel komponieren:

# Firewall-CMD --zone = LinuxConfig --add-Rich-Rule = "Regel \ familie =" IPv4 "\ Source Address = 192.168.0.37 \ Service name = ssh \ reject \ 

Um eine reichhaltige Regel hinzuzufügen, haben wir die verwendet --addreiche RULE Option, die Regel als Argument zu beschreiben. Die Regel beginnt mit Regel Stichwort. Mit Familie Wir haben angegeben, dass die Regel nur an angewendet wird IPv4 Pakete: Wenn dieses Schlüsselwort nicht bereitgestellt wird, wird die Regel beides an angewendet IPv4 Und IPv6. Wir haben dann die Quelladresse angegeben, die die Pakete haben müssen, damit die Regel ausgelöst werden muss Quelladresse. Mit Service Wir haben die Art des Dienstes für die Regel angegeben, in diesem Fall ssh. Schließlich haben wir die zu ausgeführte Aktion zur Verfügung gestellt, wenn ein Paket in diesem Fall der Regel entspricht ablehnen. Wenn wir jetzt versuchen, eine SSH -Verbindung von der Maschine mit dem herzustellen 192.168.0.37 IP, wir erhalten:

SSH 192.168.0.35 SSH: Verbindung zum Host 192 herstellen.168.0.35 Port 22: Verbindung abgelehnt 

Der oben ist wirklich einfach, aber eine Regel kann wirklich komplex werden. Sie sollten die Firewalld -Dokumentation überprüfen, um alle verfügbaren Einstellungen und Optionen zu sehen.

Der Panikmodus

Der Panikmodus ist ein Modus, der nur in Situationen verwendet werden sollte, in denen es wirklich ernsthafte Probleme mit der Netzwerkumgebung gibt. Wenn dieser Modus aktiv ist, werden alle vorhandenen Verbindungen verworfen und alle eingehenden und ausgehenden Pakete werden fallen gelassen. Es kann aktiviert werden: Ausführen:

# Firewall-CMD-Panic-on

Um den Panikmodus zu beenden, lautet der Befehl:

# Firewall-CMD-Panic-off

Es ist sogar möglich, die zu fragen Panikmodus Status, Laufen:

# Firewall-CMD-Query-Panic

Diese Optionen sind nur bei gültig bei Laufzeit und kann nicht verwendet werden mit --dauerhaft.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • So definieren Sie eine benutzerdefinierte Firewall -Zone
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Download
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Mastering -Bash -Skriptschleifen beherrschen
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten