Rilascio del filtro pacchetti nftables 1.1.6

È stata pubblicata la versione 1.1.6 del filtro pacchetti nftables, che unifica le interfacce di filtraggio dei pacchetti per IPv4, IPv6, ARP e bridge di rete (destinato a sostituire iptables, ip6tables, arptables ed ebtables). È stata pubblicata contemporaneamente anche la versione 1.3.1 della libreria correlata libnftnl, che fornisce un'API a basso livello per interagire con il sottosistema nf_tables.

Nel pacchetto nftables sono inclusi componenti del filtro a pacchetti che operano nello spazio utente, mentre a livello di kernel l'operazione è gestita dal sottosistema nf_tables, incluso nel kernel di Linux a partire dalla versione 3.13. A livello di kernel viene fornito solo un'interfaccia generale, indipendente dal protocollo specifico e che offre funzioni di base per l'estrazione dei dati dai pacchetti, l'esecuzione di operazioni sui dati e la gestione del flusso.

Le regole di filtraggio e i gestori specifici per i protocolli vengono compilati in bytecode nello spazio utente, dopodiché questo bytecode viene caricato nel kernel tramite l'interfaccia Netlink e viene eseguito nel kernel in una sezione macchina virtuale, simile a BPF (Berkeley Packet Filters). Questo approccio consente di ridurre significativamente la dimensione del codice di filtraggio che opera a livello di kernel e di spostare tutte le funzioni di parsing delle regole e di logica di operazione con i protocolli nello spazio utente.

Variazioni principali:

  • È garantito il supporto completo per i modelli di tunnel leggeri, come vxlan, geneve ed erspan: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : «t1», 10.141.10.13 : «t2» } fwd to erspan1 } } Prima di caricare le regole, è necessario creare l'interfaccia di rete erspan1: ip link add dev erspan1 type erspan external
  • È stato aggiunto il supporto per i nomi delle interfacce di rete con maschere negli handler netdev, per esempio, per aggiungere una chain di base nel filtro del traffico in entrata per tutti i dispositivi vlan si può specificare: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
  • Nei sistemi con kernel Linux 6.18+ è stato implementato il supporto per la trasmissione di frame L2 nell'interfaccia dei bridge di rete per l'elaborazione locale, per esempio, per inviare allo stack IP tutti i frame Ethernet per l'indirizzo MAC de:ad:00:00:be:ef si può specificare: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
  • È stata aggiunta una nuova infrastruttura per il fuzzing testing utilizzando gli strumenti afl++ (american fuzzy lop++), che può essere attivata durante la fase di build tramite «.\/configure —with-fuzzer».

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