LINUX.ORG.RU

Разработчики Netfilter предоставили замену iptables

 ,


0

0

18 марта был представлен первый публичный выпуск проекта nftables, новой реализации пакетного фильтра для Linux, идущего на смену iptables. Главным отличием nftables является не только изменившийся синтаксис задания правил, но и совершенно новый подход в их трансляции: определенные пользователем правила теперь преобразуются в специальный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом внутри ядра.

Nftables состоит из трех частей: кода фильтрации, работающего внутри ядра, связующей интерфейсной netlink библиотеки libnl и фронтэнда, работающего на уровне пользователя, при этом проверка корректности правил выполняется вне ядра, а ядро только выполняет фильтрацию.

Новый синтаксис правил, в котором можно задавать условия, создавать переменные, выполнять математические операции, выглядит так:

   include "ipv4-filter"

   chain filter output {
         ct state established,related accept
         tcp dport 22 accept
         counter drop
   }

Код nftables еще находится на стадии альфа тестирования и не подходит для использовании в промышленной эксплуатации, тем не менее в процессе регулярного тестирования последний крах ядра из-за сбоя nftables был зафиксирован несколько месяцев назад.

Взято с opennet.ru

>>> Подробности

★★★★★

Проверено: JB ()
Ответ на: комментарий от Stiletto

>Хотя что мешало сделать pf-подобный?
NIH-синдром? действительно, синтаксиса понятнее пфного нет.

val-amart ★★★★★
()
Ответ на: комментарий от Misanthrope

Не расстраивайся. Это обычное дело.

Когда программисты на схеме уже готовы писать конфигуратор к чему-нибудь, выясняется, что он уже давным давно написан на питоне/перле, а программисты на С уже почти закончили новую версию этого "чего-нибудь".

LamerOk ★★★★★
()

Честно говоря не вижу причин делать такой фейс: и со старым было все понятно. Вот чего точно не хватает АйПиТэйбласам - так это скорости: хотелось бы чтобы им начинку переписали аля АйПиСет. В айписет загрузка проца, если верить тестам, что при 8000 правил, что при 8ми одинаково мала.

Vetal80
()
Ответ на: комментарий от angel_eyes

> Вчера была статья от IBM_dW, там как раз было написано про гуй для iptables

Ох черт, а я даже в ту тему не заходил, думал он опять бредит :) Спасибо, неплохая вещь.

a3
()
Ответ на: комментарий от ott

> а в вашем IDE тяжело сделать поддержку нового DSL? ;-)

А на эти вопросы "с подковыркой" я вообще начну отвечать не раньше, чем в вашем IDE появится нормальный текстовый редактор!

svu ★★★★★
()
Ответ на: комментарий от Vetal80

>честно говоря не вижу причин делать такой фейс: и со старым было все понятно. Вот чего точно не хватает АйПиТэйбласам - так это скорости: хотелось бы чтобы им начинку переписали аля АйПиСет. В айписет загрузка проца, если верить тестам, что при 8000 правил, что при 8ми одинаково мала.

Так, как я понимаю, псевдокод и даст скорость...

З.Ы. Для тех, кому не нравится новый формат правил:
это те же яйца, только с "{" и "}", и с переводами строк.
"Тебе страшно? - мне нет" (с) Карлсон.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Sith

> по моему в iptables все ясно наглядно и понятно , в отличие от ЭТОГО.

не могу не согласиться

fenris ★★★★★
()
Ответ на: комментарий от PA

> Пример конфига ferm:

table filter chain INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
proto tcp dport (http https ssh) ACCEPT;
proto udp dport domain ACCEPT;
}
}
или так:
@def $ADMIN_HOSTS = (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8);

table filter chain INPUT {
saddr $ADMIN_HOSTS {
proto tcp dport (http https ssh) ACCEPT;
proto udp dport domain ACCEPT;
}
}

> Куда уж проще?


Вот это проще:

(pf.conf)

