Lanzamiento del filtro de paquetes nftables 0.9.3

publicado liberación del filtro de paquetes nftables 0.9.3, desarrollándose como un reemplazo de iptables, ip6table, arptables y ebtables al unificar interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red. El paquete nftables incluye componentes de filtrado de paquetes que se ejecutan en el espacio del usuario, mientras que el trabajo a nivel del kernel lo proporciona el subsistema nf_tables, que ha sido parte del kernel de Linux desde la versión 3.13. Los cambios necesarios para que funcione la versión nftables 0.9.3 se incluyen en la próxima rama del kernel de Linux 5.5.

El nivel del kernel proporciona solo una interfaz genérica independiente del protocolo que proporciona funciones básicas para extraer datos de paquetes, realizar operaciones de datos y control de flujo. La lógica de filtrado en sí y los controladores específicos del protocolo se compilan en un código de bytes en el espacio del usuario, después de lo cual este código de bytes se carga en el kernel usando la interfaz Netlink y se ejecuta en una máquina virtual especial que recuerda a BPF (Berkeley Packet Filters). Este enfoque le permite reducir significativamente el tamaño del código de filtrado que se ejecuta a nivel del kernel y mover todas las funciones de reglas de análisis y lógica para trabajar con protocolos al espacio del usuario.

Principales novedades:

  • Soporte para hacer coincidir paquetes por tiempo. Puede definir rangos de tiempo y fechas en los que se activará la regla y configurar la activación en días individuales de la semana. También se agregó una nueva opción "-T" para mostrar el tiempo de época en segundos.

    hora meta \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    hora meta \"17:00\" - \"19:00\"
    meta día \"viernes\"

  • Soporte para recuperar y guardar marcas SELinux (secmark).

    ct marca secundaria establecer meta marca secundaria
    meta secmark establecer ct secmark

  • Soporte para listas de mapas synproxy, lo que le permite definir más de una regla por backend.

    tabla ip foo {
    synproxy https-synproxy {
    ms 1460
    escala 7
    marca de tiempo saco-perm
    }

    synproxy otro-synproxy {
    ms 1460
    escala 5
    }

    cadena pre {
    escriba el gancho de filtro prioridad de enrutamiento previo sin procesar; aceptar política;
    tcp dport 8888 tcp banderas sin notrack
    }

    barra de cadena {
    tipo filtro gancho filtro de prioridad directa; aceptar política;
    estado de ct no válido, nombre de synproxy sin seguimiento ip saddr map { 192.168.1.0/24: “https-synproxy”, 192.168.2.0/24: “other-synproxy” }
    }
    }

  • La capacidad de eliminar dinámicamente elementos establecidos de las reglas de procesamiento de paquetes.

    nft agregar regla... eliminar @set5 { ip6 saddr. papá ip6}

  • Soporte para mapeo de VLAN por ID y protocolo definido 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 al mostrar reglas. Al ejecutar "nft -t list conjunto de reglas" se obtendrá:

    IP de la tabla x {
    establecer y {
    escriba ipv4_addr
    }
    }

    Y con "conjunto de reglas de lista nft"

    IP de la tabla x {
    establecer y {
    escriba ipv4_addr
    elementos = {192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34}
    }
    }

  • Capacidad para especificar más de un dispositivo en cadenas netdev (funciona solo con el kernel 5.5) para combinar reglas de filtrado comunes.

    agregar tabla netdev x
    agregar cadena netdev xy { \
    escriba dispositivos de ingreso de gancho de filtro = { eth0, eth1 } prioridad 0;
    }

  • Posibilidad de agregar descripciones de tipos de datos.

    #nft describe ipv4_addr
    tipo de datos ipv4_addr (dirección IPv4) (tipo base entero), 32 bits

  • Capacidad para crear una interfaz CLI con la biblioteca linenoise en lugar de libreadline.

    ./configure --with-cli=linenoise

Fuente: opennet.ru

Añadir un comentario