Lanzamiento del filtro de paquetes nftables 0.9.3

Publicado lanzamiento del filtro de paquetes nftables 0.9.3, en desarrollo como un reemplazo de iptables, ip6tables, arptables y ebtables mediante la unificación de las interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red. El paquete nftables incluye componentes de filtrado de paquetes que funcionan en el espacio de usuario, mientras que a nivel del kernel, la funcionalidad es proporcionada por el subsistema nf_tables, que forma parte del núcleo de Linux desde la versión 3.13. Los cambios necesarios para la versión nftables 0.9.3 están incluidos en la futura rama del núcleo de Linux 5.5.

A nivel del núcleo se proporciona solo una interfaz general, independiente del protocolo específico y que ofrece funciones básicas para extraer datos de paquetes, realizar operaciones con los datos y gestionar el flujo. La lógica de filtrado y los controladores específicos del protocolo se compilan en bytecode en el espacio de usuario, después de lo cual este bytecode se carga en el núcleo mediante la interfaz Netlink y se ejecuta en una máquina virtual especial similar a BPF (Berkeley Packet Filters). Este enfoque permite reducir significativamente el tamaño del código de filtrado que opera a nivel del núcleo y trasladar todas las funciones de análisis de reglas y lógica de trabajo con protocolos al espacio de usuario.

Novedades principales:

  • Soporte para la coincidencia de paquetes por tiempo. Se pueden definir tanto rangos de tiempo y fechas en los que se activará la regla, así como configurar su activación en días específicos de la semana. También se ha añadido una nueva opción «-T» para mostrar el tiempo epoch en segundos.

    meta time "2019-12-24 16:00" — "2020-01-02 7:00"
    meta hour "17:00" — "19:00"
    meta day "Fri"

  • Soporte para la recuperación y almacenamiento de etiquetas SELinux (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Soporte para listas de mapas synproxy, que permiten definir más de una regla en el backend.

    table ip foo {
    synproxy https-synproxy {
    mss 1460
    wscale 7
    timestamp sack-perm
    }

    synproxy other-synproxy {
    mss 1460
    wscale 5
    }

    chain pre {
    tipo de filtro gancho prerouting prioridad raw; política aceptar;
    tcp dport 8888 tcp flags syn notrack
    }

    chain bar {
    tipo de filtro gancho forward prioridad filtro; política aceptar;
    ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • Posibilidad de eliminar dinámicamente elementos de conjuntos set de las reglas de procesamiento de paquetes.

    nft add rule … delete @set5 { ip6 saddr . ip6 daddr }

  • Soporte para la coincidencia de VLAN por ID y protocolo, definidos en los metadatos de la interfaz del puente de red;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Opción «-t» («—terse») para excluir elementos de conjuntos set al mostrar reglas. Al ejecutar «nft -t list ruleset» se mostrará:

    tabla ip x {
    set y {
    type ipv4_addr
    }
    }

    Y al ejecutar «nft list ruleset»

    tabla ip x {
    set y {
    type ipv4_addr
    elements = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Posibilidad de especificar más de un dispositivo en las cadenas netdev (solo funciona con el núcleo 5.5) para combinar reglas de filtrado típicas.

    add table netdev x
    add chain netdev x y { \
    type filter hook ingress devices = { eth0, eth1 } priority 0;
    }

  • Posibilidad de añadir descripciones de tipos de datos.

    # nft describe ipv4_addr
    datatype ipv4_addr (dirección IPv4) (basetype integer), 32 bits

  • Posibilidad de construir una interfaz CLI con la biblioteca linenoise en lugar de libreadline.

    ./configure —with-cli=linenoise

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