table <admin_hosts> { 172.23.1.1, 192.168.0.0/24}
pass in on any proto {tcp, udp} from <admin_hosts> to port {http, https, ssh, domain}

iZEN ★★★★★
()
Ответ на: комментарий от svu

> Если мы об одном и том же, то мы на это смотрим по-разному

Освоив кейбиндинги того, о чем вы говорите, на другие редакторы смотришь как на г^W^W^Wс презрением.

a3
()
Ответ на: комментарий от svu

> Гамак - DSL без IDE ;)

Головотяп такой сву, да простит меня Dimez за "%s is too %s".

gaa ★★
()
Ответ на: комментарий от iZEN

эти фрибсдшники даже man pf.conf не осилвают:

table <admin_hosts> { 172.23.1.1, 192.168.0.0/24}
pass in proto tcp from <admin_hosts> to port {http, https, ssh}
pass in proto udp from <admin_hosts> to port domain

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

> эти фрибсдшники даже man pf.conf не осилвают

А я его не читал. :)
Правило написал навскидку и не ошибся в семантике.
А синтаксис легко проверяется:
pfctl -nf /path/to/pf.conf

Кстати, DNS ("port domain") может отвечать и на tcp-запросы (с установлением соединения), так что второе твоё правило — лишнее.

iZEN ★★★★★
()
Ответ на: комментарий от LamerOk

> Ксати, по теме, есть для имакса какой-нибудь vim-mode?

M-x shell-command
gvim

gaa ★★
()
Ответ на: комментарий от mky

>И так в iptables была проблема, что при выводе правил (iptables -L) получаем опции не совсем в том виде, в каком указывали при вводе, например, -j SNAT --to-source x.x.x.x, а в выводе to:x.x.x.x.

sudo iptables-save

lodin ★★★★
()
Ответ на: комментарий от val-amart

Я в курсе. Поставил для удобочитаемости.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

я написал на пф то, что до нас придумал PA
твои же правило реализуют функционал хоть и похожий, но не идентичный тому, что он предложил.
кстати, твои правила разрешают не только dns по tcp, но и исходящие запросы {22,80,443}/udp, что совсем не уместно, и это не говоря про дурацкое "on any"

val-amart ★★★★★
()
Ответ на: комментарий от angel_eyes

>> Должен быть гуй, в котором можно просто и понятно настроить firewall. Базовые вещи.

> Вчера была статья от IBM_dW, там как раз было написано про гуй для iptables =)


> http://www.ibm.com/developerworks/ru/edu/l-harden-desktop/section4.html


Уж лучше www.fwbuilder.org, чем такое а-ля ZoneAlarm.

saper ★★★★★
()

>теперь преобразуются в специальный псевдокод, который используется для принятия решения по дальнейшим действиям с пакетом внутри ядра.

Ждём яву в ведре?
Кстати, что там с pf?

madcore ★★★★★
()
Ответ на: комментарий от wfrr

>Не прошло и десяти лет как до разрабов iptables дошло что правила пишутся людями.

А через пару лет xml?? Вот зад.

madcore ★★★★★
()
Ответ на: комментарий от Pavval

блин, вы че, домохозяйки, нахера фаерволу читабельность? Вы че, по утрам, как просыпаетесь ,начининаете дописывать правила в свой любимый фаервол?

у нормальных людей, постоянно сохранены шаблоны из которых за пару делается нужное.

Читабельнее синтиксис будет или нет, от этого фаервол на роутере с PVT и DMZ вы все равно не сделаете. Потому что для этого не читабельность нужно, а понимание, которого у вас нету.

mrdeath ★★★★★
()

PS: Меня, как потребителя, больше интересует l7-filters, когда их допилят до включения в основную ветку..

madcore ★★★★★
()
Ответ на: комментарий от a3

>> И среднестатистический пользователь осилит, если постарается.

>Среднестатистический пользователь не должен разбираться в iptables. Должен быть гуй, в котором можно просто и понятно настроить firewall. Базовые вещи. Если кому надо посложнее, пусть пишет правила сам.

