• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

Предварительная диагностика

При возникновения подозрения на наличие DDoS на Ваш сайт проанализируйте нагрузку на Ваш сервер с помощью лога команды atop

atop -r /var/log/atop/atop_XXXXXXX

где /var/log/atop/atop_XXXXXXX - путь к логу atop за дату, когда нужно отследить нагрузку на сервер.

Навигацию по логу Вы можете осуществлять кнопкой t (вперед) и shift-t (назад), переход на определенное время с помощью кнопки b

После определения времени резкого повышения нагрузки на Ваш сервер Вам необходимо проанализировать логи Вашего веб-сервера.

Описание работы с логами веб-сервера находится по адресу https://freehost.com.ua/faq/faq/logi-web-servera-apache/

Если у Вас настроена часовая ротация логов, определите, какой файл лога содержит нужную Вам информацию. Проще всего определить, посмотрев начало файла лога

zcat /var/www/вашпользователь/data/logs/ваш.сайт.access.log.1.gz | head -5

После того, как будет определен необходимый файл, сделайте анализ его на количество запросов с одного айпи адреса.

zcat /var/www/вашпользователь/data/logs/ваш.сайт.access.log.1.gz | awk '{ print $1 }' | sort | uniq -c | sort -nr | head

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

zcat /var/www/httpd-logs/ваш.сайт.access.log | grep "DD/Mon/YEAR:HH" | awk '{ print $1 }' | sort | uniq -c | sort -nr | head

где DD - дата, Mon - месяц сокращеннно, YEAR год полностью и HH - часы.

Если количество запросов с одного или нескольких адресов аномально отличается от остальных, в таком случае именно с этих адресов осуществляется атака на Ваш сервер. Это могут быть как злоумышленники, также это может быть признаком, что Ваши сайты парсятся на изменение информации. Вы можете закрыть данные адреса с помощью файрвола в панели ISPManager. Для этого перейдите в панель, выберите меню Брандмауэр (firewall), после чего выделите строку WWW server:80 и нажмите кнопку изменить в верхнем правом углу панели. В появившемся окне выберите в выпадающем меню во второй строке "Частично закрытый" вместо "Открытый" и добавьте обнаруженные адреса злоумышленников в список "Запретить IP-адресам".

В случае, если атака производится с множества адресов Вы можете выполнить следующие операции. В первую очередь, лучшим вариантом для защиты от DDoS будет подключение Вашего сайта к CloudFlare. Все следующие рекомендации могут быть дополнением или альтернативой этого, но они не гарантируют результат и являются менее эффективными.

Настройка модулей nginx.

Вы можете ограничить количество подключений к Вашему сайту с одного адреса и/или количество запросов с одного адреса с помощью модулей nginx ngx_http_limit_req_module и ngx_http_limit_conn_module. Обращаем Ваше внимание, что слишком жесткие настройки в этих модулях могут привести к частичной или полность недоступности Вашего сайта для пользователей.

Настройка ограничения количества запросов к сайту:

Добавьте эти строки в файл настроек /etc/nginx/nginx.conf в секцию http {

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
limit_req_log_level error;

В данном случае состояния хранятся в зоне "one" размером 10 мегабайт, и средняя скорость обработки запросов для этой зоны не может превышать 1 запроса в секунду.

Добавьте включение этой зоны

limit_req zone=one burst=10;

где burst - разовый "всплеск" запросов с одного адреса.

Вы можете добавить эту строку как в секцию http {, тогда она будет действовать для всех сайтов Вашего сервера, так и в секции server или location сайта, который находится под DDoS

Настройка ограничения количества подключений к сайту:

Добавьте эти строку в файл настроек /etc/nginx/nginx.conf в секцию http {

limit_conn_zone $binary_remote_addr zone=two:10m;
limit_conn_log_level error;

И добавьте включение этой зоны в одну из секций http, server или location

limit_conn two;

Использование fail2ban для защиты от DDoS.

Установите fail2ban если он не был установлен

yum install fail2ban для Centos

apt-get install fail2ban для Ubuntu и Debian

Для защиты от простых ботов Вам с помощью fail2ban выполните следующие рекомендации.

В файле /etc/fail2ban/jail.conf приведите секцию apache-badbots к следующему виду:

[apache-badbots]
enabled  = true
port     = http,https
logpath  = /var/www/httpd-logs/yoursite.com.access.log
bantime  = 172800
action   = iptables[name=Bad, port=http, protocol=tcp]
maxretry = 10

Если ddos выполняется однотипными запросами по http Вы можете создать свое правило для fail2ban

Например для простого запроса к корню сайта:

Создайте файл фильтра

vi /etc/fail2ban/filter.d/apache-get.conf

Добавьте в него строки

[Definition]
failregex = ^<HOST> .*GET.*/\ HTTP/*

В файле /etc/fail2ban/jail.conf добавьте описание правила

[apache-get]
enabled  = true
port     = http,https
logpath  = /var/www/httpd-logs/yoursite.com.access.log
bantime  = 172800
action   = iptables[name=Bad, port=http, protocol=tcp]
maxretry = 100

Данное правило будет банить все айпи адреса, с которых производился запрос к корню сайта больше 100 раз. При таком использовании fail2ban мы рекомендуем Вам настроить ротацию логов Вашего сайта раз в час.

При повторяющемся запросе к index.php регулярное выражение в фильтре примет следующий вид

failregex = ^<HOST> .*GET.*/index.php HTTP/*

Заказав услугу аренда сервера у компании FREEhst.UA Вы можете быть уверенными в том, что наши специалисты помогут Вам в настройке сервера. А еще, при покупке выделенного сервера можно зарегистрировать домен бесплатно.

Дата: 25.03.2016
Автор: Эдуард
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA