В официальное ядро версии 2.6.10
была включена поддержка в правилах iptables
условий hashlimit, позволяющих задавать пороги
соответствия для квартетов (srcaddr, srcport, dstaddr,
dstport) подобно тому, как условие limit позволяло
задавать пороги для всех адресов сразу. К
сожалению, модуль libipt_hashlimit.c (iptables) для
работы с этим условием содержит целый ряд
ошибок при обработке параметров и эти
ошибки просто не позволяют использовать
модуль. После обнаружения ошибок был
незамедлительно (22 января 2005 года)
проинформирован разработчик модуля Harald Welte
и открыт Bug
Track. В исходный код данного модуля были
внесены изменения и корректный файл можно
загрузить с сайта, воспользовавшись
приведенной ссылкой.
После устранения ошибок в модуле
iptables было проведено тщательное
тестирование модуля netfilter (ipt_hashlimit.c),
обеспечивающего поддержку соответствия
hashlimit в ядре Linux. В модуле также были
обнаружены две ошибки, которые, к счастью,
не оказывают критического воздействия на
работу системы и не снижают уровня
безопасности, однако существенно
затрудняют использование соответствия
hashlimit. По результатам проверки 26 января
также были направлены сообщения
разработчикам и открыт Bug
Track.
- Ошибка при обработке номеров порта
отправителя и получателя приводит к тому,
что номера портов не принимаются во
внимание и операции хэширования
выполняются только по отношению к параме
srcaddr, dstaddr вместо квартетов (srcaddr, srcport, dstaddr,
dstport). - Ошибка в функции hashlimit_match приводит к
тому, что заданные правилом iptables условия
выполняются не для burst пакетов (параметр
условия), а для burst +1. Эта ошибка также не
имеет критического значения, но в
некоторых случаях может существенно
искажать результаты фильтрации пакетов.