Nftables Tutorial

Nftables Tutorial

In diesem Tutorial wird erläutert, wie man mit der Nftables Linux Firewall arbeitet. Dieser Inhalt ist sowohl für linux erfahrene als auch für neue Benutzer optimiert.

Nftables ist eine Komponente des Linux -Kernels, das Firewall -Funktionen bereitstellt. Es ist der Ersatz von iptables.

Nachdem Sie dieses Tutorial gelesen haben, werden Sie die Regeln der Nftables verstehen und Ihre Firewall erstellen. Sie brauchen keine Vorkenntnisse über Iptables.

Alle Beispiele in diesem Tutorial enthalten Screenshots, die es für alle Linux -Benutzer, unabhängig von ihrer Wissensniveau, einfach zu verstehen und implementieren zu können.

Erste Schritte mit Nftables

Erstellen und öffnen Sie eine Datei mit einem Texteditor wie Nano oder VI, um Ihre ersten NFTables -Regeln basierend auf dem folgenden Beispiel zu tippen. Kopieren Sie nicht; Geben Sie alles ein.

Nano Firewall.nft

Das Beispiel in diesem Tutorial ist ziemlich einfach und zeigt eine restriktive Firewall, bei der der gesamte IPv4 -Verkehr mit Ausnahme von Loopback und bestimmten Ports fallen gelassen wird.

Im vorherigen Screenshot habe ich die erste Zeile verwendet, um mein lokales Netzwerk zu definieren (192.168.0.0/16) als LinuxHintnet.

Definieren Sie LinuxHintnet = 192.168.0.0/16

In der zweiten Zeile definiere ich eine Gruppe von Ports (80.443 und 22). Ich nenne diese Gruppe Zulassungen, weil ich vorhabe, den Verkehr durch sie zuzulassen. AllowPorts ist ein willkürlicher Name.

Definieren Sie Zulassungen = 80.443,53,22

Dann füge ich eine Tabelle hinzu, die ein Container oder eine Gruppe von Ketten und Regeln ist. Beide werden unten erklärt. Tabellen helfen, Regeln und Ketten zu organisieren. Ich habe die Tabelle im Beispiel „restriktiv“ angerufen, weil sie eine restriktive Richtlinie enthält und sein Name willkürlich ist.

Die IP vor dem Tabellennamen gibt an, dass die Que -Tabellenregeln nur auf den IPv4 -Verkehr angewendet werden. Sie können INET anstelle von IP verwenden, um Regeln auf IPv4- und IPv6 -Protokolle anzuwenden. Oder Sie können IP nur durch IP6 für IPv6 ersetzen.

Denken Sie daran, restriktiv ist ein Name, den ich willkürlich definiert habe. Sie können die Tabelle so benennen, wie Sie möchten.

In meinem Fall wende ich Regeln nur auf IPv4 an, wie unten gezeigt.

Tabelle IP -restriktiv hinzufügen

Verwenden Sie für beide Protokolle Folgendes:

Tabelle inet restriktiv hinzufügen

Dann fügen wir die erste Basiskette hinzu, die ich willkürlich eingebaut nenne, weil sie mit dem eingehenden Verkehr zusammenhängt. Sie können es jedoch so nennen, wie Sie möchten.

Die folgende Basiskette senkt standardmäßig alle eingehenden Verkehr:

  • Hinzufügen von Ketten -IP -restriktives Einkommen: Dieser Abschnitt fügt die restriktive eingehende Kette hinzu, die auf IPv4 angewendet werden soll
  • Typ Filter: Dadurch definiert der Kettentyp als Filter, da er den Verkehr filtert. Andere mögliche Kettentypen sind Route oder Nat
  • Hakeneingang: Bezieht sich auf eingehende Pakete
  • Priorität 0: Priorität der Basiskette definiert Basiskettenreihenfolge
  • Richtlinienabfall: Die Drop -Richtlinie stellt standardmäßig alle Pakete ab
Hinzufügen von Ketten -IP -restriktiver Einkommen Typ Filter Hook Eingabepriorität 0; Politikabfall;

Wie Sie im folgenden Screenshot sehen können, habe ich zwei weitere Basisketten erstellt, die dem vorherigen, restriktiven Umleitungs- und Restriktivausgang ähnlich sind. Der Unterschied ist der definierte Haken für jeden (Haken- und Hakenausgang). Sie zu erklären ist sich wiederholend.

Nach den drei Basisketten können wir mit den Nftables -Regeln fortfahren, um den Loopback -Verkehr zuzulassen.

