avatar_ekvat

Защита от DDoS: скрипт для хранения списков времен заходов с каждого IP

Автор ekvat, 2011 Март 14, 20:01

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] защита от ddosскрипт хранения времени заходовтехническая страница

ekvat

Скрипт хранит в разделяемой памяти списки времен заходов с каждого IPa за последнее время. Если количество заходов в таком списке превысит определенный уровень, посетителю выдается техническая страница, которая информирует его о загруженности сервера и автоматически повторяет запрос страницы через некоторое время.
Вот пример такой страницы:

<html>
<meta http-equiv='refresh' content='20'>
<body>
<h2>Our server is currently overloaded, your request will be repeated automatically in 20 seconds</h2>

В 3-й версии скрипта реализована блокировка всей сети класса C, что многократно повышает эффективность скрипта, так как часто бывает инфицированна вся сетка компьютеров, осуществляющих DDOS. Такой режим включен по умолчанию, и отменить его можно установкой поля block_cnet объекта в false.

Настройка
Все упомянутые параметры поддаются настройке. Вот развернутый вариант ее:

<? // пример использования скрипта Klavasoft AntiDDOS

include "$_SERVER[DOCUMENT_ROOT]/ks_antiddos.php";
$ksa = new ks_antiddos();

// скрипт анализирует активность текущего ИПа за последние $seconds_limit секунд
$seconds_limit = 20;
// считая заходы свыше $hit_limit - подлежащими блокированию
$hits_limit = 10;

// скрипт определяет статус посетителя ($ks-?>visitor) как:
// raw  - посетитель бы по каким-либо причинам не обработан скриптом
// new  - это первый заход посетителя за последние $seconds_limit секунд
// cool - количество заходов посетителя - от 2 до $ksa->warm_level
// hot  - количество заходов больше чем hits_limit и посетитель должен быть заблокирован (приостановлен)

// опционально можно сделать настройки
$ksa->auto = false;  // не проводить блокирования hot-посетителей скриптом (вы предполагаете сами это сделать)
$ksa->warm_level = 3;    // значение warm_level по умолчанию - $hits_limit/2
$ksa->delay = 10;        // предлагать 'hot' посетителю вернуться через $ksa->delay секунд
// значение по умолчанию - 20


// определяем статус посетителя
$ksa->doit($seconds_limit,$hits_limit);
// если вы не сбросили значение поля $ksa->auto и статус посетителя $ksa->visitor=='hot'
// то скрипт отправит браузеру headers and HTML которые организуют задержку перед повторным запросом.

// если $ksa->auto == false, то проверяем надо ли банить посетителя
if ($ksa->visitor=='hot')
{
header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
header('Retry-After: 30');
die('sleep');
}

$lite_version = $ksa->visitor=='warm';  // по этой переменной можно отдавать "теплым" посетителям
// облегченную версию сайта

?>

А если вкратце, то достаточно вставить в хэдер сайта такой код

include "$_SERVER[DOCUMENT_ROOT]/ks_antiddos.php";
$ksa = new ks_antiddos();
$ksa->doit(20,10);

в предположении, что скрипт располагается в корневой папке вашего сайта.

Технические требования

Хотя судя по мануалу, функции работы с разделяемой памятью доступны во всех версиях PHP, случаются хостинги без средств межпроцессного взаимодействия. Чтобы выяснить, будет ли скрипт работать на вашем хостинге, вызовите функцию
shm_attach();

и если вы не получите

Fatal error: Call to undefined function: shm_attach() in...

то пациент жить будет.

Для просмотра и удаления списка фрагментов разделяемой памяти требуется доступ к командной строке. Заметим, что что эта функция не критически важна - скрипт отлично работает без просмотра админом данных о разделяемой памяти. Более того, если доступа к командной строке нет - скрипт все равно способен удалить область расширенной памяти. (Которая, вобщем-то и так сканчается при ближайшей перезагрузке)

Для доступа к разделяемой памяти не используются семафоры, поскольку зависание семафора способно заблокировать весь трафик. Время выполнения скрипта - пол миллисекунды и вероятность накладки ничтожна. И, конечно, в таких случаях скрипт нормально восстанавливается.

Файлы:
V2.1 - https://www.megaupload.com/?d=0BSZ4EDJ
V3.0 - https://www.megaupload.com/?d=UBKQIAFE

Мне только стоило немного порытся по гуглу и конечно не откажусь от спасибо  (rock)
Взят: www.klavasoft.com

dn0

Можеш еще обьяснить нубу куда это все засунуть и что где прописать?

ausmann

Староя песня и помогает толко от школников
но всёже лучше чем нечего

ekvat

#3
ЦитироватьСтароя песня и помогает толко от школников
но всёже лучше чем нечего

++

ЦитироватьМожеш еще обьяснить нубу куда это все засунуть и что где прописать?

Там всё понятно написано читай внимательней  :rolleyes:

dn0

А все спс разобрался,первый раз прочитал не очень внимательно

ShoT

бред... и мозги парить легче поставить mod_dosevasive22.dll

ekvat

Цитироватьбред... и мозги парить легче поставить mod_dosevasive22.dll

Вот ты и ставь а другим я посоветую систему защиты по лучше !! mod_dosevasive22.dll <-- Я сам лично ставил я в нём разочеровался , правдо не на му а на вов  сервер но разницы нету. Он мне с вечной ошибкой мозги парел и работал он по разному , так что извеняйте :facepalm:

ShoT

В хороших руках и йух балалайка....

vadimash_rs

Ага вот такой вопрос не кто не пытался ражовывать Брандмаужер с Вин ервер 2008? веди весь мелкософт на нём сидит и ещё некто не жалуеца

ShoT

И такая тема на форуме уже существует!!!! Тыц

ekvat

Тогда извените за топик я искал по данной теме и ненашол  

Похожие темы (5)

Сообщений: 2
Просмотров: 6642

Сообщений: 1
Просмотров: 6835

Сообщений: 1
Просмотров: 10805

Сообщений: 0
Просмотров: 6475

Сообщений: 1
Просмотров: 6077