Objavljen je paketni filtar nftables 0.9.4

Objavljeno izlazak paketskog filtera nftables 0.9.4, koji se razvija kao zamjena za iptables, ip6tables, arptables i ebtables kroz unifikaciju sučelja filtriranja paketa za IPv4, IPv6, ARP i mrežne mostove. U paket nftables uključeni su komponenti filtriranja paketa koji rade u korisničkom prostoru, dok na razini jezgre funkcionalnost osigurava podsustav nf_tables koji je dio Linux jezgre od verzije 3.13. Potrebne promjene za rad verzije nftables 0.9.4 uključene su u buduću granu jezgre. Linux 5.6.

Na razini jezgre pruža se samo opće sučelje, neovisno o konkretnom protokolu, koje nudi osnovne funkcije za ekstrakciju podataka iz paketa, izvođenje operacija s podacima i upravljanje protokom. Pravila filtriranja i specifični procesori za protokole kompiliraju se u bajtkod u korisničkom prostoru, nakon čega se taj bajtkod učitava u jezgru putem Netlink sučelja i izvršava se u jezgru u posebnoj virtualnoj mašini, sličnoj BPF-u (Berkeley Packet Filters). Ovaj pristup omogućava značajno smanjenje veličine koda filtriranja koji radi na razini jezgre i premještanje svih funkcija analize pravila i logike rada s protokolima u korisnički prostor.

Glavne novine:

  • Podrška za raspon u povezivanjima (concatenation, određene kombinacije adresa i portova, što pojednostavljuje usklađivanje). Na primjer, za skup 'whitelist', čiji su elementi povezivanje, specificiranje zastavice 'interval' značit će da skup može uključivati raspon u povezivanju (za povezivanje 'ipv4_addr . ipv4_addr . inet_service' prije se moglo nabrajati točne podudarnosti poput '192.168.10.35 . 192.68.11.123 . 80', a sada se mogu specificirati grupe adresa '192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80'):

    table ip foo {
    set whitelist {
    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 {
    type filter hook prerouting priority filter; policy drop;
    ip saddr . ip daddr . tcp dport @whitelist accept
    }
    }

  • U skupovima i map-listama omogućena je upotreba direktive 'typeof', koja definiše format elementa prilikom usklađivanja.
    Na primjer:

    table ip foo {
    set whitelist {
    typeof ip saddr
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    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 }
    }
    }

  • Dodana je mogućnost korištenja povezivanja u NAT povezivanju, što omogućuje specificiranje adrese i porta prilikom definiranja NAT transformacija na osnovi map-lista ili imenovanih skupova:

    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

  • Podrška za hardversko ubrzanje s delegiranjem nekih operacija filtriranja na mrežnu karticu. Ubrzanje se uključuje putem alata ethtool ('ethtool -K eth0 hw-tc-offload on'), nakon čega se aktivira u nftables za glavnu lanku pomoću zastavice 'offload'. Kada se koristi Linux jezgra 5.6, podržano je hardversko ubrzanje za usklađivanje polja zaglavlja i provjeru ulaznog sučelja u kombinaciji s primanjem, odbacivanjem, dupliciranjem (dup) i preusmjeravanjem (fwd) paketa. U donjem primjeru operacije odbacivanja paketa koji dolaze s adrese 192.168.30.20 izvršavaju se na razini mrežne kartice, bez prijenosa paketa jezgre:

    # cat file.nft
    table netdev x {
    lanac y {
    tip filtra hook ulazni uređaj eth0 prioritet 10; oznake offload;
    ip saddr 192.168.30.20 odbaci
    }
    }
    # nft -f file.nft

  • Poboljšano obavještavanje o mjestu greške u pravilima.

    # nft delete rule ip y z handle 7
    Greška: Nije moguće obraditi pravilo: Nema takvog datoteka ili direktorija
    izbriši pravilo ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Greška: Nije moguće obraditi pravilo: Nema takvog datoteka ili direktorija
    izbriši pravilo ip x x handle 7
    ^

    # nft delete table twst
    Greška: Nema takvog datoteka ili direktorija; jeste li možda mislili na tablicu 'test' u obitelji ip?
    izbriši tablicu twst
    ^^^^

    U prvom primjeru pokazano je da tablica 'y' nedostaje u sustavu, u drugom, da nedostaje handler '7', a u trećem, da se ispisuje savjet o tipografskoj grešci pri unosu imena tablice.

  • Dodana podrška za provjeru slave sučelja putem naznačavanja 'meta sdif' ili 'meta sdifname':

    … meta sdifname vrf1 …

  • Dodana podrška za operaciju pomicanja ulijevo ili udesno. Na primjer, za pomicanje postojeće oznake paketa ulijevo za 1 bit i postavljanje manjeg bita na 1:

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

  • Implementirana opcija '-V' za prikaz proširenih informacija o verziji.

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

  • Opcije naredbenog retka sada moraju biti navedene prije naredbi. Na primjer, trebate navesti 'nft -a list ruleset', dok će pokretanje 'nft list ruleset -a' rezultirati greškom.

    Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster