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>