LINUX.ORG.RU

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

★★★★

Проверено: catap ()

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

vladislav ★★ ()

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

Pavval ★★★★★ ()

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

Zhid ()

Вау.

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

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

Pronin ★★★★ ()

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

anonymous ()

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

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

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

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

>когда только 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.

nnz ★★★★ ()

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

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

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

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

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

nnz ★★★★ ()

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

dm123 ()

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

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

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

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

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

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

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

anonymous ()

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

Fredy ()

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

awesome ()

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

pevzi ★★★★★ ()

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

BigAlex ★★★ ()

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

Tok ★★ ()

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

anonymous ()

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

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

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

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

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

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

google://iptables tutorial

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

F457 ★★★ ()

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

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

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

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

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