Apache2 mod_evasive vs mod_security с OWASP crs при защите от DDOS?

Добрый день,

Я запускаю сервер Apache2 перед Tomcat, и мне нужно реализовать механизм защиты от DDOS на уровне Apache2. У меня есть два кандидата: mod_evasive и mod_security2 с основным набором правил OWASP.

Mod_security уже установлен для общей защиты, но вопрос: стоит ли добавлять mod_evasive помимо mod_security только для DDOS (есть ли у него какие-то серьезные преимущества) или правила OWASP crs в каталоге /experimental_rules/ (modsecurity_crs_11_dos_protection.conf) обеспечивают такая же защита? Или это просто вопрос предпочтений? Обычно сайты имеют не очень высокую посещаемость.

Мартин


person Martynas Sušinskas    schedule 28.10.2013    source источник


Ответы (2)


Было бы хорошо использовать mod_evasive или fail2ban параллельно с mod_security.

mod_security уже позаботился о нескольких вещах, особенно для DDOS, однако mod_evasive или fail2ban пригодятся для обработки нежелательных множественных запросов, чтобы задушить сервер.

person KNOWARTH    schedule 20.04.2015

Я знаю, что это старый вопрос, но поскольку на него нет принятого ответа, вот сравнение двух инструментов. При поиске в Интернете вы почти всегда найдете рекомендации по установке обоих. Кто-то может свободно сказать мне, что я здесь не прав, но я думаю, что это пустая трата ресурсов. Текущая версия ModSecurity 2.9.3 с CRS 3.3.1, на мой взгляд, может заменить запуск mod_evasive. Я думаю, что он работает лучше и более настраиваемый, хотя они немного отличаются.

mod_evasive по умолчанию блокирует запросы с IP-адреса для того же сайта Apache, когда количество запросов с этого IP-адреса достигает 50 в секунду. Он также имеет отдельную настройку для блокировки запросов с IP-адреса для той же страницы на сайте. По умолчанию это значение равно 2 в секунду, что будет слишком мало для большинства сайтов. Период блокировки по умолчанию составляет 10 секунд (на мой взгляд, мало). Конечно, все это можно настроить. Основное различие между mod_evasive и mod_security заключается в том, что mod_evasive также по умолчанию блокирует запросы одних и тех же страниц. Я также должен упомянуть, что mod_evasive использует номер дочернего процесса Apache, чтобы определить, учитываются ли запросы по IP-адресу. Если Apache порождает новый процесс, эти запросы не будут учитываться в блоке. Кроме того, некоторые запросы могли проскальзывать даже после блокировки. Вы должны убедиться, что Apache имеет высокое значение MaxRequestsPerChild.

mod_security с установленным набором основных правил по умолчанию не защищает от DOS-атак. Вы должны специально включить эту функцию в файле crs-setup.conf, раскомментировав правило 900700:

SecAction \
 "id:900700,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:'tx.dos_burst_time_slice=60',\
  setvar:'tx.dos_counter_threshold=100',\
  setvar:'tx.dos_block_timeout=600'"

Вот что он делает: по умолчанию это блокирует запросы с определенного IP-адреса, когда клиент делает 100 или более запросов в течение 60 секунд. Так, например, если клиент делает 100 запросов, скажем, за 30 секунд, они будут заблокированы на 600 секунд. На это влияют и другие настройки: Если setvar:tx.paranoia_level=1, то перед блокировкой требуется два пакета по 100 запросов, каждый в течение 60 секунд. Однако, если вы установите 'setvar:tx.paranoia_level=2' или выше, потребуется только один пакет. ModSecurity также добавляет еще один приятный элемент стандартной функциональности: он исключает статические файлы из счетчика запросов. В правиле 900260 расширения по умолчанию: setvar:'tx.static_extensions=/.jpg/ /.jpeg/ /.png/ /.gif/ /.js/ /.css/ /.ico/ /.svg/ /.webp/' Это помогает предотвратить случайную блокировку, когда клиент запрашивает статический файл, поскольку это не требует огромных ресурсов вашего сервера. Таким образом, мы сосредоточимся на DOS-атаках, которые могут фактически замедлить работу сервера и уменьшить количество ложных срабатываний.

Заключение

Если вы хотите легко контролировать блокировку по определенным запросам страниц или вам нужна быстрая и простая настройка защиты от DOS, включите mod_evasive. Я также добавлю, что, вероятно, немного проще настроить mod_evasive для обновления ваших iptables и запуска скриптов при попадании.

Если вы хотите больше контролировать каждый аспект блокировки DOS-атак и того, что происходит во время блокировки, вам действительно нужен только mod_security. Если все, что вас волнует, это DOS-атаки, тогда mod_security, вероятно, излишен. С точки зрения DDoS-атаки, я думаю, что оба инструмента будут одинаково полезны с настройками по умолчанию, поскольку каждый из них хранит хеш-таблицу по IP-адресу. Теперь, если вы хотите написать определенные правила для mod_security, тогда нет ограничений на то, как и что вы блокируете, и вы даже можете воссоздать блокировку с помощью функции запроса страницы mod_evasive, если считаете, что вам это нужно.

person steveH    schedule 14.02.2021