innix

Рейтинг
0
Регистрация
21.05.2009
Himiko:
По поводу парсинга логов...

Можно сделать так на FreeBSD:

cat НУЖНЫЙСАЙТ.access.log | grep "GET /" | awk '{print $1}' | sort | uniq -c | sort -n | awk '{if ($1>100) print "ipfw add deny tcp from "$2" to me"}' | sh

Эта команда будет банить все ip-адреса, которые более 100 раз запрашивали корень сайта.

Спасибо :)

Art569:
Здесь, наверное, опечатка.
Нужно заменить grep "GET /" на grep "GET / ", а то под это условие попадет не только корень сайта.
Я немножко дописал.

А вам спасибо за реализацию скрипта.

Остается выяснить :) как это повлияет на производительность, если число ip резко увеличится? А так же как можно забаненные ip амнистировать, желательно тоже автоматически (Писать ip в отдельный файл, а позже удалять?). Сейчас они судя по всему, оказываются в ipfw до момента пока не пожелаем удалить сами руками?

Boris A Dolgov:
Перегоняйте / раз в 3 минуты в статику и отдавайте как статику.
Потом парсите логи на адреса, систематически запрашивающие / и ничего больше, и баньте фаирволлом.
Вместо первого можно попробовать кеш в nginx.

Вариант с кэшированием мне все-таки видется более полезным при большой посещаемости реальными пользователями, а не борьбы с ddos.

Art569:
innix, хочу предложить такое решение (временное) с помощью iptables.
iptables -A INPUT -p tcp --dport 80 -m string --string 'GET / ' --algo bm --from 40 --to 46 -m connlimit --connlimit-above 4 -j DROP

Не более 4 одновременных запросов к главной странице с одного IP. На остальные страницы ограничение не действует.
Это реализация в Linux :(, наверное такое же можно сделать и в FreeBSD 6.1

Спасибо, но все же сервер под FreeBSD.

Interitus:
Разные домены запрашивают.

Кусок лога, приведен для одного домена.

Andreyka:
Какой же это ddos...

В моем случае, да, определение http-flood подходит лучше, но тема создавалась все-таки для получения более широкого круга информации, а http-flood и ddos вроде бы достаточно схожи по реализации все же.

Andreyka:
Любые скрипты от настоящего ddos не спасут

Каковы ваши советы, рекомендации по спасению от настоящего DDoS?

Analitic82:
как еще один вариант решения для размышления
http://deflate.medialayer.com/

Спасибо, достаточно любопытно - посмотрю внимательнее.

qwartyr:
в вашем случае легкого флуда могут помочь mod_limitipconn и mod_dosevasive модули для апача

Спасибо

Васисуалий:
судя по вашему первому логу там 200 в секунду и близко не пахнет

Проницательны :) 200 стало позже.

Васисуалий:

nginx + apache 2.2 На тредах + mod_dosevasive работающий в паре с ipfw

Спасибо, посмотрю mod_dosevasive, работа в паре с ipfw звучит многообещающе.

LineHost:
ТС, купите пива и раслабтесь :)
Хорошо что спорисли на форуме, а не накатали жалобу какому нить провайдеру/датацентру. А то некоторые потом рубит с плеча за такой "DDDDDDoS" 🍻

Не, жалобу это уж как-то через чур :) и мне не так повезло с провайдером видимо, чтобы кто-то суетился у них с клиентскими проблемами :))

dred:
Обычный флуд. Такой всегда почти есть.
На него даже внимания обращать не стоит.

Ну он все же порой умудряется портить стабильный доступ к другим сайтам под тем же httpd :(

Outsourcenow:
Я бы начал именно с этого.

404 пока не рассматриваю как проблему, ведь ddos не связан вроде бы с этим? Если даже будет найдена и устранена проблема, то запросы от этого не перестанут идти?

Outsourcenow:
Ну, смотреть сначала не в параметры, а в мануалы - схема прикрывания апача nginx-ом описана многократно. Как минимум - избавитесь от запросов к статике.
Далее - смотреть на limit-rate, burst итп.

200 rps - это вобщем-то тоже слезы. Особенно если 80% запросов идут к /

Если не сложно, можете привести какую-нибудь ссылку на мануал по прикрытию именно с описанием момента связанного с ddos? Уверен что на официальном сайте, достаточно хорошо расписаны параметры связанные с ограничениями, но не более, а хотелось бы в виде мануала все же.

Видимо вы говорите про "ngx_http_limit_req_module"? Гугл подсказал, что параметр "burst" встречается только для его limit_req.

По описанию любопытно, не обратил внимание на него прежде.

То есть в случае, если limit_req прописать для "location /", то это будет делать ddos бесполезным - запросы с определенным числом в секунду не будут обрабатываться вовсе, а так же проходить до apache? или я не понимаю чего-то, как-то все просто получается слишком тогда.

Выходит блокировать IP не лучшее решение?

Andreyka:
Сервак падает?

Нет, достаточно уверенно держится, но запросы все же беспокоят:

last pid: 32641;  load averages:  0.61,  0.39,  0.33  up 2+19:06:32    00:50:12
101 processes: 1 running, 100 sleeping

Mem: 288M Active, 944M Inact, 238M Wired, 8340K Cache, 112M Buf, 1773M Free
Swap: 4096M Total, 4096M Free
Outsourcenow:
Мне одному кажется, что здесь что-то совсем неправильно?

Чередующиеся 200 и 404 мне тоже в глаза бросаются. Объяснить их(404) причины не могу :(

Outsourcenow:
Прикрывайте nginx-ом.

Можно подробнее, в сторону каких параметров стоит смотреть?

Outsourcenow:
И 10-30 запросов в секунду вас волновать перестанут совершенно.

Запросов в данный момент в среднем около 200 в секунду.