filtro de pacotes nftables versão 1.0.2

Опубликован выпуск пакетного фильтра nftables 1.0.2, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). Необходимые для работы выпуска nftables 1.0.2 изменения включены в состав ядра Linux 5.17-rc.

O pacote nftables inclui componentes de filtro de pacotes que são executados no espaço do usuário, enquanto o trabalho no nível do kernel é fornecido pelo subsistema nf_tables, que faz parte do kernel Linux desde a versão 3.13. O nível do kernel fornece apenas uma interface genérica independente de protocolo que fornece funções básicas para extrair dados de pacotes, realizar operações de dados e controlar o fluxo.

As regras de filtragem e manipuladores específicos do protocolo são compilados em bytecode no espaço do usuário, após o qual esse bytecode é carregado no kernel usando a interface Netlink e executado no kernel em uma máquina virtual especial que lembra BPF (Berkeley Packet Filters). Essa abordagem permite reduzir significativamente o tamanho do código de filtragem em execução no nível do kernel e mover todas as funções de análise de regras e lógica para trabalhar com protocolos para o espaço do usuário.

Principais inovações:

  • Добавлен режим оптимизации правил, включаемый при помощи новой опции «-o» («—optimize»), которую можно комбинировать с опцией «—check» для проверки и оптимизации изменений в файле с набором правил без его фактической загрузки. Оптимизация позволяет объединять похожие правила, например, правила: 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

    будут объединены в 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 }

    Пример использования: # nft -c -o -f ruleset.test Merging: 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 into: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • В set-списках реализована возможность указания ip- и tcp-опций, а также chunk-ов 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 }
  • Добавлена поддержка TCP-опций fastopen, md5sig и mptcp.
  • Добавлена поддержка использования в сопоставлениях подтипа mp-tcp: tcp option mptcp subtype 1
  • Улучшен код фильтрации, работающий на стороне ядра.
  • Для flowtable реализована полная поддержка формата JSON.
  • Предоставлена возможность использования действия «reject» в операциях сопоставления Ethernet-кадров. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

Fonte: opennet.ru

Adicionar um comentário