Скачать Скрипт защиты от ДДОС атаки
Скрипт Klavasoft AntiDDOS
Скрипт Klavasoft AntiDDOS используется для защиты сайта от DDOS атаки по линии HTTP. Разумеется, скрипт не претендует на звание универсального и полного защитника от DDOS - для этих целей лучше использовать оборудование, стоимость которого измеряется десятками тысяч долларов. Если у вас нет такого оборудавания, но есть доступ к настройкам сервера, то вы также сможете обеспечить более эффективную защиту от DDOS, чем та, что предоставляет наш скрипт. А вот защитить виртуальны аккаунт от легонького любительского DDOSa этот скрипт вполне сможет, а такие ДДОС атаки встречаются наиболее часто ввиду дороговизны полномасштабных мероприятий.
Немного о реализации защиты от ДДОС
Скрипт хранит в разделяемой памяти списки времен заходов с каждого 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>
Настройка
Все упомянутые параметры поддаются настройке. Вот развернутый вариант ее:
<? // пример использования скрипта 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...
то пациент жить будет.
Для просмотра и удаления списка фрагментов разделяемой памяти требуется доступ к командной строке. Заметим, что что эта функция не критически важна - скрипт отлично работает без просмотра админом данных о разделяемой памяти. Более того, если доступа к командной строке нет - скрипт все равно способен удалить область расширенной памяти. (Которая, вобщем-то и так сканчается при ближайшей перезагрузке)
Для доступа к разделяемой памяти не используются семафоры, поскольку зависание семафора способно заблокировать весь трафик. Время выполнения скрипта - пол миллисекунды и вероятность накладки ничтожна. И, конечно, в таких случаях скрипт нормально восстанавливается.
Файлы
KS Antiddos ver 2.1 (zip):
Зарегистрируйтесь чтобы увидеть что тут скрыто.
KS Antiddos ver 3.0 (zip):
Зарегистрируйтесь чтобы увидеть что тут скрыто.
Источник:_http://klavasoft.com