ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Защита от DDoS атак



Здравствуйте, Митрофанов!

Wednesday, March 29, 2006, 6:10:13 PM, you wrote:

ММВ> Пару дней мои сервера бомбили такими запросами, до 4000 в секунду:

ММВ> 212.220.207.103 - - [24/Mar/2006:13:54:15 +0300] "POST 
/users/posts/edit/1135161334 HTTP/1.1" 302 5 "http://www.el
ММВ> 68.9.143.23 - - [24/Mar/2006:13:54:16 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "-
ММВ> 84.190.74.124 - - [24/Mar/2006:13:54:16 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-"
ММВ> 68.85.245.55 - - [24/Mar/2006:13:54:16 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11405 "-" "
ММВ> 84.190.74.124 - - [24/Mar/2006:13:54:16 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11405 "-"
ММВ> 68.85.245.55 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "
ММВ> 220.254.0.4 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "-
ММВ> 24.28.89.43 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "-
ММВ> 220.254.0.4 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "-
ММВ> 220.254.0.4 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "-
ММВ> 68.45.47.242 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "
ММВ> 68.45.47.242 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "
ММВ> 68.45.47.242 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "
ММВ> 84.190.74.124 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-"
ММВ> 83.27.110.151 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11405 "-"
ММВ> 84.190.74.124 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-"
ММВ> 84.190.74.124 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-"
ММВ> 83.27.110.151 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-"
ММВ> 68.45.47.242 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "
ММВ> 222.161.3.43 - - [24/Mar/2006:13:54:17 +0300] "GET 
/market/?searchfor=E8E7EEEBFFF2EEF0FB HTTP/1.1" 200 11412 "-" "

ММВ> Что посоветуете для защиты soft\hard?

Работоспособное решение на коленке, может кому пригодится:


Вариант реакции постфактум, когда сигнатуры запросов уже ясны (а
обычно это так и есть)

Забиваем IP-адреса атакующих в таблицу ipfw (добавив соответствующее
запрещающее правило).
Такой скрипт во время атаки можно выполнять раз в минуту или чаще.

#!/bin/sh

ips=`tail -n 1000 /var/log/nginx-attack.log | egrep 'E8E7EEEBFFF2EEF0FB' | awk 
'{print $1}' | sort | uniq`
for ip in $ips; do
  if ! grep $ip ./blocked >/dev/null; then
    echo "        ADDING $ip"
    ipfw table 1 add $ip
    echo $ip >>./blocked
  fi
done

Поиск по таблицам в ipfw осуществляется крайне быстро.
Если это iptables или другое, думаю существует нечто подобное.

Так же по этому же правилу можно наблюдать за ходом снижения атаки.

Пару дней выдержать можно если канал не забивается полностью.

-- 
С уважением, Вячеслав Кокорин
Системный администратор хостинга PeterHost.Ru
Тел: (812) 34-777-43
     (495) 540-56-33
http://www.PeterHost.Ru




 




Copyright © Lexa Software, 1996-2009.