• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Как определить, что на сайт идет ддос атака

  • Автор темы DeathStar
  • Дата начала
DeathStar

DeathStar

Member
#1
Вчера была сильная атака на форум, мощностью 117 GB.

Посмотреть вложение 173

Бесплатный тариф на Cloudflare выдержал, но пришлось включить режим Under Attack (см. настройка Cloudflare от ддос атак). Фильтра по странам в связке с php скриптом не хватило, но стояли мягкие настройки в php-скрипте. Нужно доработать автоматическое изменение настроек при резком усилении нагрузки на сервер и настроить автоматическое изменение режима защиты через API Cloudflare.
можно накатать bash скрипт который сам этот режим будет врубать или отрубать в зависимости от LA на сервере, работает хорошо.
 
admin

admin

Администратор
Администрация
#2
Как понимаю API клоуда не дает возможности отследить атаку в реальном времени - данные появляются позже. Тогда хватило бы простейшего PHP скрипта, который по крону бы обращался к API клоуда и включал режим когда нужно.
 
DeathStar

DeathStar

Member
#3
Как понимаю API клоуда не дает возможности отследить атаку в реальном времени - данные появляются позже. Тогда хватило бы простейшего PHP скрипта, который по крону бы обращался к API клоуда и включал режим когда нужно.
нет, но bash скриптом можно мониторить нагрузку и включать и выключать режим )))) есть реально рабочий пример
 
admin

admin

Администратор
Администрация
#4
Вариантов мониторинга много: можно по количеству соединений или сессий, по загруженности проца и т.д. Какой будет самый оптимальный?
 
DeathStar

DeathStar

Member
#6
attack.sh

Код:
/usr/bin/curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/ID_зоны/settings/security_level" \
     -H "X-Auth-Email: ЛОГИН" \
     -H "X-Auth-Key: API ключ" \
     -H "Content-Type: application/json" \
     --data '{"value":"under_attack"}'
/usr/bin/pkill -9 httpd
/usr/sbin/service httpd restart
/usr/bin/pkill -9 nginx
/usr/sbin/service nginx restart
noattack.sh
Код:
/usr/bin/curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/ID_зоны/settings/security_level" \
     -H "X-Auth-Email: ЛОГИН" \
     -H "X-Auth-Key: API ключ" \
     -H "Content-Type: application/json" \
     --data '{"value":"high"}'
ddos.sh
Код:
#!/bin/bash
trigger=2.00
load=`cat /proc/loadavg | awk '{print $1}'`
response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
lock_file="/tmp/cf.lock"
if [[ $response = "greater" ]]
then
/usr/bin/touch $lock_file
/etc/ddos/attack.sh
echo "$(/bin/date +%H\:%M\:%S\ %d\.%m\.%Y) --- Cloudflare I am under attack mode enabled" >> /var/log/cf.log
fi
unblock.sh

Код:
#!/bin/bash
trigger=1.00
load=`cat /proc/loadavg | awk '{print $1}'`
response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L < T){ print "lower"}}'`
lock_file="/tmp/cf.lock"
if [ -f "$lock_file" ]
then
if [[ $response = "lower" ]]
then
/etc/ddos/noattack.sh
echo "$(/bin/date +%H\:%M\:%S\ %d\.%m\.%Y) --- Cloudflare I am under attack mode disabled" >> /var/log/cf.log
/bin/rm -rf $lock_file
fi
else
    echo "$lock_file not found."
fi
положить все в /etc/ddos
потом выполнить
Код:
cd /etc/ddos && chmod +x *
, и в крон добавить

Код:
* * * * * root sleep 30; /etc/ddos/ddos.sh > /dev/null 2>&1
0 * * * * root /etc/ddos/unblock.sh > /dev/null 2>&1
 
admin

admin

Администратор
Администрация
#7
А не будет ли ложных срабатываний, если на сервере выполняются по крону какие нибудь ресурсоемкие процессы: бекапы, обработки данных. Может лучше по количеству соединений ботов как-нибудь определять?
 
Последнее редактирование:
admin

admin

Администратор
Администрация
#8
Тут приведено несколько рекомендаций.
http://adminunix.ru/komandy-dlya-proverki-ddos-ataki/

Просмотр числа процессов апача мне кажется более корректным способом, ведь нагрузка проца может вырасти от бекапирований и от много чего еще. Особенно частые срабатывания будут на маломощных серверах. Мы, в частности, пытаемся отбивать атаки на серверах от 5$ в месяц, с 1-2 гб памяти. Вот реальный случай. Проц на таких впс-ках может внезапно вырасти от тысячи причин.

Смотрим число процессов апача (httpd, apache или apache2).
Код:
ps aux | grep apache | wc -l
Дальше уже смотреть по посещаемости сайта. Для небольших сайтов уже 30-50 открытых процессов может свидетельствовать об атаке. При посещаемости 1000 хостов будет в среднем 10-20 таких процессов.

Как вариант, можно посмотреть число коннектов. Тут аналогично и команде выше - на каждые 1000 хостов в сутки будет примерно 10-20 одновременных коннектов. При нормальных настройках кэширования, разумеется.
Код:
netstat -na | grep :80 | wc -l
Осталось совместить это с баш-скриптом. Я не понял как там определяется, что идет нагрузка.
 
Сверху