Эта команда будет банить все ip-адреса, которые более 100 раз запрашивали корень сайта.
Спасибо :)
Art569: Здесь, наверное, опечатка. Нужно заменить grep "GET /" на grep "GET / ", а то под это условие попадет не только корень сайта. Я немножко дописал.
А вам спасибо за реализацию скрипта.
Остается выяснить :) как это повлияет на производительность, если число ip резко увеличится? А так же как можно забаненные ip амнистировать, желательно тоже автоматически (Писать ip в отдельный файл, а позже удалять?). Сейчас они судя по всему, оказываются в ipfw до момента пока не пожелаем удалить сами руками?
Boris A Dolgov: Перегоняйте / раз в 3 минуты в статику и отдавайте как статику. Потом парсите логи на адреса, систематически запрашивающие / и ничего больше, и баньте фаирволлом. Вместо первого можно попробовать кеш в nginx.
Вариант с кэшированием мне все-таки видется более полезным при большой посещаемости реальными пользователями, а не борьбы с ddos.
Art569: innix, хочу предложить такое решение (временное) с помощью iptables.
Не более 4 одновременных запросов к главной странице с одного IP. На остальные страницы ограничение не действует. Это реализация в Linux :(, наверное такое же можно сделать и в FreeBSD 6.1
Спасибо, но все же сервер под FreeBSD.
Interitus: Разные домены запрашивают.
Кусок лога, приведен для одного домена.
Andreyka: Какой же это ddos...
В моем случае, да, определение http-flood подходит лучше, но тема создавалась все-таки для получения более широкого круга информации, а http-flood и ddos вроде бы достаточно схожи по реализации все же.
Andreyka: Любые скрипты от настоящего ddos не спасут
Каковы ваши советы, рекомендации по спасению от настоящего DDoS?
Спасибо, достаточно любопытно - посмотрю внимательнее.
qwartyr: в вашем случае легкого флуда могут помочь mod_limitipconn и mod_dosevasive модули для апача
Спасибо
Васисуалий: судя по вашему первому логу там 200 в секунду и близко не пахнет
Проницательны :) 200 стало позже.
Васисуалий:
nginx + apache 2.2 На тредах + mod_dosevasive работающий в паре с ipfw
Спасибо, посмотрю mod_dosevasive, работа в паре с ipfw звучит многообещающе.
LineHost: ТС, купите пива и раслабтесь :) Хорошо что спорисли на форуме, а не накатали жалобу какому нить провайдеру/датацентру. А то некоторые потом рубит с плеча за такой "DDDDDDoS" 🍻
Не, жалобу это уж как-то через чур :) и мне не так повезло с провайдером видимо, чтобы кто-то суетился у них с клиентскими проблемами :))
dred: Обычный флуд. Такой всегда почти есть. На него даже внимания обращать не стоит.
Ну он все же порой умудряется портить стабильный доступ к другим сайтам под тем же httpd :(
404 пока не рассматриваю как проблему, ведь ddos не связан вроде бы с этим? Если даже будет найдена и устранена проблема, то запросы от этого не перестанут идти?
Outsourcenow: Ну, смотреть сначала не в параметры, а в мануалы - схема прикрывания апача nginx-ом описана многократно. Как минимум - избавитесь от запросов к статике.
Далее - смотреть на limit-rate, burst итп.
200 rps - это вобщем-то тоже слезы. Особенно если 80% запросов идут к /
Если не сложно, можете привести какую-нибудь ссылку на мануал по прикрытию именно с описанием момента связанного с ddos? Уверен что на официальном сайте, достаточно хорошо расписаны параметры связанные с ограничениями, но не более, а хотелось бы в виде мануала все же.
Видимо вы говорите про "ngx_http_limit_req_module"? Гугл подсказал, что параметр "burst" встречается только для его limit_req.
По описанию любопытно, не обратил внимание на него прежде.
То есть в случае, если limit_req прописать для "location /", то это будет делать ddos бесполезным - запросы с определенным числом в секунду не будут обрабатываться вовсе, а так же проходить до apache? или я не понимаю чего-то, как-то все просто получается слишком тогда.
По поводу парсинга логов...
Можно сделать так на 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 раз запрашивали корень сайта.
Спасибо :)
Здесь, наверное, опечатка.
Нужно заменить grep "GET /" на grep "GET / ", а то под это условие попадет не только корень сайта.
Я немножко дописал.
А вам спасибо за реализацию скрипта.
Остается выяснить :) как это повлияет на производительность, если число ip резко увеличится? А так же как можно забаненные ip амнистировать, желательно тоже автоматически (Писать ip в отдельный файл, а позже удалять?). Сейчас они судя по всему, оказываются в ipfw до момента пока не пожелаем удалить сами руками?
Перегоняйте / раз в 3 минуты в статику и отдавайте как статику.
Потом парсите логи на адреса, систематически запрашивающие / и ничего больше, и баньте фаирволлом.
Вместо первого можно попробовать кеш в nginx.
Вариант с кэшированием мне все-таки видется более полезным при большой посещаемости реальными пользователями, а не борьбы с ddos.
innix, хочу предложить такое решение (временное) с помощью iptables.
Не более 4 одновременных запросов к главной странице с одного IP. На остальные страницы ограничение не действует.
Это реализация в Linux :(, наверное такое же можно сделать и в FreeBSD 6.1
Спасибо, но все же сервер под FreeBSD.
Разные домены запрашивают.
Кусок лога, приведен для одного домена.
Какой же это ddos...
В моем случае, да, определение http-flood подходит лучше, но тема создавалась все-таки для получения более широкого круга информации, а http-flood и ddos вроде бы достаточно схожи по реализации все же.
Любые скрипты от настоящего ddos не спасут
Каковы ваши советы, рекомендации по спасению от настоящего DDoS?
как еще один вариант решения для размышления
http://deflate.medialayer.com/
Спасибо, достаточно любопытно - посмотрю внимательнее.
в вашем случае легкого флуда могут помочь mod_limitipconn и mod_dosevasive модули для апача
Спасибо
судя по вашему первому логу там 200 в секунду и близко не пахнет
Проницательны :) 200 стало позже.
nginx + apache 2.2 На тредах + mod_dosevasive работающий в паре с ipfw
Спасибо, посмотрю mod_dosevasive, работа в паре с ipfw звучит многообещающе.
ТС, купите пива и раслабтесь :)
Хорошо что спорисли на форуме, а не накатали жалобу какому нить провайдеру/датацентру. А то некоторые потом рубит с плеча за такой "DDDDDDoS" 🍻
Не, жалобу это уж как-то через чур :) и мне не так повезло с провайдером видимо, чтобы кто-то суетился у них с клиентскими проблемами :))
Обычный флуд. Такой всегда почти есть.
На него даже внимания обращать не стоит.
Ну он все же порой умудряется портить стабильный доступ к другим сайтам под тем же httpd :(
Я бы начал именно с этого.
404 пока не рассматриваю как проблему, ведь ddos не связан вроде бы с этим? Если даже будет найдена и устранена проблема, то запросы от этого не перестанут идти?
Ну, смотреть сначала не в параметры, а в мануалы - схема прикрывания апача nginx-ом описана многократно. Как минимум - избавитесь от запросов к статике.
Далее - смотреть на limit-rate, burst итп.
200 rps - это вобщем-то тоже слезы. Особенно если 80% запросов идут к /
Если не сложно, можете привести какую-нибудь ссылку на мануал по прикрытию именно с описанием момента связанного с ddos? Уверен что на официальном сайте, достаточно хорошо расписаны параметры связанные с ограничениями, но не более, а хотелось бы в виде мануала все же.
Видимо вы говорите про "ngx_http_limit_req_module"? Гугл подсказал, что параметр "burst" встречается только для его limit_req.
По описанию любопытно, не обратил внимание на него прежде.
То есть в случае, если limit_req прописать для "location /", то это будет делать ddos бесполезным - запросы с определенным числом в секунду не будут обрабатываться вовсе, а так же проходить до apache? или я не понимаю чего-то, как-то все просто получается слишком тогда.
Выходит блокировать IP не лучшее решение?
Сервак падает?
Нет, достаточно уверенно держится, но запросы все же беспокоят:
Мне одному кажется, что здесь что-то совсем неправильно?
Чередующиеся 200 и 404 мне тоже в глаза бросаются. Объяснить их(404) причины не могу :(
Прикрывайте nginx-ом.
Можно подробнее, в сторону каких параметров стоит смотреть?
И 10-30 запросов в секунду вас волновать перестанут совершенно.
Запросов в данный момент в среднем около 200 в секунду.