Lanzamiento del filtro de paquetes nftables 0.9.2

Se realizó lanzamiento del filtro de paquetes nftables 0.9.2, que se está desarrollando como un reemplazo de iptables, ip6tables, arptables y ebtables a través de 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 operan en el espacio de usuario, mientras que a nivel del núcleo, 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 el funcionamiento de la versión nftables 0.9.2 se incluyen en el núcleo de Linux 5.3.

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:

  • Posibilidad de verificar el número de puerto del encabezado del paquete de nivel de transporte independientemente del tipo de protocolo de nivel 4:

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

  • Soporte para la recuperación del tiempo de vida de un conjunto de elementos:

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

  • Posibilidad de verificar opciones individuales (lsrr, rr, ssrr y ra) de paquetes IPv4:

    add rule x y ip option rr exists drop

    Para las opciones de enrutamiento, se puede verificar los campos type, ptr, length y addr:

    add rule x y ip option rr type 1 drop

  • En las expresiones ahora es permitido especificar prefijos de red y rangos de direcciones:

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

  • Soporte para el uso de variables en las definiciones de cadenas:

    define default_policy = accept
    add chain ip foo bar { type filter hook input priority filter; policy $default_policy }

  • La especificación de la prioridad de la cadena ahora puede hacerse tanto en forma numérica como simbólica:

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

    add table ip foo
    add chain ip foo bar { type filter hook input priority $prio; }
    add chain ip foo ber { type filter hook input priority $prionum; }
    add chain ip foo bor { type filter hook input priority $prioffset; }

  • Se ha implementado el soporte para el módulo synproxy. Por ejemplo, para proteger el puerto TCP 8888 con synproxy se pueden utilizar el siguiente conjunto de reglas:

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

    chain z {
    tipo de filtro gancho forward prioridad filtro; política aceptar;
    tcp dport 8888 ct estado inválido, no rastreado synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct estado inválido drop
    }
    }

  • Ahora se pueden definir políticas a través de conjuntos de reglas estándar para determinar en la tabla conntrack conexiones adicionales esperadas relacionadas con la conexión actual, que se aplican en protocolos y escenarios que requieren establecer múltiples conexiones. Por ejemplo, para determinar conexiones esperadas posteriores al puerto TCP 8888 hacia el puerto 5432, se pueden especificar las siguientes reglas:

    tabla x {
    ct expectativa myexpect {
    protocolo tcp
    dport 5432
    tiempo de espera 1h
    tamaño 12
    l3proto ip
    }

    cadena de entrada {
    tipo de filtro gancho input prioridad 0;
    ct estado nuevo tcp dport 8888 ct expectativa set myexpect
    ct estado establecido, relacionado contador aceptar
    }
    }

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