База знаний по Open Source
Авторизация
Поиск по базе знаний

В Apache существует модуль, предназначенный для отражения DDOS атак – модуль  mod-evasive. Этот модуль отслеживает количество подключений к странице и сайту за определенный интервал времени с одного IP и блокирует этот IP адрес на определенное время.

По умолчанию,модуль mod-evasive вообще-то не блокирует IP, а просто выдает ему вместо контента код 403. То-есть Apache все равно производит обработку и посылает ответ, хоть и гораздо меньший. И соответствующие записи появляются в  логах доступа и ошибок. Так что при сильной атаке Apache все равно упадет. Но от слабеньких DOS атак помогает.

В Ubuntu модуль mod-evasive присутствует в репозитории и устанавливается командой

sudo apt-get install libapache2-mod-evasive

Создаем файл настроек mod-evasive  /etc/apache2/mods-available/mod-evasive.conf со следующим содержимым:

<IfModule mod_evasive20.c>
DOSHashTableSize 4096
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
DOSEmailNotify admin@site.com
</IfModule>

Доступные для использования опции:

  • DOSHashTableSize: это размер хэш-таблицы, обрабатывающей запросы к веб-серверу.
  • DOSPageCount: число запросов к одной странице от одного и того же IP в течение установленного интервала времени.
  • DOSSiteCount: число запросов ко всему сайту с одного IP в течение установленного интервала времени.
  • DOSPageInterval: Интервал времени для директивы DOSPageCount (в секундах)
  • DOSSiteInterval: Интервал времени для директивы DOSSiteCount (в секундах)
  • DOSBlockingPeriod: Время блокировки (в секундах)
  • DOSEmailNotify: адрес электронной почты, на который будет послано уведомление о блокировке
  • DOSSystemCommand: команда, которая будет выполнена при блокировании IP. В переменную «%s» передается адрес блокируемого IP)
  • DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 192.168.1.*)

Включаем модуль mod-evasive  и перезапускаем Apache:

sudo a2enmod mod-evasive
sudo service apache2 restart

В /usr/share/doc/libapache2-mod-evasive/examples есть скрипт на Perl для проверки модуля mod-evasivetest.pl. Для проверки работоспособности модуля правим в скрипте адрес сервера и запускаем скрипт:

test.pl

Если модуль mod-evasive работает нормально, сначала должно выдаваться несколько сообщений:

HTTP/1.1 200 OK

а при достижении указанного порога запросов:

HTTP/1.1 403 Forbidden

У меня mod-evasive сразу же забанил Майкрософтовский  bing бот 😆

Добавить комментарий