[MEGOLDVA] nftables használata országkódokkal

Fórumok

Sziasztok. Az alábbi nftables configot használom már egy ideje, és jól működik:
 

flush ruleset

table netdev drop-bad-packets {
        include "/etc/nftables/geoip-def-all.nft"
        include "/etc/nftables/geoip-ipv4.nft"
        include "/etc/nftables/geoip-ipv6.nft"
        chain ingress {
                type filter hook ingress device ens19 priority -500;

                meta mark set ip saddr map @geoip4
                meta mark set ip6 saddr map @geoip6

                ip frag-off & 0x1fff != 0 counter drop

                tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop

                tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop

                tcp flags syn tcp option maxseg size 1-535 counter drop

                meta mark { $CN, $BR, $IN, $RU } counter drop
        }
}

table inet drop-bad-ct-states {
        chain prerouting {
                type filter hook prerouting priority -150;

                 ct state invalid counter drop

                 ct state new tcp flags & (fin|syn|rst|ack) != syn counter drop

         }
}

table inet filter {
        include "/etc/nftables/geoip-def-all.nft"
        include "/etc/nftables/geoip-ipv4.nft"
        include "/etc/nftables/geoip-ipv6.nft"
        chain input {
                type filter hook input priority 0; policy drop;

                meta mark set ip saddr map @geoip4
                meta mark set ip6 saddr map @geoip6


              meta mark { $HU } tcp dport { 80 } counter drop

                iif "lo" accept
                ct state invalid counter drop
                icmp type echo-request limit rate over 10/minute burst 4 packets counter drop comment "Prevent ping flood"
                icmpv6 type echo-request limit rate over 10/minute burst 4 packets counter drop comment "Prevent ping flood"
                ct state { established, related } counter accept
                tcp dport {25,53,80,143,443,465,587,993,4190,5665,8080,8081,8571,40110-40210} ct state new counter accept
                udp dport {53,123} ct state new counter accept
                ip protocol tcp counter reject with tcp reset
        }

...

A lényeg, hogy a table inet filterbe be van állítva, hogy mely portokat lehessen elérni, illetőleg a table netdev alatt, hogy mely országok vannak tiltva (többek között).
Szeretném azt megvalósítani, hogy a magyar ipcímek alapból engedve vannak, tehát nincs az országok között tiltva az elejáén, de mégis szeretném, hogy a magyar ipkről elérhetetlen legyen a 80-as port. Látható, hogy beraktam a chain input harmadik elemének a meta mark { $HU }  tcp dport { 80 } counter dropot, de ennek ellenére elérhető a 80-as port, tehát nyitott, mintha a drop ellenére lefutna a későnn jövő tcp dport sor ahol a sok port között a 80-as is fel van sorolva. Megnéztem az nftables dokuját, de azt írják, hogy a drop-ot használva lefuttatja az adott szabályt, majd a többit már nem hajtja végre. Nem értem, hogy akkor miért nem tiltódik a 80-as port magyar ipől.
Van valakinek valami ötlete?

Hozzászólások

Szerkesztve: 2023. 01. 30., h – 16:15

Aham hát egészen banális hiba volt. Amit adtak magyar szervert, hogy onnan teszteljem a portokat, az valójában mégse volt magyar szerver...:D
És nyugodtan mehet a netdev alá is a szabály, úgyhogy úgy lesz.