Минусовки на DJ-X.info
Страницы: 1   Вниз

Автор Тема: Nginx защита от DDoS атак с помощью Cookies  (Прочитано 8408 раз)

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

DJ-X

  • Музыкант №1
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 151
    • Просмотр профиля
    • Минусовки Бесплатно !

Сегодня придумал совершенно новую защиту от DDoS атак с помощью Cookies для Nginx!
Работает у клиентов с включёнными Cookies, а без них работает кэш Nginx!
Притормозите поисковых роботов чтобы они открывали страницы сайта не чаще чем 1 страницу в 2 секунды!
Это настраивается в robots.txt, а у робота Google в инструментах для веб-мастеров.   
Можно настроить время ожидания после каждой загруженной страницы под себя.
И поставить нужное количество раз после которых наш клиент будет заблокирован на определённое время.
Время указано в секундах.
Может и вам пригодится!
Пример работы видно на этой странице.


    location ~ \.php5$ {


# DJ-X Анти DDOS
  if ($http_cookie ~* "DJ-P=4"){
    return 444;
  }

add_header Set-Cookie "DJ-X=ON;Path=/;Max-Age=+900";
  if ($http_cookie ~ "DJ-X=ON"){
 add_header Set-Cookie "DJ-XXL=1;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=1"){
 add_header Set-Cookie "DJ-XXL=2;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=2"){
 add_header Set-Cookie "DJ-XXL=3;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=3"){
 add_header Set-Cookie "DJ-XXL=4;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=4"){
 add_header Set-Cookie "DJ-XXL=5;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=5"){
 add_header Set-Cookie "DJ-XXL=6;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=6"){
 add_header Set-Cookie "DJ-XXL=7;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=7"){
 add_header Set-Cookie "DJ-XXL=8;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=8"){
 add_header Set-Cookie "DJ-XXL=9;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=9"){
 add_header Set-Cookie "DJ-XXL=10;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=10"){
 add_header Set-Cookie "DJ-XXL=11;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=11"){
 add_header Set-Cookie "DJ-XXL=12;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=12"){
 add_header Set-Cookie "DJ-XXL=13;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=13"){
 add_header Set-Cookie "DJ-XXL=14;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=14"){
 add_header Set-Cookie "DJ-XXL=15;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=15"){
 add_header Set-Cookie "DJ-XXL=16;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=16"){
 add_header Set-Cookie "DJ-XXL=17;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=17"){
 add_header Set-Cookie "DJ-XXL=18;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=18"){
 add_header Set-Cookie "DJ-XXL=19;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=19"){
 add_header Set-Cookie "DJ-XXL=20;Path=/;Max-Age=+1";   
  }
  if ($http_cookie ~ "DJ-XXL=20"){
 add_header Set-Cookie "DJ-XXL=21;Path=/;Max-Age=+3600";   
  }
  if ($http_cookie ~* "DJ-XXL=21"){
    return 429;
  }


    }

PHP - вставим этот код в php файл куда шлют POST запросы.
Это заблокирует на час того кто непрерывно шлёт POST запросы уже на четвёртой попытке!

// DJ-X Анти DDoS
   if (strstr($_SERVER['REQUEST_METHOD'], 'POST'))
   {
if (strstr($_SERVER['HTTP_COOKIE'], 'DJ-XXL=3'))
   {
Setcookie ("DJ-P", "4", time()+3600, "/");
   }
    }

Это всё будет работать только у клиентов с включёнными Cookies!
Модернизация приветствуется!


DNS Автопилот - или убегая от DDoS-а.
Разработка нестандартных решений.
Сделано компанией - Чикон Продакшнс DJ-X™ ® ©
Записан

DJ-X

  • Музыкант №1
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 151
    • Просмотр профиля
    • Минусовки Бесплатно !
Iptables блокировка по содержимому HTTP запроса!
« Ответ #1 : 09 Февраль 2015, 20:51:46 »

Iptables блокировка по содержимому HTTP запроса!

Всё
iptables -I INPUT -p tcp -m string --algo kmp --string "Baiduspider/2.0;" -j REJECT
Cookies
iptables -I INPUT -p tcp -m string --algo kmp --string "name=value" -j REJECT
User-Agent
iptables -I INPUT -p tcp -m string --algo kmp --string "User-Agent: Bittorrent" -j REJECT
REQUEST URI
iptables -I INPUT -p tcp -m string --to 70 --algo bm --string 'GET /announce?info_hash=' -j REJECT
Блокировка доступа к хосту по IP адресу.
iptables -I INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string 'Host: 217.12.203.114' -j REJECT
Записан
Страницы: 1   Вверх
 

Страница сгенерирована за 0.051 секунд. Запросов: 23.