Использовать модуль recent и два списка.
можно поподробней и если не трудно с примером так как я немного не допонял.. :(
По подробней можно, с примером, нет. Вечер тяпницы тяжелое время, что бы думать.
Суть проста. Новые пакеты со статусом нев и флагом син и нужным тебе условием отправляешь в новую цепочку. Там с обновлением заносишь в первый список, и если в списке записей за единицу времени меньше, чем тебе нужно то разрешаешь.
-m recent --name FLUD_TEST --update --seconds число --hitcount число -j ACCEPTОставшееся вносиш в бан лист и посылаешь нафиг.
-m recent --name BAN_LIST --set -j ПОСЛАТЬ_НАФИГИ в инпут добавляешь
-m recent --name BAN_LIST --update -j ПОСЛАТЬ_НАФИГА перед этим правилом в тот же инпут стоит добавить правило фильтрующие пакеты с ACK с ипов входящих в FLUD_TEST и удаляющих их из этого списка.
Что бы точнее понять механизм, изучи как меняется статус соединения от прохождения пакетов, и мануал на иптаблес естественно.
А вообще, сколько я видел люди особо не мудрствуют, а тупо лепят правило limit и все. Да и нфиг это не нужно. Ядро само умеет глушить подобное, или у тебя аппач так роняют?
Потренируйся на пингах, если не заработает, свистни в приват со со своими контактами, вместе поэкспериментируем.