Прошу совета по настройке apache+nginx при ddos

zexis
На сайте с 09.08.2005
Offline
388
9932

Прошу совета по настройке apache+nginx при ddos.

Система Debian GNU/Linux 6.0

На сервер идет http-флуд

Количество входящих пакетов 20 000 в секунду.

Входящий трафик 15 мбит.

Каждую минуту на сервер приходит около 50-100 новых ботов.

Каждый бот делает от 5 до 100 кликов в минуту.

Суммарно от новых ботов от 3000 до 20 000 кликов в минуту.

За сутки обнаруживается около 20к-30к ботов.

Все боты атакуют одну и ту же страницу. Но эта страница регулярно меняется.

Боты автоматически обнаруживаются в логах access.log и через минуту попадают в фаервол iptables.

Но при этом постоянно плодятся процессы апач и растет нагрузка load average:

Через 5 минут load average до ходит до 100 и выше и сервер перестает откликаться.

Подозреваю, что надо как то ограничить работу процессов апач.

Прошу совета, какие настройки в апач + nginx нужно попробовать покрутить.

Пытался включать, отключать кипаливе, менял размеры proxy_buffers, но безуспешно.

В nginx поставлены лимиты

limit_req_zone

limit_zone

Но так как большинство ботов медленные, то лимиты они не превыщают.

top

[Удален]
#1

К какому адресу идут обращения? Покажите кусок лога.

zexis
На сайте с 09.08.2005
Offline
388
#2

атакуемая страница регулярно меняется

Проблема в том, что за минуту новые боты пока не попали в бан в фаервол успевают загрузить апач и нагрузка

load average до ходит до 100 и выше и сервер перестает откликаться.


67.230.61.26 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6630/4.03.38; 6937) Opera 8.50 [es]"
119.156.18.69 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03 [en]"
213.169.80.75 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
122.176.174.90 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Opera/10.00 (Windows NT 6.0; U; en) Presto/2.2.0"
182.182.83.40 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1"
122.176.174.90 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.2.15 Version/10.10"
182.48.218.113 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
120.56.195.171 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)"
122.176.174.90 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"
117.199.184.249 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.2) Gecko/2008092702 Gentoo Firefox/3.0.2"
109.122.201.66 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5"
119.156.18.69 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 503 213 "-" "Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [en]"
2.181.127.70 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
2.181.127.70 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Opera/9.01 (X11; Linux i686; U; en)"
182.182.83.40 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
182.182.7.21 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9) Gecko/2008052906 Firefox/3.0"
182.182.83.40 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Microsoft Internet Explorer/4.0b1 (Windows 95)"
182.182.83.40 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 503 213 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6600/5.27.0; 9399) Opera 8.65 [ru]"
182.182.83.40 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 503 213 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6630/4.03.38; 6937) Opera 8.50 [es]"
178.217.248.1 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5"
124.118.197.106 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; Arcor 5.005; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"
124.118.197.106 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618)"
109.122.201.66 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/2.0 (compatible; MSIE 3.01; Windows 98)"
82.113.121.101 - - [17/Nov/2011:18:30:53 +0300] "GET /forum/index.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"

M
На сайте с 16.09.2009
Offline
278
#3
zexis:
Но при этом постоянно плодятся процессы апач и растет нагрузка load average

Настроить сервер нормально надо, исходя из его физических возможностей обслужить запросы. Чтобы даже в максимально допустимом пике нагрузки все запросы к апачу (+ mysql или что там) - не отжирали все что можно.

zexis:
Проблема в том, что за минуту новые боты пока не попали в бан в фаервол успевают загрузить апач и нагрузка

Проблема в том, что кто-то разрешил им это делать. Насколько я понимаю, Вы впервые столкнулись с более-менее солидной атакой.

Ну вот учитесь - защита начинается не с банов, а с грамотного лимитирования системных ресурсов. Для этого умные люди и нанимают системного администратора, а не первого попавшегося "защитника" ;)

zexis:
Подозреваю, что надо как то ограничить работу процессов апач.

Да. Прочитать, наконец, его мануал и узнать про директиву MaxClients.

zexis:
В nginx поставлены лимиты

У Вас nginx жрет ресурсы? Разве не толпа апачей, которую Вы бездумно наплодили?

Я уж молчу про iptables, которая висит у Вас в топе. Отучайтесь от того, чтобы вызывать эту команду по первому чиху - узнайте про iptables-save/restore. А еще лучше - ipset.