Ich füge die folgenden Zeilen für eingehenden und ausgehenden Verkehr auf der Loopback -Schnittstelle hinzu.

Fügen Sie Regel IP ein restriktiver eingehender Iifname lo counter Akzeptieren
Fügen Sie Regel IP ein restriktives Einkommen von OifName Lo Counter Akzeptieren

Jetzt füge ich vier Regeln hinzu, um ausgeschlossene und eingehende TCP- und UDP.

Fügen Sie Regel IP ein restriktiver eingehender TCP Sport $ deglyPorts counter Akzeptieren
Fügen Sie Regel IP ein restriktiver ausgehender TCP -Dport $ degfports counter Akzeptieren
Fügen Sie Regel IP einschränkend eingehende UDP Sport $ deglyPorts counter Akzeptieren
Fügen Sie Regel IP ein restriktiver ausgehender UDP -Dport $ degfports counter Akzeptieren

Sie können das vollständige Skript unten sehen.

Sobald Sie fertig mit den Tabellen, Ketten und Regeln fertig sind, schließen Sie das Dokument und speichern Sie die Änderungen.

# In den ersten beiden Zeilen definiere ich mein lokales Netzwerk (LinuxHintnet) und eine Reihe von Ports (80,
#443,22), um den Verkehr durch sie in den folgenden Regeln zu ermöglichen.
Definieren Sie LinuxHintnet = 192.168.0.0/16
Definieren Sie Zulassungen = 80.443,53,22
#Ich deklare eine neue Tabelle, die Ketten und Regeln enthält. Ich nenne diese Tabelle "restriktiv".
#Die "IP" wendet Regeln nur auf IPv4 an. Verwenden Sie für IPv6 nur "IP6" und verwenden Sie "inet" für beide Protokolle.
Tabelle IP -restriktiv hinzufügen
# Nach dem Erstellen der Tabelle erstelle ich drei Ketten, eingehende, umgeleitete und ausgehende Umleitungen,
#THEIR -Namen sind willkürlich. Alle lassen stand.
Hinzufügen von Ketten -IP -restriktiver Einkommen Typ Filter Hook Eingabepriorität 0; Politikabfall;
Hinzufügen von Ketten -IP -restriktive Umleitung Typ Filter Hook Forward Priorität 0; Politikabfall;
Hinzufügen von Ketten -IP -restriktiver Ausgang Type Filter Hook Ausgabepriorität 0; Politikabfall;
# Ich implementieren zwei Regeln, um den Loopback -Verkehr zuzulassen.
Fügen Sie Regel IP ein restriktiver eingehender Iifname lo counter Akzeptieren
Fügen Sie Regel IP ein restriktives Einkommen von OifName Lo Counter Akzeptieren
# Ich implementiere Regeln, um den Datenverkehr über Ports zuzulassen, die in der Variablen für die Zulassungsporte definiert sind.
Fügen Sie Regel IP ein restriktiver eingehender TCP Sport $ deglyPorts counter Akzeptieren
Fügen Sie Regel IP ein restriktiver ausgehender TCP -Dport $ degfports counter Akzeptieren
Fügen Sie Regel IP einschränkend eingehende UDP Sport $ deglyPorts counter Akzeptieren
Fügen Sie Regel IP ein restriktiver ausgehender UDP -Dport $ degfports counter Akzeptieren

Führen Sie den folgenden Befehl aus, um die Firewall zu aktivieren:

sudo nft -f Firewall.nft

Sie können Ihre Regeln überprüfen, indem Sie den folgenden Befehl ausführen:

Sudo NFT List Ruleset

Das ist eine grundlegende restriktive Firewall.

Abschluss:

Wie Sie sehen können, ist Nftables viel freundlicher als Iptables, und Benutzer können Nftables schneller lernen als Iptables. Da Iptables eingestellt wird und viele Verteilungen Nftables als Standard -Firewall, einschließlich Debian, verwenden. Erfahrene Benutzer möchten möglicherweise das Iptables-Nftables-Compat-Tool ansehen, das Iptables in nftable übersetzt. Dies kann ihnen helfen, die Unterschiede zu verstehen.

Professionelle Benutzer wie Systemadministratoren arbeiten in der Regel weiter mit Iptables. Vermeiden Sie es, NFTables zu ignorieren, um Zeit zu sparen, während Sie die Filterung verbessern. Ich hoffe, dieser Artikel war einfach genug, um Sie davon zu überzeugen, Nftables zu versuchen.