OpenWrt/LEDE GeoIP alapú szűrés firewall4 esetében

Meglehetősen jól működött a GeoIP alapú szűrésem, majd egyszer csak elmúlt ez a jósága. Ott tartok, hogy az OpenWrt/LEDE devel snapshot fw4-et használ, az pedig nftables alapú. A /etc/firewall.user include-jánál megköveteli a

option fw4_compatible 1

megadását, különben ignorálja az include-ot. Ez meg is történt, bár nyilván ettől a file nem lesz fw4 kompatibilisebb, mint eddig. Ha a fejem tetejére állok is, mindig ezt a hibaüzenetet kapom a tűzfal reload-olásakor:

iptables: No chain/target/match by that name.
Include '/etc/firewall.user' failed with exit code 1

Próbálkoztam ezzel, ami korábban működött:

iptables -A input_wan_rule -m geoip ! --src-cc HU -j DROP
iptables -A forwarding_wan_rule -m geoip ! --src-cc HU -j DROP

meg ezzel is:

iptables -I zone-wan -m geoip ! --src-cc HU -j DROP

Van valami /usr/share/xt_geoip/{,BE,LE} alatt - tehát három helyen is - HU.iv4 és HU.iv6 file-om. Az a scriptem csinálja, ami régen működött, nem hiszem, hogy ebben van a baj, minden esetre nem üresek.

Próbáltam így is:

config rule
        option src 'wan'
        option dest 'lan'
        option extra '-m geoip ! --src-cc HU'
        option target 'DROP'
        option enabled '1'

De nem tetszett neki.

Section @rule[10] option 'extra' is not supported by fw4

Mi hiányozhat, hogyan kell ezt jól csinálni, hogyan debugolható?

Hozzászólások

nftables alapú.

Akkor miért iptablest próbálsz konfiguralni? 

Ne szivasd magad az iptables-nft compat réteggel ha nem szükséges. Még jobban bevisz az erdőbe. Natívan meg lehet csinálni nftables-el a geoip szűrést.

Egyébként a custom include támogatás az fw4-hez az Openwrtbe a master ágba kb két hete került bele.

https://git.openwrt.org/?p=project/firewall4.git;a=commit;h=11256ff0374…

Lazán kapcsolódik egy érdekes blogbejegyzés:

https://blog.zentria.company/posts/its-2021-nftables-still-does-not-int…

Rengeteg diszró átállt nftables-re. Viszont sok csomag meg nem szállítja/nincs kész/lexarják az nftables backend-et. És nem futottak még dolgok, docker, libvirt, cni, stb.

Az iptables-nft -vel meg vagy megy vagy nem. Aztán lehet debuggolni.

Sajnos 2022-ben sem jobb a helyzet.

Szóval az egész úgy kezdődött, volt egy jól működő GeoIP alapú filterem. Egyszer csak a desktop gépemre root jogot kértem, mondja is nekem, hogy volt néhány sikertelen belépési kísérlet. Nem szoktam elszúrni a jelszót, pláne nem sokszor. Nézem a lastb kimenetét, különféle felhasználónevekkel be akartak jönni a gépre. Majd whois az IP-címre, hong-kongi a cím. Mondom, nocsak, nem megy a GeoIP filter? Kiderült, hogy nem megy.

Tudni kell, amikor van új kernel, akkor csinálok devel snapshotból új image-et a router-re. Nyilván ez tört el, hiszen időközben a tűzfal új lett, a scriptjeim, configjaim meg a régiek.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Lehet már kérdeztem, de önszopatáson kívül mi értelme van "embedded" eszközön új kernelre ?

Mint láthatod, a te esetedben jóval nagyobb szopás lehetett volna abból, hogy nem ment a tűzfal és bejutnak, mintha marad a régi kernel.

Nekem 1x éve mennek openwrt-im public neten lógva 2.6.xx kernellel oszt köszönik jól vannak.

Értelemszerűen, a servicek elárhetősége pár IP-re van korlátozva (bár van 1-2 eszköz ahol ez sem igaz :D), sokba már az ssh-n keresztüli bejutás is problémás kulcsok gyengesége miatt ...

Fedora 38, Thinkpad x280

Szeretem az új dolgokat. Lehet, azért, mert a saját kódjaim esetében is a legfrissebbről gondolom, hogy az a legjobb, legtöbbet tudó, legkevésbé bugos. Ami egyébként nem igaz, adtam ki cégen belül, fejlesztés alatt álló műszerre olyan firmware-t, amiben három napon belül buffer túlírástól kezdve egy rakás bugot javítottam, amit mind az ezen javítás előtti kiadásba fejlesztettem bele. :) De azért ez nem gyakori.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Olvastam egy ilyet:

You will need ~300MB of free memory to run the script and also to load the full (all) ipv4 and ipv6 maps.

Persze, ha megoldható csak a HU betöltése, akkor még akár jó is lehet. Az egész földgömb nem kell nekem...

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

1.0.1-es nftables-ben "javították" a sets/maps memóriafelhasználását bármit is jelentsen ez.

De ha csak a HU-t töltöd be az párszáz prefix. Nem hiszem hogy jelentős lenne a memóriafelhasználása.

Szerk: Látom a linkelt script-re írták hogy jelentős memória kell a futtatásához. A kernelbe betöltött map szerintem nem foglal sokat.

Ah. Szorri, a konkrét izéhez nem tudok hozzászólni (illetve nyilván tudnék, csak ahhoz előbb olvasni kéne, arra meg most nem fussa), erről a compatról meg lemaradtam, de szerintem engedd el, különbözik az nftables annyira, hogy ez csak sajtreszelő legyen, annyira viszont nem, hogy nagy fájdalom legyen beleszokni.