firewall
Среднестатистический пользователь не должен разбираться в iptables,
ассемблере, реляционных базах данных, winapi,и вирусах.

В чем проблема?

madcore ★★★★★
()
Ответ на: комментарий от mrdeath

действительно, че это мы паримся?
что, никогда не видел конфига на 5-6 интерфейсов, 20-30 подсетей, сотню исключений, да под шейпером, да с натами/редиректами, да с кастом роутингом, аутентификацией, туннелями, и защитами от спуфинга/сниффинга/фингерпринтинга? ты что, всерьез утверждаешь, что в таком легко разобраться? мегагуру, поклоняюсь. но я не компьютер, мне надо читаемый синтаксис и комментарии. а если в таком чуде, еще и чужом, нужно что-то немного напильником подравнять или разобраться, почему форвардит не туда, куда положено? (предвосхищая вопрос - да, нужно, и регулярно)

val-amart ★★★★★
()
Ответ на: комментарий от bernd

> с таким конфигом останется тока иксы ставить на сервер и гуевую конфигурилку. иптаблес рулит.

+1 !

не вижу смысла переходить на новый синтаксис, без особой причины (она есть ? Ъ, по ссылке не хожу)

Теперь, какбэ, подразумевается, что на роутере у меня есть иксы, DE и ента приблуда для генерирования конфига к фаерволу, который я слабо понимаю в новом синтаксисе

> Должен быть гуй, в котором можно просто и понятно настроить firewall. Базовые вещи.

+1 ! Токм я считаю, что в данном случае преимущество гуя или псевдогуя должны быть использованы для динамического отслеживания сетевой активности и, также, динамического управления происходящим. Например, в во внутренней сети появился новый компьютер, для которого правила не определены, либо отпределены те, что по умолчанию, и администратор может в режиме реального времени эти правила изменить, либо добавить какие-нибудь коррективы (например заблокировать какие-нибудь одноклассники, но для этого должен быть пределён список адресов/портов для блокировки и прочее)

anonymous_already_exists
()
Ответ на: комментарий от saper

FireStarter-ом пробовал составить внятные правила. То ещё искусство.

ZoneAlarm создаёт уютное ощущение безопасности в стальных штанах с дырой в ненужном месте...

FwBuilder, конечно, попробую... Но что-то "сумлеваюсь я"... "Врукопашную, оно, как-то сподручнее", хотя, конечно, хлопотно...

А вообще идея "firewall для домохозяек", по-моему равнозначна идее "пересадки сердца для секретарши"...

Особенно забавляют эти "ОгненныеСтены" в режиме обучения, когда пользователь после первых 10-15 осмысленных команд начинает "всё разрешать" без разбора...

Pronin ★★★★
()
Ответ на: комментарий от val-amart

> кстати, твои правила разрешают не только dns по tcp, но и исходящие запросы {22,80,443}/udp, что совсем не уместно

Несовсем так.
Исходящие правила для соединений, инициируемых сервером, в pf описываются разрешающим правилом "pass out".
Если НЕ использовать (обычно в конце pf.conf) разрешающее правило, например такое:
pass out proto {tcp, udp, icmp} all keep state
То никакой инициализации соединений во вне не будет — сервер будет только отвечать на внешние запросы согласно правилам "pass in".

iZEN ★★★★★
()

А к этой штуке сделают морду в стиле "оттуда-то к вам лезут на такой-то порт, разрешить, или запретить?". А то у юзеров без такого ложное чувство незащищённости. Привыкли в винде мышкой наяривать.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

Да видел. Видимо у меня с памятью плохо оказалось, спутал с 2.2.

ptah_alexs ★★★★★
()
Ответ на: комментарий от Pronin

Firestarter уже давно мёртвый проект(несмотря на то что гуй), используйте FireHOL

los_nikos ★★★★★
()

Больше фаерволов, хороших и разных!

