Данный способ защиты не панацея, и скорее всего не спасет от профессиональной DDoS атаки, когда ваш сервер на CentOS подвергается запросам от множества IP адресов. Однако способ бесплатныйи убережет хотя бы от начинающих DDoS-еров
Защищаем сайт от DDoS
Суть заключается в установке модуля mod_evasive для Apache. Который будет блокировать IP адреса, с которых идет большое количество запросов к серверу. То есть, защита ставится сразу на весь сервер и под ее правила попадают все сайты на сервере
Устанавливаем сам модуль, командой
yum install mod_evasive
Устанавливаем редактор nano (На виртуальной машине Битрикс его нет, по умолчанию)
yum install nano
Открываем конфиг Apache
nano /etc/httpd/conf/httpd.conf
И добавляем в него строчку, для загрузки модуля при старте
LoadModule evasive20_module modules/mod_evasive20.so
И перезагружаем Apache
service httpd restart
Все теперь ваш сервер защищен от простой, топорной DDoS атаке. Если вас не устраивают правила срабатывания защиты, которые применяются по умолчанию, вы можете сконфигурировать модуль под себя
Для этого открываем файл конфигруции mod_evasive
nano /etc/httpd/conf.d/mod_evasive.conf
И правим на свой вкус.
- DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
- DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени.
- DOSSiteCount: число запросов ко всем страницам домена, т.е если поступило более 50-ти запросов с одного ай-пи на разные страницы домена — тогда такой ай-пи будет заблокирован.
- DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
- DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
- DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
- DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован.
- DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется. Вы можете использовать это для добавления IP-адреса в таблицу фаервола. (пример: «/sbin/iptables -A INPUT -p tcp —dport 80 -s %s -j REJECT» В %s передается от модуля IP)
- DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)
PS Добавлено после написания заметки. Не учел, один момент. Битрикс виртуальная машина получает запросы на nginx, а не на apache. Чуть позже дополню заметку