Скрипт Klavasoft AntiDDOS
Скрипт 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>
В 3-й версии скрипта реализована блокировка всей сети класса C, что многократно повышает эффективность скрипта, так как часто бывает инфицированна вся сетка компьютеров, осуществляющих DDOS. Такой режим включен по умолчанию, и отменить его можно установкой поля block_cnet объекта в false.
Настройка
Все упомянутые параметры поддаются настройке. Вот развернутый вариант ее:
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')
{
header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
header('Retry-After: 30');
die('sleep');
}
$lite_version = $ksa->visitor=='warm'; // по этой переменной можно отдавать "теплым" посетителям
// облегченную версию сайта
?>
А если вкратце, то достаточно вставить в хэдер сайта такой код:
Code
include "$_SERVER[DOCUMENT_ROOT]/ks_antiddos.php";
$ksa = new ks_antiddos();
$ksa->doit(20,10);
в предположении, что скрипт располагается в корневой папке вашего сайта. Технические требования
Хотя судя по мануалу, функции работы с разделяемой памятью доступны во всех версиях PHP, случаются хостинги без средств межпроцессного взаимодействия. Чтобы выяснить, будет ли скрипт работать на вашем хостинге, вызовите функцию
и если вы не получите:
Code
Fatal error: Call to undefined function:
shm_attach() in...
то пациент жить будет.
Для просмотра и удаления списка фрагментов разделяемой памяти требуется доступ к командной строке. Заметим, что что эта функция не критически важна - скрипт отлично работает без просмотра админом данных о разделяемой памяти. Более того, если доступа к командной строке нет - скрипт все равно способен удалить область расширенной памяти. (Которая, вобщем-то и так сканчается при ближайшей перезагрузке)
Для доступа к разделяемой памяти не используются семафоры, поскольку зависание семафора способно заблокировать весь трафик. Время выполнения скрипта - пол миллисекунды и вероятность накладки ничтожна. И, конечно, в таких случаях скрипт нормально восстанавливается.
При вызове скрипт непосредственно в браузере - доступна контрольная панель.
Лицензия
Вы можете свободно использовать и распространять данное ПО(скрипт), вы также можете модифицировать код ПО для собственных нужд. Модифицированный код может распространяться только через автора ПО на сайте Klavasoft. При распространении или модификация кода не допускается изменению в файлах ПО блока, содержащего URL-а сайта (klavasoft.com), автора (Cosinus) и названия скрипта http://klavasoft.com/. Автор ПО не несет никакой ответственности ни по каким поводам.
При использовании скрипта категорически приветствуется размещение ссылки, например, такой:
Code
<a href="http://klavasoft.com">Klavasoft</a>
Code
<a href="http://klavasoft.com/antiddos">Klavasoft Anti
Файлы http://klavasoft.com/codefiles/ksantiddos21.zip
http://klavasoft.com/codefiles/ksantiddos30.zip
Credits : http://klavasoft.com/