Nftables Erweiterungen
Zur Navigation springen
Zur Suche springen
Erweiterte Funktionen in nftables
ipsec-policy
- nftables kann prüfen, ob ein Paket durch IPsec gesichert ist.
- Die Prüfung erfolgt mit dem Ausdruck ipsec in bzw. ipsec out.
- Beispiele:
- ipsec in reqid 1 accept
- ipsec in spi 0x12345678 drop
policy-routing
- Routing-Entscheidungen können mit meta mark oder fib beeinflusst werden.
- Beispielsweise für differenziertes Routing je nach Paketmarkierung.
- Beispiele:
- meta mark set 0x10
- fib daddr type local accept
mss-reduction
- Um Probleme mit MTU und TCP über VPNs zu vermeiden, kann die MSS angepasst werden.
- Dies wird mit dem tcp option parser in nftables realisiert.
- Beispiel:
- tcp flags syn tcp option maxseg size set 1300
Portforwarding mit sauberer Kontrolle
- Bei klassischem Portforwarding wird nur nach der DNAT-Umsetzung geprüft.
- Wenn man bereits den ursprünglichen Verbindungsaufbau zur öffentlichen Adresse prüfen will, muss vor DNAT markiert werden.
nftables-Beispiel für sauberes Portforwarding
vim /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
define wanif = ens18
define lanif = ens20
define wanip = 10.82.232.11
define webserver = 192.168.4.12
table inet mangle {
chain prerouting {
type filter hook prerouting priority mangle; policy accept;
iifname $wanif ip daddr $wanip tcp dport 80 mark set 0x8
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
iifname $wanif ip daddr $wanip tcp dport 80 dnat to $webserver:80
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname $wanif ip saddr 192.168.4.0/24 snat to $wanip
}
}
table inet filter {
chain forward {
type filter hook forward priority filter; policy drop;
ct state established,related accept
mark 0x8 accept
# Optional: Übergabe an Suricata
# mark 0x8 queue num 0
log prefix "--nftables-drop-forward--"
}
chain input {
type filter hook input priority filter; policy drop;
iif "lo" accept
ct state established,related accept
log prefix "--nftables-drop-input--"
}
chain output {
type filter hook output priority filter; policy drop;
ct state established,related accept
log prefix "--nftables-drop-output--"
}
}
Weiterleitung an eine Queue (z. B. Suricata)
- Statt accept in der FORWARD-Kette kann auch eine Queue verwendet werden:
mark 0x8 queue num 0
- Suricata muss mit --nfqueue und Queue-Nummer 0 gestartet werden.
- Beispiel-Aufruf:
suricata -c /etc/suricata/suricata.yaml -q 0