af5 ★★★★★
()
Ответ на: комментарий от Stiletto

>Хотя что мешало сделать pf-подобный?

А разве байт-код не дает отвязку от синтаксиса? Написать тулзу, которая pf-правила перегоняет в нужный байт-код и вот оно "счастие".

vtVitus ★★★★★
()
Ответ на: комментарий от Lumi

> А к этой штуке сделают морду в стиле "оттуда-то к вам лезут на такой-то порт, разрешить, или запретить?". А то у юзеров без такого ложное чувство незащищённости. Привыкли в винде мышкой наяривать.

Что плохого в нотификации? Или по вашему пользователь должен написать скрипт, который будет парсить логи на предмет "вторжения"? Вы поймите, не всем интересно перерывать гору документации, чтобы сделать элементарные и не очень вещи.

a3
()
Ответ на: комментарий от a3

> Что плохого в нотификации?

На каждой из сотни машин в организации посадить обезьяну, которая будет счёлкать мышью на каждое сообщение файервола. Постепенно накопится база данных разрешающих/запрещающих правил. Далее развернуть распределённую файловую систему, чтобы учесть ВСЕ накопленные правила в этой организации.
Так что ли? :)

> Или по вашему пользователь должен написать скрипт, который будет парсить логи на предмет "вторжения"?


Можно и не писать.
Для ipfw в FreeBSD, например, есть базовые конфиги для типичного использования сервера/пользовательской рабочей станции: "open", "client", "simple", "closed", "workstation" — конфиги уже готовые поставляются в комплекте с FreeBSD. Всё включается двумя строчками в /etc/rc.conf:
firewall_enable="YES"
firewall_type="workstation"

iZEN ★★★★★
()
Ответ на: комментарий от gaa

>Давно ты программы декомпилировал?

Я и за компьютером давно не сидел, в смысле программы не писал. :) А вот пример из жизни http://www.linux.org.ru/view-message.jsp?msgid=3560415

Не, ну так то хорошо. Вот раньше, дадут тебе сервер, там sendmail, конфиг уже до тебя отредактирован, m4 файлов нету... А сейчас можно будет получить сервер, где вместо списка правил "iptables -L" есть только псевдокод, какими скриптами он туда пишется незвестно, но эта каша позволит отличить настоящего джедая от обычного админа :)

mky ★★★★★
()
Ответ на: комментарий от lodin

Я знаю про iptables-save, замечательная команда. Умела бы она ещё выводить заданную цепочку, чтобы без grep. И в целом не понятно, почему сделали отдельную команду, а не опцию у iptables.

mky ★★★★★
()
Ответ на: комментарий от mky

хех - у всех одни и теже проблемы 8-)

пусть будет фаервол - главное что б прогу для него можно было скормить непосредственно через командлайн - без проежуточного файла по типу nft -e "подкорявим фаервол чуть-чуть" и все

villain
()

Трындец.

Т.е. теперь всё стало проще? Если раньше достаточно было знать синтаксис iptables и спокойно работать, теперь надо выцчить синтаксис фаера и ещё синтаксис его конфига. И это называется упорщение?

Если мне нужно было добавить правило, я писал его в консоли и радовался жизни. Если нужно его сохранить - iptables-save. Если надо сделать большой и страшный конфиг с кучей подсетей, натов и т.д. я открывал файл, сгенерированный iptables-save и по той же схеме, что до этого в консоли писал нужные мне правила. А нахрена нужны навороты с какими-то мега-конфигами, постороенными на каких-то там супер-принципах, мне непонятно... Бред...

shell-script ★★★★★
()
Ответ на: комментарий от mky

> И в целом не понятно, почему сделали отдельную команду, а не опцию у iptables.

Что здесь непонятного? Это называется Ъ-unix-way. Каждая программа делает своё дело: grep - грепает, iptables - айпитаблесит. ) А для совместной работы и существуют конвееры и т.д.

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

shell-script ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.