Lanzamiento del filtro de paquetes nftables 1.0.2

Se ha publicado la versión del filtrador de paquetes nftables 1.0.2, que unifica las interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red (destinada a reemplazar iptables, ip6table, arptables y ebtables). Los cambios necesarios para funcionar en la versión 1.0.2 de nftables se han incluido en el núcleo de Linux 5.17-rc.

El paquete nftables incluye componentes del filtrador de paquetes que funcionan en el espacio de usuario, mientras que a nivel del núcleo, el trabajo es realizado por el subsistema nf_tables, incluido en el núcleo de Linux desde la versión 3.13. A nivel del núcleo, solo se proporciona una interfaz general, independiente del protocolo específico, que ofrece funciones básicas para extraer datos de paquetes, realizar operaciones con datos y gestionar flujos.

Las reglas de filtrado y los controladores específicos del protocolo se compilan en bytecode en el espacio de usuario, que luego se carga en el núcleo a través de la interfaz Netlink y se ejecuta en el núcleo en un espacio especial una máquina virtual, similar a BPF (Berkeley Packet Filters). Este enfoque permite reducir significativamente el tamaño del código de filtrado que opera a nivel de núcleo y trasladar todas las funciones de análisis de reglas y la lógica de trabajo con protocolos al espacio de usuario.

Novedades principales:

  • Se ha añadido un modo de optimización de reglas, que se activa mediante la nueva opción «-o» («--optimize»), que se puede combinar con la opción «--check» para verificar y optimizar los cambios en el archivo de reglas sin cargarlo realmente. La optimización permite combinar reglas similares, por ejemplo, las reglas: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 accept ip saddr 1.1.1.1 ip daddr 2.2.2.2 accept ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    serán combinadas en meta iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.5 } accept ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : accept, 2.2.2.2 . 3.3.3.3 : drop }

    Ejemplo de uso: # nft -c -o -f ruleset.test Combinando: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 counter accept en: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • En las listas set, se ha implementado la capacidad de especificar opciones ip y tcp, así como chunks de sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Se ha añadido soporte para las opciones TCP fastopen, md5sig y mptcp.
  • Se ha añadido soporte para el uso en coincidencias del subtipo mp-tcp: tcp option mptcp subtype 1
  • Se ha optimizado el código de filtrado que opera en el lado del núcleo.
  • Para flowtable, se ha implementado soporte completo para el formato JSON.
  • Se ha proporcionado la capacidad de usar la acción «reject» en las operaciones de coincidencia de tramas Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster