Как уже сказал автор, mod_evasive [1] поддерживает опцию DOSSystemCommand, которая:
используется для выполнения какой-нибудь вашей команды когда IP блокируется. Вы можете использовать это для добавления IP-адреса в таблицу фаервола. (пример:
"/sbin/ipfw table 111 add %s". В переменную"%s"передается от модуля IP-адресатакуемогоатакующего хоста).
Как показала практика, эта полезнейшая возможность позволяет заметно разгрузить атакуемый Веб-сервер и избавить его от генерации ответов с кодом 403 за счет блокировки атакующих хостов с помощью брандмауэра. Эта заметка посвящена описанию используемого мной рецепта добавления соответствующих правил ipfw(8) [2] с помощью mod_evasive.
В связи с тем, что по умолчанию изменение правил ipfw разрешено только суперпользователю root, а Веб-сервер работает от имени www, для выполнения соответствующих команд ipfw add ... придется воспользоваться утилитой security/sudo [3]. Для разрешения выполнения команды /sbin/ipfw пользователю www с IP-адреса X.X.X.X, на котором "висит" Apache, без ввода пароля необходимо добавить в файл конфигурации sudo следующую строку (напоминаю, что для открытия файла конфигурации sudo в редакторе по умолчанию нужно выполнить команду visudo):
www X.X.X.X=NOPASSWD:/sbin/ipfw
После сохранения файла конфигурации sudo можно добавить в раздел <IfModule mod_evasive20.c>...</IfModule> файла конфигурации Веб-сервера примерно такую строку:
DOSSystemCommand '/usr/local/bin/sudo /sbin/ipfw add 4399 deny tcp from %s to X.X.X.X 80 in via bge0'
Естественно, X.X.X.X и bge0 нужно заменить на уже упомянутый IP-адрес и имя сетевого интерфейса, которому он соответствует. Обязательно обратите внимание на номер правила, позволяющий вставить добавляемое правило в нужное место набора правил ipfw. В моем случае правила блокировки атакующих хостов добавляются непосредственно перед правилом, разрешающим все установленные TCP-соединения:
/sbin/ipfw add pass tcp from any to any established
Вот, собственно, и весь рецепт 
