LINUX.ORG.RU
 
nnz

iptables 1.4.8 с поддержкой conntrack zones


0

0

Вышел релиз iptables 1.4.8 — интерфейса к Linux-фаерволу netfilter.

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

Стандартный Linux-фаервол netfilter использует для отслеживания соединений интегрированную в ядро подсистему conntrack. Полученная информация затем может использоваться при фильтрации и преобразовании пакетов. Например, именно на базе этой информации работают критерии conntrack (проверка состояния соединения, его устаревшая версия известна как state), connlimit (ограничение количества одновременных соединений с одного адреса или подсети), connbytes (ограничение соединений по количеству пакетов или байт, переданных в одном или в обоих направлениях), connmark (работает с маркировкой ctmark, общей для всех пакетов в соединении). Также информация conntrack автоматически используется всеми операциями преобразования адресов и портов (SNAT, MASQUERADE, DNAT, REDIRECT, SAME, NETMAP).

Эта информация хранится в специальной таблице (просмотреть ее можно, например, выполнив cat /proc/net/nf_conntrack). Каждое соединение описывается так называемым кортежем (tuple) — набором значений, в который входят адреса и порты (в случае ICMP — типы и коды ICMP) источника и назначения при передаче данных в прямом и обратном направлении. Очевидно, что при наличии нескольких подсетей с одинаковыми адресными пространствами, возможно возникновение путаницы, когда сразу нескольким соединениям ставится в соответствие одна и та же запись в таблице соединений. Чтобы избежать такой ситуации, в кортеж был добавлен идентификатор зоны conntrack — целое число, которое можно устанавливать через специальное правило в таблице raw в зависимости от входящего интерфейса (цепочку PREROUTING таблицы raw пакеты проходят еще до обработки их conntrack'ом). Кроме того, это значение можно задать для каждого интерфейса через sysfs, минуя iptables (псевдофайл /sys/class/net/имя_интерфейса/nf_ct_zone). Таким образом, сетевые администраторы получили эффективный инструмент, позволяющей изящно решить даже такую сложную задачу.

Стоит отметить, что большинство вопросов маршрутизации в описанных условиях уже давно решено средствами iproute2 (используя ip rule, можно направить пакеты с определенного интерфейса в соответствующую таблицу маршрутизации).

Операция установки значения conntrack zone реализуется в netfilter/iptables новым действием CT. Это действие используется в таблице raw и позволяет задать настройки conntrack для новых соединений. В частности, с его помощью можно:

  • Отключить отслеживание соединений для данного класса пакетов (опция --notrack). Ранее это выполнялось отдельным действием NOTRACK, которое теперь, видимо, будет объявлено устаревшим.

    Отслеживание отдельных соединений имеет смысл отключать, например, в том случае, если вы находитесь под (D)DoS-атакой, локализовали ее источники и используете средства активного противодействия, такие, как TARPIT. Если вы не отключите трекинг для таких соединений, это оружие может больно ударить и вас самих.

  • Установить для конкретного соединения нужный вспомогательный модуль (conntrack helper). Вспомогательные модули используются системой conntrack для отслеживания сложных протоколов, использующих несколько соединений в рамках одного сеанса (например, FTP, SIP, IRC, H.323 и т.п.). Теперь, если вы используете нестандартный порт для FTP, совсем не обязательно править конфигурацию modprobe.conf, чтобы прописать нужный параметр для соответствующего модуля ядра — достаточно выполнить привязку хелпера к порту через правило netfilter'а.
  • Ограничить список событий conntrack, генерируемых для данного соединения (например, реагировать только на открытие и закрытие соединения, игнорируя изменения его состояния).

Надо заметить, что поддержка действия CT и conntrack zones была добавлена в netfilter (т.е. в ядро) еще в начале февраля, поэтому присутствовала уже в релизе 2.6.33. Однако модули netfilter сами по себе не могут быть использованы без соответствующих управляющих команд из userspace, которые обычно отдаются через утилиту iptables.

Помимо добавления поддержки действия CT, в код iptables также было внесено несколько менее значительных изменений:

  • Полная поддержка ядра 2.6.34.
  • Исправлена ошибка парсинга диапазона адресов в критерии iprange.
  • Улучшен парсинг номеров портов для действий MASQUERADE и REDIRECT.
  • В проект импортирована утилита nfnl_osf, обеспечивающая подгрузку базы сигнатур для критерия osf.
  • Улучшена документация.

>>> ChangeLog


[#]  

Прекрасно оформленная новость. Да и сама новость тоже радует.

** ()
[#]  
Pavval

Хотя меня и не касается, но все равно - новость приятно читать. Это не "вышла новая версия хлюндрика, добавлен новый хреновыворот слева от печализатора".

**** ()
[#]  
dimqua

Отлично!

* ()
[#]  

Вот что-что, а iptables - совершенно не нужен.

()
[#]  
Pronin

Вау.

nnz - спасибо за вести!
Команде iptables - за работу.

/me пошёл писать правила.

*** ()
[#] Ответ на: комментарий от Zhid 21.05.2010 17:35:21  
Pronin

>Вот что-что...
Похудей ;)

*** ()
[#]  

когда только TRAPIT без патчения ядра сделают?

anonymous ()
[#]  
anton_jugatsu

Спасибо за новость :)

*** ()
[#]  

Искренняя радость охватывает от прочтения таких новостей. Спасибо разработчикам за такую нужную работу.

()
[#] Ответ на: комментарий от Zhid 21.05.2010 17:35:21  
ArtemZ

iptables таки кошерен, а вас нужно забанить за оскорбительный никнейм

* ()
[#]  

Когда в Debian будет?

()
[#] Ответ на: комментарий от anonymous 21.05.2010 17:55:45  
nnz

>когда только TRAPIT без патчения ядра сделают?

Уже давно сделали. http://xtables-addons.sourceforge.net/
>Xtables-addons is the successor to patch-o-matic(-ng). Likewise, it contains extensions that were not, or are not yet, accepted in the main kernel/iptables packages.

>Xtables-addons is different from patch-o-matic in that you do not have to patch or recompile the kernel, sometimes recompiling iptables is also not needed.

**** ()
[#]  

Скажите, а на нем эффективную ддос защиту от ботов реализовать можно? А то говорят при паре сотен заблокированных IP начинает безбожно тормозить

* ()
[#] Ответ на: комментарий от aliens 21.05.2010 18:09:29  
nnz

>А то говорят при паре сотен заблокированных IP начинает безбожно тормозить

Несколько лет назад читал результаты исследования зависимости скорости обработки от количества правил и трафика. Вроде бы при нескольких мегабитах удалось добиться миллисекундных задержек только при количестве правил порядка 10^4, и это отнюдь не на самом крутом железе (по меркам того времени). Так что, скорее всего, вы слышали ничем не подкрепленные вопли фанатиков других фаерволов.

Кстати, повысить скорость обработки списков десятков тысяч адресов вполне даже можно. Уже давно существует ipset, и благодаря проекту xtables-addons его можно использовать без пересборки ядра.

**** ()
[#]  
px

ждем rpm'ов

** ()
[#]  

прекрасно оформленная новость, пейсателям с IBM developerWorks стоит поучиться статьи писать также просто и содержательно. спасибо.

()
[#]  

Спасибо, хорошая новость.

А как оформлена, у меня аж слюни потекли.

** ()
[#] Ответ на: комментарий от vladislav 21.05.2010 10:51:27  
bernd

кто-то хабра перечитал? привыкли к жополизству?

** ()
[#] Ответ на: комментарий от Zhid 21.05.2010 17:35:21  
>>-----Цитата---->>

Вот что-что, а iptables - совершенно не нужен.

<<-----Цитата----<<

Да Вы что? Давно это у Вас?

anonymous ()
[#]  

iproute2 действительно настолько крут?

* ()
[#]  

как только увидел оформление новости, сразу понял, кто ее запостил.

* ()
[#]  
pevzi

Ура! Меня это не касается, но я все равно рад :3

**** ()
[#]  
BigAlex

Кружку пива за ваше здоровье!

* ()
[#]  
Tok

А ipfw токое умеет ?

** ()
[#]  

помнится, ЛОРИнформБюро сообщало, что Расти и компания таки решили перевести конфигурацию iptables на какой-то язык описания правил, а не так как сейчас - bash скрипт с кучей вызовов iptables с нужными параметрами. ну когда же? а то человеческое во мне противится углублённому изучению этого, вне всяких сомнений, замечательного фреймворка фильтрации пакетов.

anonymous ()
[#]  
Ramzes001

Ник то не подскажет где лучше почитать про iptables а то слышу часто, но не в теме.

* ()
[#] Ответ на: комментарий от anonymous 21.05.2010 20:30:38  

>не так как сейчас - bash скрипт с кучей вызовов iptables с нужными параметрами

В красношапочных /etc/sysconfig/iptables не баш-скрипт.

anonymous ()
[#] Ответ на: комментарий от Ramzes001 21.05.2010 20:42:32  

>Ник то не подскажет где лучше почитать про iptables а то слышу часто, но не в теме.

google://iptables tutorial

Если есть что-то лучше (более актуальное и полное), подскажите плз, кто в курсе.

anonymous ()
[#] Ответ на: комментарий от anonymous 21.05.2010 20:30:38  
mikki

Изучать это всё равно придётся чтобы писать нормальные правила для нетфильтра. Просто сама форма конфигурирования через iptables не очень красива. Если не хочется вникать в тонкости, можно воспользоваться инструментом типа fwbuilder.

()
[#] Ответ на: комментарий от anonymous 21.05.2010 20:30:38  
nnz

>помнится, ЛОРИнформБюро сообщало, что Расти и компания таки решили перевести конфигурацию iptables на какой-то язык описания правил

Было дело. Инициатива принадлежала лидеру Netfilter Core Team Патрику МакХарди. Только никто ее не поддержал. Пару месяцев Патрик лениво пилил эту штуку, выпустил даже одну альфу, а потом забил. Последний коммит в гите датируется прошлым летом.

>а не так как сейчас - bash скрипт с кучей вызовов iptables с нужными параметрами


Это лишь один из возможных вариантов.
Я, например, обычно пишу сразу на языке iptables-save/restore.

>а то человеческое во мне противится углублённому изучению этого, вне всяких сомнений, замечательного фреймворка фильтрации пакетов.


В большинстве случаев достаточно изучить какой-нибудь фронтенд, которых уже сейчас хренова туча, начиная от продвинутых, вроде arno-iptables-firewall, и заканчивая простенькими, понятными даже блондинке (ufw). Посмотреть список (далеко не полный, кстати) можно, например, здесь: http://wiki.debian.org/Firewalls

Как говорил один мой знакомый, тот факт, что компьютер работает исключительно с бинарным кодом, вовсе не означает, что программы нужно писать сразу в бинарном виде :)
iptables/netfilter предоставляют базовый ассемблер. Ъ-бойцы могут кодить сразу на нем, а остальные скорее предпочтут языки высокого уровня (фронтенды).

**** ()
[#]  
kernelpanic

Это просто замечательно!

**** ()
[#] Ответ на: комментарий от Zhid 21.05.2010 17:35:21  

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

Ты это хотел сказать наверное?)) Типа "есть же роутер".

* ()
[#] Ответ на: комментарий от nnz 22.05.2010 2:09:39  

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

под изучением я имел ввиду именно разбор достаточно низкоуровневых фич - когда я только сел за Линукс, то почитал некоторое кол-во инструкций и примеров. ставил всякие -m limit и -j ulog, хотя для домашнего сервака, не открывающего сервисов наружу, всё это было избыточно - просто хотелось немного разобраться. но в конце концов я снёс всё это и заменил на пару известных строчек ESTABLISHED,RELATED

но желание разобраться хотя бы в некоторых фичах сабжа не исчезло. и вот, время от времени конфигуря ядро (гента всёж таки), замечаю, что в всяких хитрых модулей для netfilter становится всё больше и больше, а новых подробных HOWTO как правильно пользоваться (на основе connection tracking'а и т.д.) даже базовыми вещами как-то не появляется. на сайте netfilter документы многолетней давности. там конечно есть полезные вещи, но хочется чего-нибудь посвежее. не слишком углУбленного, но именно best practices на основе современных возможностей iptables.

anonymous ()
[#] Ответ на: комментарий от anonymous 22.05.2010 10:29:33  
nnz

Я работаю над этим. http://ru.wikipedia.org/wiki/Iptables

Точнее, работал полгода назад. Надо будет таки пересилить себя и выбить время в своем графике, чтобы наконец-то дописать.

**** ()
[#] Ответ на: комментарий от nnz 22.05.2010 13:05:03  

[присвистнул] почитаю...

такой статье наверное место где-нибудь в собрании HOWTO, а не на вики.

anonymous ()
[#] Ответ на: комментарий от anonymous 22.05.2010 13:28:00  
nnz

>такой статье наверное место где-нибудь в собрании HOWTO, а не на вики.

Да, мне уже там сделали замечание :)
Просто меня устраивает вики-движок и лицензия (CC-BY-SA), а также куча народу, которые это читают. На каждую сотню прочитавших найдется один, который найдет и исправит какую-нибудь мелкую ошибку. Очень полезная фича.

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

**** ()
[#] Ответ на: комментарий от nnz 22.05.2010 13:33:34  
anton_jugatsu

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

Уже хотеть! :)

*** ()
[#] Ответ на: комментарий от bernd 21.05.2010 18:48:53  

не вижу ничего страшного в том чтобы поблагодарить человека за хорошо оформленный материал, а не сразу начинать кидаться кашками как здесь привыкли. Другое дело все чаще "хорошо оформленным материалом" называют любую мало мальски значимую новость где автор в теме происходящего и посчитал необходимым ознакомить всю аудиторию ресурса с полным содержанием чейндж лога, а остальной контент на фоне вышеописанного - спешно переведенные школотой при помощи гугл транслэйта статьи с зарубежных изданий, где переводчик сам не понимает о чем пишет (смотрите количество фактических исправлений в основной массе новостей). Да, лор уже не торт, но пока терпимо.

()
[#] Ответ на: комментарий от vladislav 21.05.2010 10:51:27  

> Прекрасно оформленная новость.

Ага, всё первую страницу заняла... :-)

***** ()
[#] Ответ на: комментарий от derrix 21.05.2010 18:06:20  

>Когда в Debian будет?

Лет через 15.

anonymous ()
[#] Ответ на: комментарий от Ramzes001 21.05.2010 20:42:32  

>> Ник то не подскажет где лучше почитать про iptables
здесь

()
[#] Ответ на: комментарий от elbahek 23.05.2010 12:22:44  

it's been around for years. кто хотел - об этой штуке знает. но есть минусы.

anonymous ()
[#] Ответ на: комментарий от Sonsee 22.05.2010 3:34:46  

Расскажи зачем мне на десктопе фаервол?..

* ()
[#]  
jackill

Ситуация с двумя сетями с одинаковыми адресными пространствами вовсе даже не редкая...

***** ()
[#] Ответ на: комментарий от F457 24.05.2010 11:10:20  

>Расскажи зачем мне на десктопе фаервол?..

Еще один верующий, что он никому не нужен? Это даже если ось не оффтопик.

anonymous ()