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?
- 182 megtekintés
Hozzászólások
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.
- A hozzászóláshoz be kell jelentkezni