nftables
Linux besaß bereits mehrere Paketfilter-Implementierungen: von ipfwadm zu ipchains und iptables zu nftables. Letzteres ist seit Version 3.13 Bestandteil des Linux-Kernels und löst das bis dahin bevorzugte iptables ab. Es enthält die meisten iptables-Funktionen sowie einige zusätzliche Eigenschaften und ersetzt die Kommandos des Vorgängers durch das Werkzeug nft. Dank der Kompatibilitätsschicht von nftables lassen sich die alten Kommandos und Einstellungen zunächst weiterverwenden.
Erste Schritte
Prüfen, ob das Kernel-Modul nf_tables
vom aktuellen Kernel verwendet werden kann
modinfo nf_tables
Wenn erfolgreich, dann entsprechend Wiki Kernelmodule das Modul beim Systemstart automatisch laden
Bei Verwendung von Tools wie ferm diese beenden und deren Autostart deaktivieren
systemctl disable --now ferm.service
In dem Fall ferm kann dies auch gleich deinstalliert werden, da ferm nftables nicht unterstützt
pacman -Rcsn ferm
Wer stattdessen die Dienste iptables.service
und ip6tables.service
verwendet - diese beenden und deren Autostart deaktivieren
systemctl disable --now iptables.service
systemctl disable --now ip6tables.service
Zum Schluß alle bestehenden Firewall-Regeln löschen
iptables -F
ip6tables -F
Hinweis: Aktuell sollte man das Kernel-Modul ip_tables
nicht in die blacklist eintragen und auch das Paket iptables
lässt sich nicht ohne weiteres deinstallieren.
Installation
Das Programm ist als
nftables
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Das Packet enthält die Datei /etc/nftables.conf
mit einer Beispielkonfiguration.
systemctl enable --now nftables.service # Für den automatischen Start vormerken und direkt starten
Konfiguration
# systemctl stop nftables.service # nano /etc/nftables.conf # Syntaxhighlight vorhanden # systemctl start nftables.service # systemctl status nftables.service
nft
# nft list tables table inet firewall # Siehe Bsp.
# nft list table inet firewall
# nft list table inet firewall -n -a
# nft list ruleset
Beispiel
#!/usr/bin/nft -f flush ruleset table inet firewall { chain incoming { type filter hook input priority 0; policy drop; ct state established,related accept ct state invalid drop iifname lo accept ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 10/second accept ip6 nexthdr icmpv6 icmpv6 type echo-request counter drop ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem, echo-reply, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept ip protocol icmp icmp type echo-request limit rate 10/second accept ip protocol icmp icmp type echo-request counter drop } chain forwarding { type filter hook forward priority 0; policy drop; } chain outgoing { type filter hook output priority 0; policy accept; } }