SHARK 39 Опубликовано 3 января, 2012 Php Скрипт Защиты От Ddos атак. Хоть от сильно больших DDOS атак вряд ли спасет, малое количество ботов думаю отфильтрует (пока не упадет Apache ну или на чем будет стоять ваш веб сервер Версия: 1.02 | Размер: 9.7 KB | Залито на: google code Защита от DDOS (PHP DDoS SHIELD, IPROUTE BLACKHOLE) Для успешного отражения DDOS атаки необходимо решить 2 проблемы: • найти способ различать ботов • найти способ с наименьшей потерей ресурсов блокировать их Со второй проблемой успешно справляется ip route blackhole (да и провайдера подключить реально), а вот с первой возникают трудности. Очередной раз изобретая способ как отбиться от ботов наткнулся на проект DDOS SHIELD (http://code.google.com/p/ddos-shield/). Это PHP скрипт, соответственно дальше речь пойдет о защите сайтов написанных на PHP. Но я думаю посмотрев на его исходники (очень небольшие) можно без труда переписать скрипт и на другие платформы. Итак разработчики пишут нам что PHP DoS SHIELD работает на идее различного времени доступа к сайту у человека и бота. Ни один человек никогда не сможет посетить страницу 90 раз в течение 30 секунд (боты могут и больше). Когда скрипт определяет бота он выдает ошибку 503 и предупреждающее сообщение. IP адрес бота и его User Agent записываются в log-файл. Как раз то что нам нужно. Эксперименты на сервере подвергаемом DDOS показали что скрипт достаточно хорошо определяет боты. И мы можем решить нашу первую проблему. Идея следующая - поставить на сайт PHP DDOS SHIELD а его log-файл обрабатывать собственным скриптом и блокировать на уровне маршрутизации при помощи ip route blackhole. 1. Скачиваем PHP DoS SHIELD и распаковываем в папку с сайтом: cd /var/www wget http://ddos-shield.googlecode.com/files/tweety_1_02.tar.gz tar xzvf ./tweety_1_02.tar.gz 2. Редактируем файл tweety.php по своему вкусу. Нас интересует секция INITIALIZATIONS. $iplogdir - папка куда будут писаться временные и log-файлы $iplogfile - имя log-файла (он нам потребуется) $to - адрес электронной почты, куда будут отправляться предупреждения об атаке $itime - минимальное количество секунд между посещениями с одного адреса $imaxvisit - максимальное количество посещений в $itime x $imaxvisits секунд 3. Прописываем строчку: include("tweety.php"); в php-файл на который ведется атака (чаще всего это бывает файл index.php в корне сайта). Теперь можно посмотреть в папку Tweetylogs. Если все сделали правильно - там должны появляться файлы в том числе AttackersIPs.Log . 4. Теперь создадим скрипт который будет обрабатывать AttackersIPs.Log и блокировать боты на уровне маршрутизации. cat > /etc/antiddostweety #!/bin/sh #путь к файлу AttackersIPs.Log LOG_PATH="/var/www/Tweetylogs/AttackersIPs.Log" cat $LOG_PATH | awk '{print $1}' > /tmp/newddosbots cat /tmp/newddosbots >> /tmp/ddosbots echo > $LOG_PATH list=`cat /tmp/newddosbots` for ip in $list; do ip route add blackhole $ip done 5. Даем ему права на исполнение: chmod +x /etc/antiddostweety 6. Прописываем его в cron: cat > /etc/cron.d/antiddos */3 * * * * root /etc/antiddostweety 6. Перезапускаем cron чтобы применились изменения: /etc/init.d/crond restart Теперь все найденные боты буту попадать в блок-лист раз в 3 минуты. А полный список IP ботов сохраняется в /tmp/ddosbots СКАЧАТЬ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FroZar 3 Опубликовано 4 января, 2012 Шарк ты сам веришь что ПхП скрипт защитит от ддос атаки?! От ддос спасают можно сказать только прямые руки... и от части оборудование.... Не, может этот скрипт что-то и сможет заблочить, но......... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SHARK 39 Опубликовано 4 января, 2012 Такие вещи спасают от неудачных недовольных школьников. А от ботнета и остальных тяж. атак - спец оборудование это и так ясно... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FroZar 3 Опубликовано 7 января, 2012 Такие вещи спасают от неудачных недовольных школьников. А от ботнета и остальных тяж. атак - спец оборудование это и так ясно... Шарк так и оборудование сразу и нужно нормальное иметь чтобы делать сервер хороший а не го...но, согласен??? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Artur_xD 403 Опубликовано 9 января, 2012 Не удаёться прописать строчку include("tweety.php"); в index.php после того как прописую и сохраняю размер index.php уменьшаеться из 5 ти до 2 кб, и сайт перестаёт работать... Подскажите: Что делаю не так? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты