DDoS SHIELD - Php Скрипт Защиты От Ddos

DDoS SHIELD - Php Скрипт Защиты От Ddos

Php Скрипт Защиты От Ddos атак.
Хоть от сильно больших DDOS атак вряд ли спасет,
малое количество ботов думаю отфильтрует
(пока не упадет Apache ну или на чем будет стоять ваш веб сервер

Версия: 1.02
Размер: 12 KB

У гостей нет доступа к скачиванию файлов с нашего сервера


Защита от 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

7. Перезапускаем cron чтобы применились изменения:
/etc/init.d/crond restart

Теперь все найденные боты буту попадать в блок-лист раз в 3 минуты. А полный список IP ботов сохраняется в /tmp/ddosbots
Внимание! Данный материал предоставлен сайтом исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Нет комментариев. Гость, не желаешь оставить первый комментарий?

Перед публикацией, советую ознакомится с правилами!

Наш Тelegram
Подписка залог успеха ;)
Бесплатный игровой хостинг
Только для жителей Украины
2 посетителя на сайте. Из них:
Гости1
Роботы1
Список пользователей
melissajaize Был(a) в сети 4 минуты назад
Samantawsq Был(a) в сети 41 минуту назад
Samantafak Был(a) в сети 1 час назад
booktGet Был(a) в сети 3 часа назад
MatthewElora Был(a) в сети 3 часа назад
ArthurAcouh Был(a) в сети 3 часа назад
Samantafww Был(a) в сети 4 часа назад
kirill56036 Был(a) в сети 4 часа назад
Natashauxx Был(a) в сети 4 часа назад
anislavple Был(a) в сети 4 часа назад
Natashaqoh Был(a) в сети 5 часов назад
GregoryGeafe Был(a) в сети 5 часов назад
Natashaare Был(a) в сети 5 часов назад
bookioGet Был(a) в сети 5 часов назад
JamesAlifs Был(a) в сети 6 часов назад
DannyTat Был(a) в сети 6 часов назад
Donnagax Был(a) в сети 7 часов назад
Natashaklv Был(a) в сети 7 часов назад
liroeasbal Был(a) в сети 7 часов назад
Natashaofg Был(a) в сети 7 часов назад
imRhype Был(a) в сети 7 часов назад
Natashapxh Был(a) в сети 8 часов назад
Remydelm Был(a) в сети 8 часов назад
Natashanhp Был(a) в сети 9 часов назад
omg зеркало Был(a) в сети 9 часов назад
bookmheGet Был(a) в сети 10 часов назад
rtyompak Был(a) в сети 11 часов назад
Samantaytx Был(a) в сети 12 часов назад
Danielpealo Был(a) в сети 12 часов назад
Samantaiuq Был(a) в сети 14 часов назад
Samantaqnf Был(a) в сети 14 часов назад
Chinaobset Был(a) в сети 15 часов назад
Samantacqw Был(a) в сети 15 часов назад
Earnestvap Был(a) в сети 16 часов назад
GeorgePlevy Был(a) в сети 16 часов назад
Thomastek Был(a) в сети 17 часов назад
EdwardCrose Был(a) в сети 17 часов назад
christiCon Был(a) в сети 17 часов назад
khailfnvt Был(a) в сети 17 часов назад
Natashaagi Был(a) в сети 18 часов назад