Versione del filtro a pacchetto nftables 0.9.2

Si è svolto rilascio del filtro dei pacchetti nftables 0.9.2, che si sta sviluppando come sostituto di iptables, ip6tables, arptables e ebtables grazie all'unificazione delle interfacce di filtraggio dei pacchetti per IPv4, IPv6, ARP e ponti di rete. Il pacchetto nftables comprende componenti del filtro dei pacchetti che operano in spazio utente, mentre a livello di kernel l'operatività è assicurata dal sottosistema nf_tables, presente nel kernel Linux dalla versione 3.13. Le modifiche necessarie per il rilascio di nftables 0.9.2 richiedono l'inclusione nel kernel Linux 5.3.

A livello del kernel è fornito solo un'interfaccia generale, indipendente dal protocollo specifico, che fornisce le funzioni di base per l'estrazione dei dati dai pacchetti, l'esecuzione di operazioni sui dati e la gestione del flusso. La logica di filtraggio e i gestori specifici per i protocolli vengono compilati in bytecode nello spazio utente, dopo di che questo bytecode viene caricato nel kernel tramite l'interfaccia Netlink ed eseguito in una speciale macchina virtuale simile ai BPF (Berkeley Packet Filters). Questo approccio consente di ridurre significativamente la dimensione del codice di filtraggio che opera a livello del kernel e di spostare tutte le funzioni di parsing delle regole e la logica di gestione dei protocolli nello spazio utente.

Novità principali:

  • La possibilità di controllare il numero di porta dall'intestazione del pacchetto di livello di trasporto indipendentemente dal tipo di protocollo del livello 4:

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

  • Supporto per il ripristino del tempo di vita di un set di elementi:

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

  • La possibilità di controllare singole opzioni (lsrr, rr, ssrr e ra) dai pacchetti IPv4:

    add rule x y ip option rr exists drop

    Per le opzioni di routing è possibile controllare i campi type, ptr, length e addr:

    aggiungi regola x y ip opzione rr tipo 1 elimina

  • Ora è possibile specificare prefissi di rete e intervalli di indirizzi nelle espressioni:

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

  • Supporto per l'uso di variabili nelle definizioni delle catene:

    definisci default_policy = accept
    aggiungi catena ip foo bar { tipo filtro hook input priority $default_policy }

  • La priorità della catena può ora essere specificata sia in forma numerica che simbolica:

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

    aggiungi tabella ip foo
    aggiungi catena ip foo bar { tipo filtro hook input priorità $prio; }
    aggiungi catena ip foo ber { tipo filtro hook input priorità $prionum; }
    aggiungi catena ip foo bor { tipo filtro hook input priorità $prioffset; }

  • Implementato supporto per il modulo synproxy. Ad esempio, per proteggere la porta TCP 8888 con synproxy, è possibile utilizzare il seguente insieme di regole:

    tabella ip x {
    catena y {
    tipo filtro hook prerouting priorità raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    catena z {
    tipo filtro hook forward priorità filter; policy accept;
    tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct state invalid elimina
    }
    }

  • Per determinare nella tabella conntrack le connessioni aggiuntive attese associate alla connessione corrente, applicabili in protocolli e scenari che richiedono l'instaurazione di più connessioni, ora è possibile definire politiche attraverso set di regole standard. Ad esempio, per definire le connessioni attese dopo una connessione al porto TCP 8888, per le successive connessioni al porto 5432, è possibile specificare le seguenti regole:

    table x {
    ct expectation myexpect {
    protocol tcp
    dport 5432
    timeout 1h
    size 12
    l3proto ip
    }

    chain input {
    type filter hook input priority 0;
    ct state new tcp dport 8888 ct expectation set myexpect
    ct state established,related counter accept
    }
    }

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster