Скрипт защиты от ДДОС атаки

Скрипт защиты от ДДОС атаки

Скрипт Klavasoft AntiDDOS используется для защиты сайта от DDOS атаки по линии HTTP. Разумеется, скрипт не претендует на звание универсального и полного защитника от DDOS — для этих целей лучше использовать оборудование, стоимость которого измеряется десятками тысяч долларов. Если у вас нет такого оборудавания, но есть доступ к настройкам сервера, то вы также сможете обеспечить более эффективную защиту от DDOS, чем та, что предоставляет наш скрипт. А вот защитить виртуальны аккаунт от легонького любительского DDOSa этот скрипт вполне сможет, а такие ДДОС атаки встречаются наиболее часто ввиду дороговизны полномасштабных мероприятий.


Немного о реализации защиты от ДДОС

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

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


Настройка

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

<code><? // пример использования скрипта 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')      $lite_version = $ksa->visitor=='warm';  // по этой переменной можно отдавать "теплым" посетителям  // облегченную версию сайта    ?></code> 

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

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

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


Хотя судя по мануалу, функции работы с разделяемой памятью доступны во всех версиях PHP, случаются хостинги без средств межпроцессного взаимодействия. Чтобы выяснить, будет ли скрипт работать на вашем хостинге, вызовите функцию
<code>shm_attach(); </code> 
и если вы не получите
<code>Fatal error: Call to undefined function: shm_attach() in... </code> 

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

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

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

Все материалы сайта представлены для ознакомления, анализа и обсуждения. Помните, что мы не несём ответственность за размещаемые авторские материалы (сообщения), взятые из публичных открытых источников. Все размещённые на страницах сайта «Cloud-Project.ru» материалы предназначены исключительно для свободного ознакомления.
00:11
169
RSS
Нет комментариев. Ваш будет первым!
Загрузка...