nftables packet filter versione 0.9.3

pubblicato rilascio del filtro dei pacchetti nftables 0.9.3, sviluppato in sostituzione di iptables, ip6table, arptables ed ebtables unificando le interfacce di filtraggio dei pacchetti per IPv4, IPv6, ARP e bridge di rete. Il pacchetto nftables include componenti di filtro dei pacchetti eseguiti nello spazio utente, mentre il lavoro a livello di kernel è fornito dal sottosistema nf_tables, che fa parte del kernel Linux sin dalla versione 3.13. Le modifiche richieste per il funzionamento della versione 0.9.3 di nftables sono incluse nel prossimo ramo del kernel Linux 5.5.

Il livello del kernel fornisce solo un'interfaccia generica indipendente dal protocollo che fornisce funzioni di base per estrarre dati dai pacchetti, eseguire operazioni sui dati e controllo del flusso. La logica di filtraggio stessa e i gestori specifici del protocollo vengono compilati in bytecode nello spazio utente, dopodiché questo bytecode viene caricato nel kernel utilizzando l'interfaccia Netlink ed eseguito in una speciale macchina virtuale che ricorda BPF (Berkeley Packet Filters). Questo approccio consente di ridurre in modo significativo la dimensione del codice di filtraggio in esecuzione a livello di kernel e di spostare tutte le funzioni di analisi delle regole e della logica per lavorare con i protocolli nello spazio utente.

Principali innovazioni:

  • Supporto per la corrispondenza dei pacchetti in base all'ora. È possibile definire intervalli di date e ore in cui verrà attivata la regola e configurare l'attivazione nei singoli giorni della settimana. Aggiunta anche una nuova opzione "-T" per visualizzare il tempo epocale in secondi.

    meta ora \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    meta ora \"17:00\" - \"19:00\"
    meta giorno \"Ven\"

  • Supporto per il recupero e il salvataggio dei contrassegni SELinux (secmark).

    ct secmark imposta meta secmark
    meta secmark imposta ct secmark

  • Supporto per elenchi di mappe synproxy, che consentono di definire più di una regola per backend.

    tavolo ip foo {
    synproxy https-synproxy {
    mss 1460
    wscala 7
    timestamp licenziamento-perm
    }

    synproxy altro-synproxy {
    mss 1460
    wscala 5
    }

    catena pre {
    tipo filter hook prerouting priorità raw; la politica accetta;
    tcp dport 8888 flag tcp syn notrack
    }

    barra della catena {
    digitare il filtro agganciare il filtro di priorità in avanti; la politica accetta;
    ct stato non valido, nome synproxy non tracciato ip saddr map { 192.168.1.0/24: “https-synproxy”, 192.168.2.0/24: “other-synproxy” }
    }
    }

  • La possibilità di rimuovere dinamicamente gli elementi impostati dalle regole di elaborazione dei pacchetti.

    nft aggiungi regola ... elimina @set5 { ip6 saddr . ip6 papà}

  • Supporto per la mappatura VLAN tramite ID e protocollo definiti nei metadati dell'interfaccia del bridge di rete;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Opzione "-t" ("--terse") per escludere elementi di insiemi durante la visualizzazione delle regole. L'esecuzione di "nft -t list ruleset" restituirà:

    tabella ip x {
    imposta y {
    digitare indirizzo_ipv4
    }
    }

    E con "set di regole dell'elenco nft"

    tabella ip x {
    imposta y {
    digitare indirizzo_ipv4
    elementi = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Possibilità di specificare più di un dispositivo nelle catene netdev (funziona solo con il kernel 5.5) per combinare regole di filtraggio comuni.

    aggiungi la tabella netdev x
    aggiungi catena netdev xy { \
    tipo dispositivi di ingresso hook filtro = { eth0, eth1 } priorità 0;
    }

  • Possibilità di aggiungere descrizioni dei tipi di dati.

    #nft descrive ipv4_addr
    tipo di dati ipv4_addr (indirizzo IPv4) (numero intero del tipo base), 32 bit

  • Possibilità di creare un'interfaccia CLI con la libreria linenoise invece di libreadline.

    ./configure --with-cli=linenoise

Fonte: opennet.ru

Aggiungi un commento