Vydanie paketového filtra nftables 0.9.4

Zverejnené vydanie paketového filtra nftables 0.9.4, ktorý sa vyvíja ako náhrada za iptables, ip6table, arptables a ebtables, pričom zjednodušuje rozhrania na filtrovanie paketov pre IPv4, IPv6, ARP a sieťové mosty. Balík nftables obsahuje komponenty filtrovania paketov fungujúce v užívateľskom priestore, zatiaľ čo na úrovni jadra túto prácu zabezpečuje subsystém nf_tables, ktorý je súčasťou jadra Linux od verzie 3.13. Potrebné zmeny pre vydanie nftables 0.9.4 sú zahrnuté v budúcej vetve jadra. Linux 5.6.

Na úrovni jadra sa poskytuje iba všeobecné rozhranie, nezávislé od konkrétneho protokolu, ktoré ponúka základné funkcie extrakcie údajov z paketov, vykonávania operácií s údajmi a správy toku. Pravidlá filtrácie a špecifické pre protokoly spracovateľské moduly sa priamo kompilujú do bajtkódu v užívateľskom priestore, ktorý sa potom načítava do jadra cez rozhranie Netlink a vykonáva v jadre v špeciálnej virtuálnej máquina pripomínajúcej BPF (Berkeley Packet Filters). Tento prístup umožňuje výrazne znížiť veľkosť kódu filtrácie bežiaceho na úrovni jadra a preniesť všetky funkcie analýzy pravidiel a logiky práce s protokolmi do užívateľského priestoru.

Hlavné novinky:

  • Podpora rozsahov v pripojeniach (concatenation, špecifické kombinácie adries a portov, ktoré uľahčujú porovnávanie). Napríklad pre súbor „whitelist“, ktorého prvky sú pripojením, označenie príznaku „interval“ naznačuje, že súbor môže zahŕňať rozsahy v pripojení (pre pripojenie „ipv4_addr . ipv4_addr . inet_service“ bolo predtým možné uviesť presné zhodnosti vo forme „192.168.10.35 . 192.68.11.123 . 80“, ale teraz možno uviesť skupiny adries „192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80“):

    table ip foo {
    nastaviť bielu listinu {
    type ipv4_addr . ipv4_addr . inet_service
    flags interval
    elements = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
    }

    chain bar {
    typ filter háčik predspracovanie priorita filter; politika zamietnuť;
    ip saddr . ip daddr . tcp dport @whitelist accept
    }
    }

  • V súboroch a mapách je zabezpečená možnosť použitia direktívy „typeof“, ktorá určuje formát prvku pri porovnávaní.
    Napríklad:

    table ip foo {
    nastaviť bielu listinu {
    typeof ip saddr
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain bar {
    typ filter háčik predspracovanie priorita filter; politika zamietnuť;
    ip daddr @whitelist accept
    }
    }

    table ip foo {
    map addr2mark {
    typeof ip saddr : meta mark
    elements = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Pridaná možnosť používania pripojení v NAT-pripojeniach, čo umožňuje uviesť adresu a port pri definovaní NAT-transformácií na základe máp alebo pomenovaných súborov:

    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

  • Podpora hardvérového urýchlenia s presunom niektorých operácií filtrovania na plecia sieťovej karty. Urýchlenie sa aktivuje prostredníctvom nastroja ethtool („ethtool -K eth0 hw-tc-offload on“), a potom sa aktivuje v nftables pre hlavnú reťazec pomocou príznaku „offload“. Pri použití jadra Linux 5.6 sa podporuje hardvérové urýchlenie pre porovnávanie polí hlavičky a kontrolu prichádzajúceho rozhrania v kombinácii s príjmom, odmietnutím, duplikovaním (dup) a presmerovaním (fwd) paketov. V nižšie uvedenom príklade sa operácie odmietania paketov prichádzajúcich z adresy 192.168.30.20 vykonávajú na úrovni sieťovej karty, bez posielania paketov do jadra:

    # cat file.nft
    table netdev x {
    chain y {
    typ filtrácie hák ingresa zariadenia eth0 priorita 10; vlajky offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Zlepšené informovanie o mieste chyby v pravidlách.

    # nft delete rule ip y z handle 7
    Chyba: Nepodarilo sa spracovať pravidlo: Neexistuje taký súbor alebo adresár
    vymazať pravidlo ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Chyba: Nepodarilo sa spracovať pravidlo: Neexistuje taký súbor alebo adresár
    vymazať pravidlo ip x x handle 7
    ^

    # nft delete table twst
    Chyba: Neexistuje taký súbor alebo adresár; chceli ste povedať tabuľku ‘test’ v rodine ip?
    vymazať tabuľku twst
    ^^^^

    V prvom príklade je ukázané, že tabuľa „y“ chýba v systéme, v druhom, že chýba spracovateľ „7“, a v treťom, že sa zobrazí nápoveda k preklepu pri zadávaní názvu tabuľky.

  • Pridaná podpora na kontrolu slave-interface pomocou určenia „meta sdif“ alebo „meta sdifname“:

    … meta sdifname vrf1 …

  • Pridaná podpora operácie posúvania vpravo alebo vľavo. Napríklad na posunutie existujúcej značky paketu vľavo o 1 bit a nastavenie nižšieho bitu na 1:

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

  • Implementovaná možnosť „-V“ na zobrazenie rozšírených informácií o verzii.

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

  • Možnosti príkazového riadku musia byť teraz nevyhnutne uvedené pred príkazmi. Napríklad, musíte uviesť „nft -a list ruleset“, zatiaľ čo spustenie „nft list ruleset -a“ spôsobí zobrazenie chyby.

    Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster