Проект xtables-addons представляет собой набор модулей-расширений для входящего в ядро Linux фреймворка фильтрации и преобразования пакетов netfilter. В этот набор включаются расширения, которые по тем или иным причинам пока не были приняты в основную ветку разработки ядра Linux. Таким образом, данный проект является альтернативой устаревшему patch-o-matic(-ng). Ключевое отличие xtables-addons от предшественника состоит в отсутствии необходимости в наложении патчей на ядро и iptables, что значительно упрощает процесс сопровождения и установки расширений. Во времена patch-o-matic часто бывало сложно найти версию патча, совместимую с нужной версией ядра и/или iptables, в то время как для работы xtables-addons достаточно наличия ядра версии >=2.6.17 и iptables >= 1.4.3 (впрочем, в случае использования ipset 5 требования становятся несколько более жесткими — версия ядра не менее 2.6.35, дополнительно требуется библиотека libmnl). В числе других преимуществ xtables-addons над patch-o-matic(-ng) можно упомянуть расширенную поддержку IPv6 и более высокое качество кода.
В состав xtables-addons входит множество других полезных модулей (критериев и действий iptables/netfilter), в частности:
- TARPIT — широко известный в узких кругах инструмент для активного противодействия (D)DoS-атакам и сканированиям TCP-портов, способный в определенный обстоятельствах неплохо проучить атакующего. Суть его работы сводится к следующему: он подтверждает открытие входящего TCP-соединения, после чего устанавливает размер окна TCP равным нулю, что блокирует возможность корректного закрытия соединения. В результате система атакующего получает очередное «повисшее» соединение, в то время как ваша система ничего не замечает (хуки netfilter отрабатывают раньше, чем стандартный сетевой стек ядра, дополнительно может потребоваться отключение трекинга соединений в conntrack через действие NOTRACK). При агрессивной атаке подобная тактика может вызвать у атакующего серьезные проблемы. Особенно сильно такому воздействию подвержены системы семейства Windows, на которых, как правило, и работают атакующие ботнеты.
- DELUDE — не столь опасный, но тем не менее тоже полезный инструмент противодействия сканированию TCP-портов. Работает он следующим образом: на SYN-пакеты он отвечает SYN,ACK-пакетами, создавая видимость открытого порта, на все остальные пакеты он отвечает RST (чтобы не создавать лишних проблем). Таким образом, DELUDE позволяет ввести атакующего в заблуждение, создав у него неверное впечатление о состоянии ваших портов.
- CHAOS — еще один инструмент, позволяющий поставить атакующего в глупое положение. С заданной вероятностью он применяет к входящему пакету операцию TARPIT или DELUDE (в зависимости от настроек), либо стандартную операцию REJECT (отправка ICMP-уведомления о недоступности порта), либо операцию DROP (блокирование пакета без уведомления отправляющей стороны). По умолчанию вероятности применения TARPIT/DELUDE и REJECT составляют порядка одного процента, к остальному трафику применяется DROP.
- IPMARK — действие, позволяющее присвоить пакету маркировку, определенную в результате арифметических операций над его исходным адресом (либо адресом назначения). Таким образом, грамотная организация адресного пространства в сочетании с элементарными арифметическими и побитовыми операциями могут заменить монструозные таблицы соответствия «адрес — маркировка», поиск по которым может отнимать значительную долю системных ресурсов. Особенно полезна данная операция при организации гибких систем шейпинга, когда несколькими командами можно настроить работу многих тысяч очередей.
- LOGMARK — действие, дополняющее набор данных, выводимых стандартной операцией LOG, такими сведениями, как маркировка, идентификатор, состояние и статус соединения в системе conntrack, маркировка SELinux и классификационный код шейпера для данного пакета, имя родительского хука, внутренний код интерфейса и т.п.
- RAWDNAT/RAWSNAT — операции «сырой» трансляции адресов, не использующие трекинг соединений. Могут быть использованы для увеличения гибкости стандартного NAT либо при ограниченности ресурсов в сочетании с большим количеством соединений, когда трекинг становится чересчур накладным.
- ACCOUNT — простая, высокопроизводительная система учета трафика, поддерживающая работу с клиентскими сетями большого размера (вплоть до /8).
- SYSRQ — инструмент, позволяющий при получении специальным образом сформированных (защищенных паролем) пакетов обращаться к системному триггеру. В частности, можно удаленно инициировать сброс кэша (sync) или даже выполнить ту самую последовательность REISUB, вне зависимости от работоспособности userspace.
- DHCPMAC/dhcpmac — сочетание одноименных критерия и действия позволяет выделять и подменять MAC-адреса, фигурирующие в запросах и ответах DHCP.
- condition — критерий, срабатывающий в зависимости от значения соответствующей булевой переменной, которое может быть задано из userspace (через procfs). Таким образом, работой правил netfilter можно управлять, не вмешиваясь в их структуру.
- fuzzy — критерий, выделяющий пакеты на основании нечеткой логики (при скорости поступления пакетов ниже пороговой величины a, вероятность соответствия пакета критерию равна нулю, в диапазоне скоростей от a до b вероятность плавно возрастает до единицы, и при скорости выше b пакеты всегда соответствуют критерию).
- geoip — критерий, позволяющий выделять пакеты на основании принадлежности их исходного адреса или адреса назначения заданному государству. Можно использовать базы данных от MaxMind или WIPmania
- iface — критерий, срабатывающий в зависимости от состояния заданного сетевого интерфейса. В частности, с его помощью можно организовывать отказоустойчивый доступ в интернет при наличии нескольких независимых каналов, с автоматическим исключением неработающих каналов.
- ipp2p — критерий, позволяющий выделять трафик различных P2P-сетей, в частности, BitTorrent, eDonkey/eMule, DC, Gnutella, AppleJuice, WinMX, SoulSeek, Ares, KaZaA. Чрезвычайно удобен при организации эффективного шейпинга трафика. Является неплохой альтернативой критерию l7filter, который требует наложения патчей на ядро и поэтому не включен в проект xtables-addons.
- lscan — разработанный Яном Энгельгардтом инструмент для выявления скрытных операций по сканированию TCP-портов.
- psd — более простой инструмент для выявления массовых сканирований TCP- и UDP-портов, основанный на принципе взвешенной суммы.
- pknock — позволяет организовать защиту портов посредством технологии port knocking. Возможно дополнительное усиление защиты за счет использования HMAC256-шифрования отправляемых пакетов.
- quota2, length2 — расширяют возможности стандартных критериев netfilter quota и length.
Данная статья подготовлена по материалам сайта: http://www.opennet.ru/opennews/art.shtml?num=29198
Надеюсь, что еще одно подробное описнание некоторых возможностей фильтрации пакетов в Linux, будет полезным. Успехов вам в дружбе с тюксом.
https://nikitushkinandrey.wordpress.com/2012/05/11/xtables-addons-%d0%b8%d0%bb%d0%b8-%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d1%84%d0%b8/