1 (edytowany przez jacekalex 2024-07-18 06:50:09)

Temat: [+]Nftables i Prosody?

Cześć

Maszynka Netgear R6260 dotarła i działa dosyć grzecznie.

Przyszedł czas, aby reaktywować domowy serwerek jabbera.

Do tej pory używałem iptables i do jabbera miałem takie reguły:

IPv4:

iptables -A INPUT ! -i lo -p tcp -m multiport --dports 5269 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmpp -j ACCEPT
iptables -A INPUT ! -i lo -p tcp -m multiport --dports 5222 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmppclient -j ACCEPT

Ipv6:

ip6tables -A INPUT ! -i lo -p tcp -m multiport --dports 5269 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmpp6 -j ACCEPT
ip6tables -A INPUT ! -i lo -p tcp -m multiport --dports 5222 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmppclient6 -j ACCEPT

Próbowałem już kilka razy przepisać te reguły na nftables, ale bez sukcesu.
Jakieś sugestie?

2

Odp: [+]Nftables i Prosody?

Bezpośrednio iptables-translateo zamienia to na np.

nft 'add set ip filter connlimit0 { type ipv4_addr; flags dynamic; }'
nft 'add rule ip filter INPUT iifname != "lo" ip protocol tcp tcp dport 5269 add @connlimit0 { ip saddr and 0.0.0.0 ct count 10 } meter xmpp { ip saddr timeout 60s limit rate 10/minute } counter accept'

Choć i ta będzie to pewnie musiał dostosować do tego ma masz teraz (np. ip filter INPUT)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez jacekalex 2024-07-16 22:45:01)

Odp: [+]Nftables i Prosody?

Iptables-translate akurat sprawdzałem, ale jeszcze niedawno connlimit IPv6 traktował jako ipv4, nie dodawał do niego adresów Ipv6.

Te błędy pokutują do dzisiaj:

ip6tables-translate -A INPUT ! -i lo -p tcp -m multiport --dports 5269 -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 10/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name xmpp6 -j ACCEPT
nft 'add set ip6 filter connlimit0 { type ipv4_addr; flags dynamic; }'
nft 'add rule ip6 filter INPUT iifname != "lo" meta l4proto tcp tcp dport 5269 add @connlimit0 { ip6 saddr and :: ct count 10 } meter xmpp6 { ip6 saddr timeout 60s limit rate 10/minute } counter accept'

Poza tym ze składnią reguł do skrypta to ja sobie radzę, ale jestem ciekaw, czy da się to dopisać do /etc/config/firewall czyli w formie lekkostrawnej dla uci/luci.

Pozdro

PS:
W FW4 jest jakiś błąd w forward_wan, za Chiny ludowe i demokratyczne nie przekazuje pakietów IPv6 z kompa do interfejsu henet.
Linux i Android dostał adresy Ipv6 przez RA.
Trasa default:

default via fe80::3a94:edff:fef8:7b2c dev intel proto ra metric 1024 expires 1513sec mtu 1280 hoplimit 64 pref medium
ip -6 route get 2a06:98c1:3120::b
2a06:98c1:3120::b from :: via fe80::3a94:edff:fef8:7b2c dev intel proto ra src 2001:470:71:2cf:617d:6594:9261:42c7 metric 1024 mtu 1280 hoplimit 64 pref medium
From 2001:470:71:2cf::1 icmp_seq=1 Destination unreachable: Port unreachable

Odpowiada adres na karcie br-lan:

ssh router ip a s dev br-lan | grep 2001
    inet6 2001:470:71:2cf::1/64 scope global noprefixroute

4 (edytowany przez jacekalex 2024-07-18 07:18:43)

Odp: [+]Nftables i Prosody?

Dobra, commlimit i hashlimit zrobione, nawet zdaje się działać:

 ## nft list ruleset | grep -A3 connlimit
    set connlimit6 {
        type ipv6_addr
        size 65535
        flags dynamic
--
    set connlimit4 {
        type ipv4_addr
        size 65535
        flags dynamic
--
        tcp dport 5269 add @connlimit4 { ip saddr & 0.0.0.0 ct count 10 } meter xmpp size 65535 { ip saddr timeout 1m limit rate 10/minute } counter packets 0 bytes 0 accept
        tcp dport 5222 add @connlimit4 { ip saddr & 0.0.0.0 ct count 10 } meter xmppclient size 65535 { ip saddr timeout 1m limit rate 10/minute } counter packets 0 bytes 0 accept
        tcp dport 5269 add @connlimit6 { ip6 saddr & :: ct count 10 } meter xmpp6 size 65535 { ip6 saddr timeout 1m limit rate 10/minute } counter packets 0 bytes 0 accept
        tcp dport 5222 add @connlimit6 { ip6 saddr & :: ct count 10 } meter xmppclient6 size 65535 { ip6 saddr timeout 1m limit rate 10/minute }
        jump reject_from_wan
    }

Tylko dalej nie mam pojęcia, jak to zakodzić w /etc/config/firewall w stylu kompatybilnym z uci.

Pozdro

5

Odp: [+]Nftables i Prosody?

Strzelam że nie zrobisz tego, bo uci nie dysponuje takimi zaawansowanymi opcjami

Ale możesz to włożyć do skryptów które firewall wykonuje.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: [+]Nftables i Prosody?

FW w Nftables prawie zrobiony, nie ma jeszcze mojego patentu z ipsetem w RAW:
https://forum.dug.net.pl/viewtopic.php? … 83#p269383

Ale na razie muszę naprawić routing w ipv6.