Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


fortgeschrittene:nftables

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
fortgeschrittene:nftables [2022/09/14 13:16]
ingo_wichmann [mit Konfigurationsdatei]
fortgeschrittene:nftables [2023/12/27 11:31] (aktuell)
ingo_wichmann [interaktiv]
Zeile 1: Zeile 1:
 ====== nftables beobachten ====== ====== nftables beobachten ======
   watch -d nft -a list ruleset   watch -d nft -a list ruleset
 +(( oder, wenn nur die filter-Regel von Interesse sind: 
 +  watch -d nft -a list table inet filter 
 +))
 ====== nftables Regeln zurücksetzen/​löschen ====== ====== nftables Regeln zurücksetzen/​löschen ======
   nft flush ruleset   nft flush ruleset
-===== counter zurücksetzen ===== +
-auf die harte Tour: alle aktuellen Regeln löschen und neu einlesen: +
-  (echo 'flush ruleset';​ nft -s list ruleset) | nft -f -+
 ====== erste nftables Regeln ===== ====== erste nftables Regeln =====
 ===== iptables-ähnliche Tabellen und Chains anlegen ===== ===== iptables-ähnliche Tabellen und Chains anlegen =====
 ==== interaktiv ==== ==== interaktiv ====
-(( TODO: kann ich das inet weglassen? Oder kriege ich dann ip?)) 
   nft -ia   nft -ia
   add table inet filter   add table inet filter
-  add chain inet filter input { type filter hook input priority filter; policy accept; } +  add chain inet filter input { type filter hook input priority filter; } 
-  add chain inet filter forward { type filter hook forward priority filter; policy accept; } +  add chain inet filter forward { type filter hook forward priority filter; } 
-  add chain inet filter output { type filter hook output priority filter; policy accept; }+  add chain inet filter output { type filter hook output priority filter; }
 (( Since Linux kernel 5.2, there is support for performing stateful NAT in inet family chains: http://​wiki.nftables.org/​wiki-nftables/​index.php/​Performing_Network_Address_Translation_(NAT) )) (( Since Linux kernel 5.2, there is support for performing stateful NAT in inet family chains: http://​wiki.nftables.org/​wiki-nftables/​index.php/​Performing_Network_Address_Translation_(NAT) ))
-  add table ip nat +  add table inet nat 
-  add chain ip nat prerouting { type nat hook prerouting priority dstnat; } +  add chain inet nat prerouting { type nat hook prerouting priority dstnat; } 
-  add chain ip nat postrouting { type nat hook postrouting priority srcnat; } +  add chain inet nat postrouting { type nat hook postrouting priority srcnat; } 
  
 ==== mit Konfigurationsdatei ==== ==== mit Konfigurationsdatei ====
-Erste Zeile ''​flush ruleset''​ beachten, sonst werden die Regeln hinzugefügt. ​ 
 <file txt nftables.conf>​ <file txt nftables.conf>​
 flush ruleset flush ruleset
Zeile 47: Zeile 45:
   nft -f nftables.conf   nft -f nftables.conf
  
 +===== erste tcp-Ports schließen =====
 +  nft -ia
 +  insert rule inet filter input tcp dport { 80, 3128 } drop
 +
 +Alternativ, mit named sets:
 +  nft -ia
 +  add set inet filter port_blacklist { type inet_service;​ }
 +  add element inet filter port_blacklist { 80, 3128 }
 +  replace rule inet filter input handle 7 tcp dport @port_blacklist drop
 +
 +===== einzelne Regel löschen =====
 +  nft -ia
 +  delete rule inet filter input handle 7
 ====== nftables Regeln debuggen ====== ====== nftables Regeln debuggen ======
 ===== counter nutzen ===== ===== counter nutzen =====
-''​accept'',​ ''​drop''​ oder ''​reject''​ jeweils ''​counter''​ voran stellen: ''​counter accept'',​ ''​counter drop''​ oder ''​counter reject'' ​und Regeln wie oben beschrieben mit ''​watch -d nft -a list ruleset'' ​beobachten. ​+''​accept'',​ ''​drop''​ oder ''​reject''​ jeweils ''​counter''​ voran stellen: ''​counter accept'',​ ''​counter drop''​ oder ''​counter reject'' ​ 
 + 
 +Beispiel: 
 +  nft -ia 
 +  replace rule inet filter input handle 7 tcp dport { 80, 3128 } counter reject with tcp reset 
 + 
 +alle counter beobachten:​ 
 +  ​watch -d nft -a list ruleset 
 +gezielter nur die counter einer Chain beobachten:​ 
 +  watch -d nft -a list chain inet filter input 
 + 
 +==== counter zurücksetzen ==== 
 +auf die harte Tour: alle aktuellen Regeln löschen und neu einlesen: 
 +  (echo 'flush ruleset'; nft -s list ruleset) | nft -f - 
 +===== Pakete loggen ===== 
 +  nft -ia 
 +  add rule inet filter input log prefix "input accept"​ 
 + 
 +geloggte Pakete anzeigen: 
 +  dmesg -Tw
  
 ===== Lauf von Paketen nachverfolgen/​tracen ===== ===== Lauf von Paketen nachverfolgen/​tracen =====
Zeile 59: Zeile 89:
  
 ====== aktuelle nftables Regeln speichern ====== ====== aktuelle nftables Regeln speichern ======
-  nft -s flush ruleset > /​etc/​nftables.conf+  nft -s list ruleset > /​etc/​nftables.conf
  
 ====== nftables Regeln aus Datei laden ====== ====== nftables Regeln aus Datei laden ======
Zeile 66: Zeile 96:
 ====== nft Syntax ====== ====== nft Syntax ======
 ^ action ​ ^ object ​ ^ family ​ ^ ^ action ​ ^ object ​ ^ family ​ ^
-| create ​ | ruleset | inet    | +| create ​ | ruleset ​ | inet    | 
-| add     | table   ​| ip      | +| add     | table(s) | ip      | 
-| delete ​ | chain   ​| ip6     | +| delete ​ | chain(s) | ip6     | 
-| rename ​ | rule    +| rename ​ | rule     ​
-| list    | +| list    ​| set      ​|
 | flush   | | flush   |
 | insert ​ | | insert ​ |
fortgeschrittene/nftables.1663161381.txt.gz · Zuletzt geändert: 2022/09/14 13:16 von ingo_wichmann