Назад | Перейти на главную страницу

iptables, блокирующий большое количество IP-адресов

Я хочу блокировать IP-адреса относительно автоматизированным способом, если они выглядят как «сканирующий» контент с веб-сайтов, которые мы размещаем. В прошлом это было достигнуто с помощью некоторых оригинальных скриптов Perl и OpenBSD pf. pf хорош тем, что вы можете предоставить ему красивые таблицы IP-адресов, и он будет эффективно обрабатывать блокировку на их основе. Однако по разным причинам (до меня) они приняли решение перейти на CentOS. iptables изначально не предоставляет возможность блокировать большое количество адресов (мне сказали, что блокирование 5000+ не было необычным), и я немного осторожен, добавляя такое количество правил в iptable.

ipt_recent был бы прекрасен для этого, плюс он обеспечивает большую гибкость только для серьезного замедления доступа, но в ядре CentOS есть ошибка, которая не позволяет мне его использовать (сообщается, но ожидает исправления).

Использование ipset повлечет за собой компиляцию более современной версии iptables, чем поставляется с CentOS, что, хотя я вполне способен на это, я бы предпочел не делать этого с точки зрения исправлений, безопасности и согласованности.

Помимо этих двух, похоже, что nfblock - разумная альтернатива. Кто-нибудь знает о других способах достижения этого? Являются ли мои опасения по поводу нескольких тысяч IP-адресов в iptables как отдельных правил необоснованными?

iptables это инструмент пользовательского пространства для управления netfilter. netfilter - это код в ядре, который обрабатывает фильтрацию пакетов. С точки зрения контекста, изменение инструмента пользовательского пространства изменит только ваш опыт, но не способ работы фильтрации.

Я никогда не сталкивался с ограничениями в Linux с указанным количеством правил, и я использую Linux для брандмауэра с тех пор, как был ipfwadm. Примечательно, что Netfilter не был представлен в Linux до ядра 2.4.x и ipfwadm был интерфейсом для ipfw не netfilter. OpenBSD отлично подходит для межсетевого экрана, если вы можете продолжать использовать его в своей среде.

Ограничение, вероятно, будет физическим ограничением, основанным на системных ресурсах, с упором на количество доступной оперативной памяти. Если у вас возникнут проблемы, вам, возможно, придется настроить в ядре настройки максимального IP-соединения Linux. Вы вряд ли столкнетесь с любой из этих ситуаций на современном оборудовании с современным дистрибутивом Linux.

Если вы хотите обсудить более тонкие детали netfilter, возможно, вам будет лучше продолжить этот диалог в списках рассылки netfilter, поскольку они будут экспертами в предметной области.

Если это не отвечает на ваш вопрос, не стесняйтесь уточнить, и я буду рад исправить его.

Пользователь Netfilter достиг ограничения памяти, тестируя ограничения netfilter

Лучший способ заблокировать большое количество IP-адресов, не вызывая большой нагрузки на ядро, - это обнулить их маршрутизацию с помощью команды:

root@machine# ip route add blackhole 192.168.1.1/32

iptables не подходит для многих правил.

http://en.wikipedia.org/wiki/Null_route

Я думаю, что ошибка, на которую он ссылается, находится в коде netfilter, в частности в модуле ipt_recent. Кажется, я ограничен 4k (32 бит) и 8k (64 бит).

видеть:

https://bugzilla.redhat.com/show_bug.cgi?id=571322

5000 правил - не проблема, но есть http://www.hipac.org/ который неплохо справляется с огромным количеством правил.