Am 26.01.22 um 21:41 schrieb Andreas Fett:
> Hallo liebe Liste,

Hallo Andreas,

> ich hab mal ne nftables Frage in Bezug auf IPv4/IPv6 dualstack handling.
>
> Man gibt dort ja in der table Definition inet, ip, ip6 an.
>

ich hab das so geregelt, daß die Chains ineinander verschachtelt sind:

table inet filter {
  chain inbound_ipv4 {
    icmp type echo-request limit rate 5/second accept
  }

  chain inbound_ipv6 {
    icmpv6 type echo-request accept
icmpv6 type { nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept ip6 nexthdr ipv6-icmp log prefix "[nftables] ICMPv6 Accept: " counter limit rate 20/second accept
  }

  chain inbound {
    type filter hook input priority filter; policy drop;
ct state vmap { invalid : drop, established : accept, related : accept }
    iifname "lo" accept
    meta protocol vmap { ip : jump inbound_ipv4, ip6 : jump inbound_ipv6 }
    tcp dport { 22, 80, 443 } accept
    log prefix "[nftables] Inbound Denied: " counter drop
  }
}

Damit kann ich relativ übersichtlich globale Regeln vor, als auch nach der ipv4/6-Weiche anlegen.

Fail2ban sortiert sich, wenn man es auf nftables umgestellt hat mit table inet ... priority -1 vor den eigenen Regeln ein. Statische Black/Whitelists könnte man dann mit priority -2 davor stellen.
Das ist damit sauberer gelöst, als mit iptables.
Die Frage ist also nicht, ob man getrennte Tables für die verschiedenen Familien anlegt, sondern ggf. mehrere inet-Tabellen (oder auch ipv4/6) um unterschiedliche Filtersysteme miteinander zu kombinieren.

Wobei ich bei f2b bisher nur ipv4-Regeln da drin gesehen hab. Und nicht wundern, wenn f2b nach dem Start noch keine Rules anlegt, das passiert erst, wenn die erste Sperre angelegt wird.

Gruß
Rico

Antwort per Email an