DDoStop — это модифицированная версия проекта DDoS-Shield. Загрузить проект DDoStop можно здесь.
Описание
DDoStop — это набор скриптов с минимальным кодом для быстрой конфигурации и развертывания защиты PHP — страниц сайта от DDoS — атак. Конечно, проект не претендует на профессиональный подход к решению данной проблемы, но для простой защиты от ботов и мелких DDoS — атак вполне годен.
Техническая сторона
DDoStop работает по модели различного временного доступа реальных посетителей и ботов. Есть возможность сконфигурировать проект на минимальное среднее время между визитами одного посетителя и максимальных посещений за минимальное время — это главный пункт конфигурации. Реальные посетители физически не могут посетить одну страницу 90 в течении 30 секунд, но боты, которые являются основными DDoS — вредителями, могут себе такое позволить. Когда боты начинают атаковать, то они сразу попадают под запрет на доступ к сайту с выдачей ошибки в заголовке 503, как ниже на рисунке
Если бот удалился, то через некоторое время его IP разблокируется, а это время можно задать в конфигурационном файле conf_ddos.php(об этом будет рассказано ниже). IP каждого бота , после блокировки, попадает в log-файл AttackersIPs.Log, расположенный в папке ddos/log. В зависимости от степени безопасности могут выходить различные информационные сообщения. После каждой атаки ботов на адрес, записанный в конфигурационном файле отправляет сообщение на уведомление о том, что пойман очередной бот. Данная защита имеет большую значимость, когда требуется быстро защитить страницы сайта, чтобы предотвратить отток большого трафика и нагрузку на CPU от наплыва большого количества запросов DDoS — ботов.
Файлы проекта и включение в сайт
Проект состоит из 2 скриптов php: ddos/index.php и conf_ddos.php, иконки бана в папке ddos/images/cross.gif, файла лога ddos/log/AttackersIPs.Log.
- index.php — ядро защиты. Весь процесс с операциями с IP выполняется здесь;
- conf_ddos.php — файл конфигурации для начальной настройки проекта;
- AttackersIPs.Log — файл, в которую будут записаны блокированные IP — адреса ботов.
Для включения сайта достаточно разархивировать проект с GitHub в корневую папку сайта, как ниже на рисунке
И теперь, для того чтобы защитить ту или иную страницу достаточно подключить файл conf_ddos.php при помощи php функции require(«./conf_ddos.php») первой строчкой
include("conf_ddos.php"); //Защишаем страницу от DDoS - атак
Конфигурация/настройка защиты
Вся конфигурация и настройка управляется через conf_ddos.php, который имеет следующий вид
$crlf=chr(13).chr(10); $itime=3; // Минимальное число секунд между визитами $imaxvisit=10; // Максимальное число визитов в $itime x $imaxvisits секундах $ipenalty=($itime * $imaxvisit); // Минуты ожидания $iplogdir="./ddos/logs/";// Папка хранения логов с IP $iplogfile="./AttackersIPs.Log"; //Имя файла лога // Время $today = date("Y-m-j,G"); $min = date("i"); $sec = date("s"); $r = substr(date("i"),0,1); $m = substr(date("i"),1,1); $minute = 0; // установка данных для администратора $to = 'support@voting.ru'; //Адрес админа $headers = 'From: voting.ru support@voting.ru' . "\r\n" . // 'X-Mailer: voting.ru защишен от DDoS'; $subject = "Предупреждение на возможные DDOS атаки @ $today:$min:$sec"; //Сообщение при бане: $message1='<span style="color: red;">Временный интенсивный траффик или распознена как DDOS атака!!!</span> '; $message2='Пожалуйста, подождите ... '; $message3=' секунд или повторите попытку входа через несколько минут. '; $message4='<span style="color: blue;">Защита призведена DDOS скриптом на PHP!!!</span> Если вы человек, то смените IP и вы свободны. Мы временно забанили ваш IP <b>'.$_SERVER["REMOTE_ADDR"].' </b>из-за DDOS атаки.'; $message5=' Ваш сайт был атакован или боты захотели зайти через IP - адресов: '.$_SERVER["REMOTE_ADDR"]; $message6=' <img src="./ddos/images/cross.gif" alt="" border="0" />'; include("ddos/index.php");//Включаем главный файл DDOS - защиты из диерктории ddos
Проверка
Для проверки заходим на страницу с включенной DDoS защитой и жмем F5 для имитации обновления страницы в режиме DDoS — атаки и видим страницу