Установка и настройка mod_evasive на Apache
Что такое mod_evasive
mod_evasive — это модуль Apache, который предпринимает «эвакуационные меры» при обнаружении подозрительной активности (DoS/DDoS, брутфорс). Он поддерживает динамическую хеш‑таблицу IP и URI и блокирует IP при выполнении одного из условий:
- многократные запросы одной и той же страницы за очень короткий промежуток;
- более 50 одновременных запросов на одном дочернем процессе (child);
- запросы от IP, находящегося в текущем блок‑списке.
Коротко: это простой механизм локального rate‑limiting на уровне веб‑сервера. Это не замена полноценного WAF или CDN‑защиты, но эффективный инструмент в композиции защит.
В одном предложении: DoS — попытка сделать сервис недоступным, DDoS — распределённый DoS, брутфорс — подбор учётных данных.
Требования
- Рабочий сервер Apache (инструкция ориентирована на Ubuntu 14.04).
- Права sudo для установки пакетов и редактирования конфигурации.
Важно: описанные команды соответствуют классической структуре Ubuntu 14.04; на более новых релизах используются systemd‑команды (systemctl).
Установка mod_evasive
Убедитесь, что Apache установлен и запущен.
Установите пакет модулeя:
sudo apt-get install libapache2-mod-evasiveПосле установки проверьте, что модуль загружен:
sudo apachectl -M | grep evasiveЕсли модуль подключён, вы увидите строку вида:
evasive20_module (shared)Настройка mod_evasive
Конфигурация читается из файла /etc/apache2/mods-enabled/evasive.conf. По умолчанию опции могут быть закомментированы — нужно раскомментировать и скорректировать под вашу нагрузку.
Откройте файл для редактирования:
sudo nano /etc/apache2/mods-enabled/evasive.confНайдите и удалите символы # в начале нужных строк, например:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify mail@yourdomain.com
DOSLogDir "/var/log/apache2/"Сохраните файл и перезапустите Apache, чтобы изменения вступили в силу:
sudo /etc/init.d/apache2 restartПримечание: на системах с systemd используйте sudo systemctl restart apache2.
Объяснение ключевых директив
- DOSHashTableSize — размер внутренней таблицы хешей для учёта активных сессий/IP; увеличение ускоряет поиск при большом количестве клиентов.
- DOSPageCount — сколько одинаковых запросов к одному URI разрешено за период DOSPageInterval.
- DOSSiteCount — сколько общих запросов к сайту разрешено за период DOSSiteInterval.
- DOSPageInterval / DOSSiteInterval — интервалы (в секундах) для подсчёта PageCount и SiteCount.
- DOSBlockingPeriod — время блокировки IP (в секундах) после превышения лимитов; в это время сервер возвращает 403.
- DOSEmailNotify — адрес, куда отправляются уведомления при блокировке IP.
- DOSLogDir — директория для логов, укажите путь, доступный для записи Apache.
Выбирайте значения, ориентируясь на реальную нагрузку: агрессивные лимиты могут вызвать ложные срабатывания при пиковой активности легитимных пользователей.
Тестирование mod_evasive
Для простого теста можно воспользоваться демонстрационным Perl‑скриптом, который поставляется в пакете:
sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.plОжидаемое поведение: скрипт выполняет 100 быстрых запросов к серверу; если модуль блокирует превышающие лимиты — вы увидите ответ 403.

Изображение: результат работы тестового скрипта Perl для проверки блокировки запросов модулем mod_evasive.
Практические рекомендации и шаблоны значений
- Для сайтов с низкой посещаемостью: DOSPageCount=2, DOSSiteCount=50, DOSBlockingPeriod=20.
- Для сайтов с высокой посещаемостью и API: увеличьте DOSHashTableSize и DOSSiteCount, например DOSHashTableSize=131071, DOSSiteCount=200.
- Всегда тестируйте в staging перед применением в проде — особенно если у вас агрессивные кэш‑политики или много легитимных ботов/сканеров.
Important: неверные настройки могут привести к блокировке легитимных пользователей и поисковых роботов.
Отладка и типичные проблемы
- Нет строчки evasive20_module при проверке: убедитесь, что пакет установлен и файл конфигурации существует в mods‑enabled; можно попробовать
sudo a2enmod evasive. - Не приходят письма: проверьте почтовую подсистему и корректность DOSEmailNotify; модуль не отправляет письма без правильно настроенного MTA.
- Ложные срабатывания: увеличьте DOSPageInterval/DOSSiteInterval или DOSBlockingPeriod уменьшите/увеличьте в зависимости от симптомов.
- Логи: проверьте указанную DOSLogDir и системный syslog; дополнительно включите debug‑уровень в Apache при необходимости.
Альтернативные и дополнительные подходы
- Использовать fail2ban для анализа логов и банов на уровне хостинга.
- Использовать модуль mod_security (WAF) для более тонкой фильтрации и правил.
- Выносить защиту на уровень CDN (Cloudflare, Fastly) или балансировщика, если возможен DDoS большого масштаба.
Когда mod_evasive не помогает: при масштабной распределённой атаке (много источников) требуется инфраструктурная защита (фильтрация на уровне сети или провайдера).
Роль‑ориентированные чек‑листы
Администратор:
- Установить пакет и проверить модуль.
- Настроить логирование и email уведомления.
- Выполнить тест и записать результаты.
DevOps:
- Протестировать настройки в staging.
- Добавить мониторинг по метрикам 403/500.
- Подготовить план отката конфигурации.
Инженер по безопасности:
- Сравнить защиту с существующей стратегией (CDN, WAF).
- Оценить риск ложных срабатываний для ботов и поисковых роботов.
Критерии приёмки
- После настройки модуль отвечает 403 при повторных быстрых запросах тестовым скриптом.
- Логи содержат записи о заблокированных IP и причинах блокировки.
- Уведомления по email приходят (если настроено).
- Нет критических ложных срабатываний для реального пользовательского трафика в течение 24–72 часов тестирования.
Шаблон действий при ложном срабатывании
- Отключить временно блок‑правило (уменьшить чувствительность).
- Просмотреть логи по конкретному IP и определить, легитимный ли трафик.
- Добавить IP в белый список (если причина подтверждена).
- Пересмотреть и адаптировать параметры DOSPageCount/DOSSiteCount/DOSBlockingPeriod.
Короткий словарь
- DoS — отказ в обслуживании.
- DDoS — распределённый отказ в обслуживании.
- WAF — веб‑приложение фаервол.
FAQ
Как временно отключить mod_evasive?
Отключите модуль и перезапустите Apache:
sudo a2dismod evasive
sudo /etc/init.d/apache2 restartМожно ли использовать mod_evasive вместе с fail2ban?
Да. mod_evasive предотвращает всплески на уровне Apache, fail2ban анализирует логи и может блокировать IP на уровне хоста — сочетание повышает гибкость защиты.
Подходит ли mod_evasive для защиты от крупных DDoS?
Нет, для масштабных DDoS необходимы сетевые решения (провайдер, CDN, специализированные сервисы). mod_evasive полезен против мелких бот‑атак и брутфорс‑кампаний.
Краткое резюме
- mod_evasive — полезный инструмент для локальной защиты Apache от частых и повторяющихся запросов.
- Настройте параметры под вашу нагрузку и тестируйте на отдельной среде.
- Используйте в связке с другими средствами (fail2ban, CDN, WAF) для комплексной защиты.
Похожие материалы
Найти человека онлайн с ZabaSearch
Поиск упоминаний в соцсетях: инструменты и советы
Удаление старых фото профиля в Telegram
Мобильный телефон как модем GPRS
Time to Walk (Apple): как получить и бесплатные альтернативы