anonymous@RULINUX.NET~# Last login: 2024-11-23 00:35:51
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

Первый пригодный для пользователей релиз пакетного фильтра Nftables

Проект Netfilter представил первый ориентированный на конечных пользователей выпуск пакетного фильтра Nftables 0.099, а также релиз сопутствующей библиотеки libnftnl 1.0.0, предоставляющей низкоуровневый API для взаимодействия с подсистемой nf_tables. Напомним, что подсистема nf_tables включена в состав ядра Linux 3.13, а в рамках пакета Nftables поставляются компоненты, работающие в пространстве пользователя.


Выпуск Nftables 0.099 уже не позиционируется как альфа-версия и отмечен как пригодный для персонального использования, но пока не рекомендуется для промышленного применения. Сообщается, что до выпуска Nftables 0.1 не исключено незначительное изменение грамматики правил и внесение нарушающих совместимость изменений. Одновременно анонсирован пакет nftables-plus 0.099, который включает в себя дополнительные патчи для улучшения удобства использования.


В рамках проекта Nftables развивается новая реализация пакетного фильтра, унифицирующая интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов, и нацеленная на замену iptables, ip6table, arptables и ebtables. Для реализации поставленной задачи Nftables предоставляет на уровне ядра лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. В работе используются уже существующие типовые универсальные компоненты инфраструктуры Netfilter, в том числе применяются существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога.


Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Например, если в iptables при выполнении в правилах сопоставления номера входящего TCP-порта использовалась специальная предопределённая функция модуля ядра xt_tcpudp, то в nftables производится формирование инструкции "прочитать в регистр 2 байта из определённой позиции заголовка пакета и сравнить содержимое регистра с указанным значением".


Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя. Например, для реализации поддержки фильтрации нового протокола все изменения могут быть внесены в пользовательском пространстве без обновления кода ядра.


Для формирования правил фильтрации предлагается использовать утилиту nft, которая проверяет корректность правил и транслирует их в байткод. Правила могут как добавляться инкрементально, так и загружаться целиком из файла на диске. Синтаксис правил не похож на iptables и отличается использованием иерархических блочных структур вместо линейной схемы. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Поддерживается словарный маппинг (хеши), поиск по наборам правил (sets), диапазоны значений (можно определять подсети), средства для отслеживания соединений, NAT, ведение лога. Для обеспечения совместимости с правилами iptables/ip6tables предоставляется специальная прослойка.
Пример правил:

text

table filter {
        chain input {
                 table filter hook input priority 0;
                 ct state established accept
                 ct state related accept
                 meta iif lo accept
                 tcp dport ssh counter packets 0 bytes 0 accept
                 counter packets 5 bytes 5 log drop
        }

        chain output {
                 table filter hook output priority 0;
                 ct state established accept
                 ct state related accept
                 meta oif lo accept
                 ct state new counter packets 0 bytes 0 accept
        }
}
 


Цельнотянуто с \url[Опеннет]{opennet.ru}

>>> Подробнее

Dr.uid(*) (2014-01-22 20:01:04)
Отредактировано Dr.uid по причине разметка как обычно глючит...
Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0

Подтверждено: SystemV(*) (2014-01-22 20:14:23)

[Ответить на это сообщение]

avatar
Скрыть

Re:Первый пригодный для пользователей релиз пакетного фильтра Nftables

А когда добавят возможность фильтровать пакеты от конкретных приложений (да-да, прям как в винде)?

anonymous(*)(2014-01-23 12:28:58)

avatar
Скрыть

Re:Первый пригодный для пользователей релиз пакетного фильтра Nftables

> как в винде

разве в iptables --pid-owner только в винде работает?

anonymous(*)(2014-01-23 13:01:52)

avatar
Скрыть

Re:Первый пригодный для пользователей релиз пакетного фильтра Nftables

Я хочу красивый гуй! И чтобы окошко выскакивало, когда приложение хочет в интернет. И чтобы можно было разрешить ему ходить на http://microsoft.com и запретить на http://kernel.org.

anonymous(*)(2014-01-23 13:09:09)
Отредактировано anonymous по причине "не указана"
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!