Navigation
Firewall Grundlagen
Befehle / Syntax
sonstiges
Links
Netfilter/NFTables Projekt
Netfilter HowTo
Netfilter Wiki
- Kopie der Quellen erstellen
git clone git://git.netfilter.org/nftables
- In Tabellen werden Filterregeln zu Gruppen zusammengefasst.
Tabellen von nftables | |
---|---|
Tabelle (Standard) | Beschreibung |
ip | IPv4 |
ip6 | IPv6 |
arp | APR |
bridge | Bridge |
inet | (ab Kernel 3.14) |
- Jede Tabelle enthält verschiedene Chains. Chains enthalten die eigentlichen Firewall Regeln, sie legen fest, wann ein Paket geprüft wird.
Chains (Ketten) von nftables | ||
---|---|---|
Chain | für Tabelle | Beschreibung |
INPUT | filter, mangle, security | Pakete, für einen lokalen Prozess |
OUTPUT | filter, nat, mangle, raw, security | Pakete, von einem lokalen Prozess |
FORWARD | filter, mangle, security | Pakete, die nur weitergeleitet (geroutet) werden |
PREROUTING | nat, mangle, raw | Pakete, bevor diese geroutet werden |
POSTROUTING | nat, mangle | Pakete, nachdem diese geroutet würden |
Aktionen, die auf ein Paket angewendet werden | |
---|---|
Aktion | Beschreibung |
ACCEPT | Paket wird akzeptiert und angenommen |
DROP | Paket wird nicht angenommen, der Sender erhält keine Nachricht |
REJECT | Paket wird nicht angenommen, der Sender wird benachrichtigt |
QUEUE | Paket passiert den Userspace (falls vom Kernel unterstützt) |
RETURN | Durchlaufen dieser Kette wird beendet und mit der nächsten Regel der vorherigen (aufrufenden) Kette fortgefahren wird |
LOG | Paketdaten werden im System-Log festgehalten |
SNAT | (Source-NAT) ändert die Quelladresse des Paketes und wird nur in der POSTROUTING Kette verwendet. (nur nat Tabelle) |
MASQUERADE | Ersetzt die Quelladresse des Pakets, durch die IP-Adresse der Schnittstelle, auf dem es den aktuellen Host Rechner verlässt |
DNAT | (Destination-NAT) ändert die Zieladresse des Paketes und wird nur in der PREROUTING Kette verwendet. |
REDIRECT | ändert die Zieladresse oder ZielPort des Paketes |
Wenn einem Chain eine Regel hinzugefügt werden soll, sind die Tables und Chains anzugeben.
Befehl | Beschreibung |
---|---|
Tables | |
nft add table ip filter | Tables erstellen |
nft delete table ip filter | Tables löschen (nur leere Tables lassen sich löschen) |
nft flush table ip filter | Tables leeren |
Chains | |
nft add chain ip filter input { type filter hook input priority 0; } | INPUT Chain erstellen |
nft delete chain ip filter input | INPUT Chains löschen (nur leere Chains lassen sich löschen) |
Befehle | |
add | Regel wird als letzte angehängt |
insert | wird eingefügt, bestehende bearbeitet |
nft -i | Interaktiven Modus starten |
Regeln | |
nft list table filter | zeigt vorhandene Regeln an |
nft list table filter -a | zeigt eindeutigen Handle der Regel an |
nft delete rule filter output handle 5 | Regel mit Handle 5 löschen |
nft insert rule filter output meta oif lo accept | Regel das ausgehende Pakete von Loopback Device erlaubt (oif - Out Interface) |
nft insert rule filter input meta iif eth1 accept | Regel die eingehende Pakete von ETH1 erlaubt |
nft insert rule filter input ct state established accept | Connection Tracking einrichten |
nft list table filter > rule set | alle Regeln in Datei schreiben |
nft -f files/nftables/ipv4-filter | Initialisierung mit leerem Regelwerk, Chains INPUT, FORWARD, OUTPUT werden erstellt. |
nft add rule filter output ip daddr 10.10.20.3 counter | dem Chain OUTPUT in der Table FILTER wir eine Regel hinzugefügt |
nft add rule ip filter input ip saddr 192.168.2.1 drop | Chain INPUT in der Table FILTER, ankommende Paktete mit der Quelladresse 192.168.2.1 werden verworfen |
nft add rule ip filter input tcp dport { ssh, http, https } accept | ankommende Pakete auf dem Zielport 22, 80, 443 zulassen |
nft add rule filter input tcp dport 1234 log drop | mehrere Aktionen sind möglich, ankommende TCP Pakete mit Zielport 1234 werden gelogt und dann verworfen |
- Nftables initialisieren, Tables und Chains löschen/leeren
nft flush table filter nft list table filter table ip filter { chain input { type filter hook input priority 0; } chain forward { type filter hook forward priority 0; } chain output { type filter hook output priority 0; } } nft delete chain filter input nft delete chain filter output nft -f ruleset
- (Interaktiver Modus) initialisieren Regelwerk anzeigen
nft> list table filter table ip filter { chain input { type filter hook input priority 0; } chain forward { type filter hook forward priority 0; } chain output { type filter hook output priority 0; } } nft>