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

Пятница, 21 мая 2010 г.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e

Вышел релиз 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. Улучшена документация.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e


Просмотров: 1508
Рубрика: Hi-Tech


Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003