A nftables 0.9.2 csomagszűrő kiadása

Megvalósult a csomagszűrő kiadása nftables 0.9.2, amely az iptables, ip6tables, arptables és ebtables helyettesítésére fejlődik, az IPv4, IPv6, ARP és hálózati hídkapcsolók csomagszűrési interfészeinek egységesítése révén. Az nftables csomag tartalmazza a felhasználói térben működő csomagszűrő komponenseket, míg a kernel szintjén az nf_tables alrendszer biztosítja a működést, amely a Linux kernel 3.13-as kiadása óta része a rendszernek. Az nftables 0.9.2 működéséhez szükséges változtatások a Linux kernel 5.3-ba való beemelése.

A kernel szintjén csak egy általános interfész biztosított, amely független a konkrét protokolltól, és alapvető funkciókat nyújt az adatok csomagokból való kinyerésére, az adatokkal való műveletekre és az áramlás kontrollálására. Maguk a szűrési logika és a protokoll-specifikus kezelők a felhasználói térben bytekódra fordulnak, amelyet ezután a Netlink interfész segítségével betölt a kernelbe és egy BPF-hez (Berkeley Packet Filters) hasonló speciális virtuális gépen fut. Ez a megközelítés jelentősen csökkenti a kernel szintjén futó szűrési kód méretét, miközben az összes szabályfeldolgozással és protokollokkal kapcsolatos logikát a felhasználói térbe helyezi.

Főbb újítások:

  • A forgalmi szintű csomag fejlécében található portszám ellenőrzésének lehetősége függetlenül a 4. szint protokolltól:

    add rule x y ip protocol { tcp, udp } th dport 53

  • A változóelemek élettartamának visszaállításának támogatása:

    add element ip x y { 1.1.1.1 timeout 30s expires 15s }

  • Lehetőség van egyes opciók (lsrr, rr, ssrr és ra) ellenőrzésére az IPv4 csomagokban:

    add rule x y ip option rr exists drop

    Az irányítási opciók esetén ellenőrizhetők a type, ptr, length és addr mezők:

    add rule x y ip option rr type 1 drop

  • A kifejezésekben most már megengedett hálózati prefixek és címtartományok megadása:

    iifname ens3 snat to 10.0.0.0/28
    iifname ens3 snat to 10.0.0.1-10.0.0.15

  • A változók használatának támogatása a láncok definícióiban:

    define default_policy = accept
    add chain ip foo bar { type filter hook input priority filter; policy $default_policy }

  • A lánc prioritásának megadása most már numerikus és szimbolikus formában is történhet:

    define prio = filter
    define prionum = 10
    define prioffset = «filter — 150»

    add table ip foo
    add chain ip foo bar { type filter hook input priority $prio; }
    add chain ip foo ber { type filter hook input priority $prionum; }
    add chain ip foo bor { type filter hook input priority $prioffset; }

  • A synproxy modul támogatása megvalósítva. Például a 8888-as TCP port synproxy védelméhez a következő szabályhalmazok használhatók:

    table ip x {
    chain y {
    típus szűrő horgony prerouting prioritás nyers; politika elfogadása;
    tcp dport 8888 tcp flags syn notrack
    }

    lánc z {
    típus szűrő horgony forward prioritás szűrő; politika elfogadása;
    tcp dport 8888 ct állapot érvénytelen, nem nyomon követett synproxy mss 1460 \
    wscale 7 időbélyeg sack-perm ct állapot érvénytelen drop
    }
    }

  • A conntrack táblában a jelenlegi kapcsolathoz kapcsolódó várható további kapcsolatok meghatározásához, amelyeket több kapcsolat létrehozását igénylő protokollok és forgatókönyvek esetén alkalmaznak, most politikákat lehet definiálni a szokásos szabálykészletek által. Például, a TCP 8888-as portra várható további kapcsolatok meghatározásához a 5432-es portra a következő szabályokat lehet megadni:

    table x {
    ct elvárás myexpect {
    protokoll tcp
    dport 5432
    időkorlát 1h
    méret 12
    l3proto ip
    }

    lánc input {
    típus szűrő horgony input prioritás 0;
    ct állapot új tcp dport 8888 ct elvárás beállítása myexpect
    ct állapot megerősített, kapcsolódó számláló elfogadása
    }
    }

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster