Гид по технологиям

Установка и настройка mod_evasive на Apache

5 min read Безопасность Обновлено 01 Dec 2025
Установка и настройка mod_evasive на Apache
Установка и настройка 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.

Перл‑тест mod_evasive: пример вывода с кодом 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 часов тестирования.

Шаблон действий при ложном срабатывании

  1. Отключить временно блок‑правило (уменьшить чувствительность).
  2. Просмотреть логи по конкретному IP и определить, легитимный ли трафик.
  3. Добавить IP в белый список (если причина подтверждена).
  4. Пересмотреть и адаптировать параметры 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) для комплексной защиты.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Найти человека онлайн с ZabaSearch
Поиск людей

Найти человека онлайн с ZabaSearch

Поиск упоминаний в соцсетях: инструменты и советы
Маркетинг

Поиск упоминаний в соцсетях: инструменты и советы

Удаление старых фото профиля в Telegram
Руководство

Удаление старых фото профиля в Telegram

Мобильный телефон как модем GPRS
Интернет

Мобильный телефон как модем GPRS

Time to Walk (Apple): как получить и бесплатные альтернативы
Фитнес

Time to Walk (Apple): как получить и бесплатные альтернативы

Guake — всплывающая консоль для Linux
Linux

Guake — всплывающая консоль для Linux