У меня есть пара машин Apache 2 за настройкой HAPROXY, я попытался установить mod_evasive на этих машинах Apache, а также использовал mod_rpaf, чтобы получить реальный IP-адрес клиента X-FORWARDED.
По какой-то причине mod_evasive захватывает и блокирует некоторые IP-адреса (тестирование с помощью ApacheBench), но некоторые могут продолжать и открывать больше соединений и в основном DOS моих серверов.
есть идеи, что можно исключить один ip из другого в mod_evasive? учитывая тот факт, что он находится за прокси и что реальные IP-адреса клиента видны в журналах apache?
Определения mod_evasive являются значениями по умолчанию, если для списка DOSWhitelist задана маска нашей подсети (192.168.0.1).. например).
модуль rpaf имеет определение RPAFproxy_ips с нашим HAPROXY ip. Любые идеи?
Проблема, с которой вы столкнулись, вероятно, является частью дизайна mod_evasive: его статистика, используемая для блокировки, сохраняется в каждом дочернем процессе. Итак, если вы используете Prefork MPM и для MaxClients установлено значение 50, то подключения к каждому из этих 50 клиентов будут отслеживаться независимо.
Кроме того, есть настройка MaxRequestsPerChild. Как только это будет достигнуто, ребенок будет убит, а вместе с ним и статистика. Так что в некоторых случаях mod_evasive просто не эффективен.
Мне очень жаль, что на данный момент у меня нет лучшей альтернативы. Я ищу себя. (Я еще не подтвердил, работает ли он лучше с другими MPM.)
Ссылки:
Ты можешь использовать mod_evasive_x использовать значение заголовка X-Forwarded-For для IP-адреса клиента и последней стабильной версии mod_rpaf где вы можете установить маску подсети для значений RPAF_ProxyIPs. Для моих экземпляров в AWS за балансировщиком нагрузки (ELB) он работает правильно.