PS: И этот человек "защищает Ваш сервер от ddos" :D

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
M
На сайте с 01.12.2009
Offline
235
#4

Распределённая атака по 1 запросу дёргают боты, сложная ситуация.

Думаю уменьшить запросы так что бы сервер справлялся с нагрузкой, и решать, дальше что делать.

Когда Атака мощнее ресурсов сервера то что тут поделаешь ? ;)

Администратор Linux,Freebsd. построения крупных проектов.
M
На сайте с 16.09.2009
Offline
278
#5
madoff:
Распределённая атака по 1 запросу дёргают боты, сложная ситуация.

Где там "по одному запросу"? Даже я, не особо приглядываясь - нашел в листинге несколько идентичных IP.

madoff:
Когда Атака мощнее ресурсов сервера то что тут поделаешь ? ;)

Атака мощнее знаний "защитника". Но вообще, это не самое страшное - я бы поставил на то, что атакующий сможет "вломить" и больше.

zexis, be warned! А вообще, попробуйте редирект ботам подсовывать или JS. Авось они не шибко умные, хоть и много...

M
На сайте с 01.12.2009
Offline
235
#6
myhand:
Где там "по одному запросу"? Даже я, не особо приглядываясь - нашел в листинге несколько идентичных IP.
Атака мощнее знаний "защитника". Но вообще, это не самое страшное - я бы поставил на то, что атакующий сможет "вломить" и больше.

zexis, be warned! А вообще, попробуйте редирект ботам подсовывать или JS. Авось они не шибко умные, хоть и много...

Вломить больше, знаний ? :) - просто пытаюсь связать ваши мысли воедино, знание - и вломить больше.

myhand - Понятно что вам не видно боты не часто дёргают тяжолую страницу. Зачем часто?, хотя надо бы показать лог за 5 минут например, в виде файла, что бы оценить количество запросов, но если там бот-нет из 15 к то врядле 5 минут покажет результат.

M
На сайте с 16.09.2009
Offline
278
#7
madoff:
Вломить больше, знаний ? :)

Трафика.

madoff:
просто пытаюсь связать ваши мысли воедино

Не пытайтесь. Для Вас обычно является непомерной задачей сформулировать собственные "мыслИ". Не хочу отвлекать Вас от этого - авось когда-нибудь получится...

madoff:
myhand - Понятно что вам не видно боты не часто дёргают тяжолую страницу.

Часто. За секунду - я только в приведенном куске вижу до 5 штук одинаковых IP.

M
На сайте с 01.12.2009
Offline
235
#8

myhand -А вы толька задумались?, о траффике после моих слов?, как всё запущенно.

Почемуто мне хочется сказать слова Андрея, холодно-жарко ;)

Если вы видите флуд, только в повторяющихся запросах, в какое-то время ( секунду ) то хочу вас разочаровать, общею атаку можно создать если делать 1 запрос в пол минуты. ;) Вопрос толька в том, какой количество ботов.

zexis - Уменьшай max client - выключи keepalive - установи статическую страницу для ридеректа - переименуй php что бы не грузить apache, nginx выдержит больше запросов, меняют урл?, меняй и ты.

И чё это с Iptables происходит ? по top он нагружен ппц.

Andreyka
На сайте с 19.02.2005
Offline
822
#9

Ты только сейчас столкнулся с хитроботами? Поздравляю.

А как же твой софт, который ты предлагаешь для защиты от атак?

Не стоит плодить сущности без необходимости
zexis
На сайте с 09.08.2005
Offline
388
#10

Боты обнаруживаются в логах нормально.

Проблема в том что анализ логов и бан ботов происходит раз в минуту.

А так как ботнет большой, то каждую минуту приходит по 50 новых ботов и успевают создать нагрузку, которая блокирует работу сервера.

Большинство ботов медленные. Делают от 5 до 100 запросов в минуту, поэтому лимит limit_req их не блокирует.

Проблема еще усугубляется, тем что сервер не очень мощный

AMD Athlon(tm) II X4 605e

Я не смотрел скрипты самого сайта и запросы к mysql.

Может быть они не оптимизированы.

Вообщем проблему с атакой решить не удается. Здесь нужно заниматься оптимизацией сайта и сервера, для того что бы он держал повышенную нагрузку.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий