Выпуск пакетных фильтров nftables 0.9.8 и iptables 1.8.7

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Янв-2021 20:30

Опубликован выпуск пакетного фильтра nftables 0.9.8, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.8 изменения включены в состав ядра Linux 5.11-rc1.
На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно правила фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.
Основные новшества:
  • Появилась полноценная поддержка проверки содержимого полей в заголовках ICMP-пакетов.
    ... icmp type { echo-reply, echo-request} icmp id 1 icmp sequence 2
       ... icmpv6 type packet-too-big icmpv6 mtu 1280
  • Добавлена возможность сопоставления с использованием сырых значений опций TCP, выделяемых в формате "@kind,offset,length".
    ... tcp option @42,16,4
  • Добавлена возможность проверки наличия в пакете любых опций TCP.
    ... tcp option 42 exists
  • Предоставлена возможность отклонения трафика из цепочки "ingress", обрабатываемой на том же уровне, что ingress-обработчик в цепочке netdev (hook ingress), т.е. на стадии когда драйвер передаёт пакет сетевому стеку ядра.
    table netdev x {
             chain y {
                   type filter hook ingress device eth0 priority 0; policy accept;
                   tcp dport 22 reject with tcp reset
             }
         }
  • Проведена оптимизация генерации байткода для сопоставления префиксов. Например, в результате для следующего правила будет сгенерированы две инструкции место трёх:
    # nft --debug=netlink x y ip saddr 192.168.2.0/24
       ip
         [ payload load 3b @ network header + 12 => reg 1 ]
         [ cmp eq reg 1 0x0002a8c0 ]
  • Добавлена возможность указания нескольких выражений для каждого элемента set-списков. Необходимая функциональность появилась начиная с ядра Linux 5.11-rc1. Например, в примере ниже для динамического списка в выражении фигурирует ratelimit и число пакетов для каждого элемента списка:
    table ip x {
           set y {
                   type ipv4_addr
                   size 65535
                   flags dynamic,timeout
                   timeout 1h
           }
           chain z {
                   type filter hook output priority filter; policy accept;
                   update @y { ip daddr limit rate 1/second counter }
           }
      }
    Также допускается использование комбинированных выражений со статически определяемыми set-списками:
    table ip x {
           set y {
                   type ipv4_addr
                   limit rate 1/second counter
                   elements = { 1.1.1.1, 4.4.4.4, 5.5.5.5 }
           }
           chain y {
                   type filter hook output priority filter; policy accept;
                   ip daddr @y
           }
      }
    В данном примере выражения с ratelimit и счётчиком будут запущены при добавлении нового элемента в список, например, через "nft add element x y { 6.6.6.6 }".
  • В CLI-интерфейс "nft -i" добавлена поддержка редактирования командной строки при помощи библиотеки editline вместо readline. Для работы требуется сборка с опцией "./configure --with-cli=editline".
Дополнительно доступен новый выпуск классического инструментария для управления пакетным фильтром iptables 1.8.7, развитие которого в основном сосредоточено на компонентах iptables-nft и ebtables-nft, предоставляющих утилиты с тем же синтаксисом командной строки, как в iptables и ebtables, но транслирующих полученные правила в байткод nf_tables.
В iptables-nft повышена производительность сопоставлений префиксов IP- и MAC-адресов и обеспечен вывод дампов правил в цепочках, определённых пользователем, в неизменном лексическом порядке. В ebtables-nft устранена неработоспособность переименования пользовательских цепочек. Переработан и унифицирован код парсинга MAC-адресов.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_nftables, #_netfilter, #_firewall
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 10-Май 20:27
Часовой пояс: UTC + 5