Az nftables 0.9.4 csomagszűrő kiadása

Megjelent csomagszűrő kiadása nftables 0.9.4, amely az iptables, ip6tables, arptables és ebtables helyettesítésére fejlődik, a csomagszűrési interfészek egységesítésével IPv4, IPv6, ARP és hálózati hidak számára. Az nftables csomagba tartoznak a felhasználói térben működő csomagszűrő összetevők, míg a kernel szintjén a nf_tables alrendszer végzi a munkát, amely a Linux kernelben 3.13 kiadás óta elérhető. Az nftables 0.9.4 kiadásához szükséges módosítások a jövőbeli kernel ágba kerültek. Linux 5.6.

A kernel szintjén csupán egy általános interfész érhető el, amely független a konkrét protokoltól, és alapvető funkciókat nyújt az adatok csomagokból való kinyerésére, adatokkal való műveletek végrehajtására és az áramlás kezelésére. A szűrési szabályok és a protokoll-specifikus feldolgozók közvetlenül felhasználói térben byte-kódra vannak lefordítva, amelyet ezután a Netlink interfész segítségével töltenek be a kernelbe, és egy speciális virtuális gépben hajtanak végre a kernelben, amely hasonlít a BPF (Berkeley Packet Filter) működésére. Ez a megközelítés jelentősen csökkenti a kernel szintjén működő szűrési kód méretét, valamint a szabályok parsingját és a protokollokkal való logikai munkát a felhasználói térbe helyezi.

Főbb újítások:

  • Tartományok támogatása a kapcsolatokban (concatenation, bizonyos címek és portok összekapcsolása, amelyek megkönnyítik a párhuzamosítást). Például a "whitelist" halmaz esetén, amelynek elemei egy összekapcsolás, a "interval" jelző megadása arra utal, hogy a halmaz tartalmazhat tartományokat a kapcsolódásban (az "ipv4_addr . ipv4_addr . inet_service" összekapcsolás esetén korábban pontos egyezéseket lehetett megadni, mint "192.168.10.35 . 192.68.11.123 . 80", most azonban csoportos címeket is lehet megadni, például "192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80"):

    tábla ip foo {
    halmaz whitelist {
    típus ipv4_addr . ipv4_addr . inet_service
    jelzők interval
    elemek = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
    }

    lánc bar {
    típus szűrő hook prerouting priority filter; politikai drop;
    ip saddr . ip daddr . tcp dport @whitelist accept
    }
    }

  • A halmazokban és a map-listákban biztosított a "typeof" direktíva használatának lehetősége, amely meghatározza az elemek formátumát a párhuzamosításhoz.
    Például:

    tábla ip foo {
    halmaz whitelist {
    typeof ip saddr
    elemek = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    lánc bar {
    típus szűrő hook prerouting priority filter; politikai drop;
    ip daddr @whitelist accept
    }
    }

    tábla ip foo {
    map addr2mark {
    typeof ip saddr : meta mark
    elemek = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Hozzáadva a NAT-kötésekben való csatlakozások használatának lehetősége, amely lehetővé teszi az IP-cím és a port megadását NAT-transzformációk meghatározásakor map-listák vagy névleges készletek alapján:

    nft add rule ip nat pre dnat ip addr . port to ip saddr map { 1.1.1.1 : 2.2.2.2 . 30 }

    nft add map ip nat destinations { type ipv4_addr . inet_service : ipv4_addr . inet_service \\; }
    nft add rule ip nat pre dnat ip addr . port to ip saddr . tcp dport map @destinations

  • Hardveres gyorsítás támogatása, amely lehetővé teszi bizonyos szűrési műveletek áthelyezését a hálózati kártya terheire. A gyorsítás az ethtool segédeszközön keresztül kapcsolható be („ethtool -K eth0 hw-tc-offload on”), majd aktiválható a nftables-ben az alap lánc számára az „offload” jelző segítségével. A Linux 5.6-os kernel használata esetén hardveres gyorsítás érhető el a fejlécmezők és a bejövő interfész ellenőrzésére, összekapcsolva a csomagok befogásával, eldobásával (dup) és átirányításával (fwd). Az alábbi példában a 192.168.30.20 címről érkező csomagok eldobási műveletei a hálózati kártya szintjén történnek, anélkül, hogy a csomagok eljutnának a kernelhez:

    # cat file.nft
    table netdev x {
    chain y {
    type filter hook ingress device eth0 priority 10; flags offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Javítva lett a hibahely értesítés a szabályokban.

    # nft delete rule ip y z handle 7
    Hiba: A szabály feldolgozása nem sikerült: Nincs ilyen fájl vagy könyvtár
    delete rule ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Hiba: A szabály feldolgozása nem sikerült: Nincs ilyen fájl vagy könyvtár
    delete rule ip x x handle 7
    ^

    # nft delete table twst
    Hiba: Nincs ilyen fájl vagy könyvtár; talán a táblát ‘test’-re gondoltad az ip családban?
    delete table twst
    ^^^^

    Az első példában látható, hogy a „y” tábla hiányzik a rendszerből, a második példában, hogy a „7” kezelő hiányzik, a harmadik pedig, hogy a táblázat nevének megadása során elírásra vonatkozó javaslatot ad.

  • Hozzáadva a slave-interface ellenőrzésének támogatása a „meta sdif” vagy „meta sdifname” megadásával:

    … meta sdifname vrf1 …

  • Hozzáadva a jobbra vagy balra történő eltolás művelet támogatása. Például, hogy egy meglévő csomagmárkát balra 1 bitre toljun és a legkisebb bitet 1-re állítsuk:

    … meta mark set meta mark lshift 1 or 0x1 …

  • Megvalósítva a „-V” opció a verziók kiterjesztett információjának megjelenítéséhez.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: readline
    json: yes
    minigmp: no
    libxtables: yes

  • A parancssori opciókat mostantól kötelezően a parancsok előtt kell megadni. Például az „nft -a list ruleset” megadása szükséges, míg az „nft list ruleset -a” végrehajtása hibaüzenetet eredményez.

    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