rilascio del filtro dei pacchetti nftables, che è in fase di sviluppo come sostituto 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 filtraggio dei pacchetti che operano nello spazio utente, mentre la funzionalità a livello di kernel è fornita dal sottosistema nf_tables, che fa parte del kernel. Linux A partire dalla versione 3.13, le modifiche necessarie per il funzionamento di nftables 0.9.3 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 basata sul tempo. È possibile definire intervalli di data e ora per l'attivazione delle regole, nonché configurare l'attivazione in giorni specifici della settimana. È stata aggiunta anche una nuova opzione "-T" per visualizzare il tempo epocale in secondi.
meta tempo \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
meta ora \"17:00\" - \"19:00\"
Meta giorno \»Ven\» - Supporto per il ripristino e il salvataggio dei tag SELinux (secmark).
ct secmark imposta meta secmark
meta secmark set ct secmark - Supporto per mappe synproxy, che consente di definire più di una regola per backend.
tavolo ip foo {
synproxy https-synproxy {
mss 1460
scala w7
timestamp sack-perm
}synproxy altro-synproxy {
mss 1460
scala w5
}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 mappa { 192.168.1.0/24 : “https-synproxy”, 192.168.2.0/24 : “altro-synproxy” }
}
} - Possibilità di rimuovere dinamicamente elementi impostati dalle regole di elaborazione dei pacchetti.
nft aggiungi regola ... elimina @set5 { ip6 saddr . ip6 daddr}
- Supporto per la mappatura VLAN tramite ID e protocollo definiti nei metadati dell'interfaccia del bridge di rete;
meta ibrpvid 100
meta ibrvproto vlan - L'opzione "-t" ("--terse") esclude gli elementi impostati durante la visualizzazione delle regole. L'esecuzione di "nft -t list ruleset" produrrà il seguente output:
tabella ip x {
imposta y {
tipo ipv4_addr
}
}E con "nft list ruleset"
tabella ip x {
imposta y {
tipo ipv4_addr
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 tabella netdev x
aggiungi catena netdev xy { \
tipo filtro hook dispositivi di ingresso = { eth0, eth1 } priorità 0;
} - Possibilità di aggiungere descrizioni del tipo di dati.
# nft descrive ipv4_addr
tipo di dati ipv4_addr (indirizzo IPv4) (tipo di base intero), 32 bit - Possibilità di creare un'interfaccia CLI con la libreria linenoise anziché libreadline.
./configure --with-cli=linenoise
Fonte: opennet.ru
