Анализатор логов ddosViewer вебсервера для поиска ддос флуда

N
На сайте с 06.05.2007
Offline
419
#31

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

Кнопка вызова админа ()
zexis
На сайте с 09.08.2005
Offline
388
#32
Boris A Dolgov:
После кучи бенчмарков выяснилось, что пытаться что-то постфактумно делать - намного сложнее и дороже - надо распарсивать лог (хотя формат я делал несколько более распарсиваемый)

В чем сложность анализировать логи постфактумно раз в минуту?

Может быть есть решение и более быстрые( связанные с написанием модулей для вебсаервера), но и постфактумный анализ логов парсером вполне работает.

Моим анализатором 10 000 строк анализируется около секунды, 80 000 строк около 8 секунд. Анализатор загружает лишь одно ядро процессора. На современном сервере ядер несколько, так что остальные ядра при работе анализатора свободны.

При мощном HTTP-флуде с лог пишется максимум 100 000 – 200 000 запросов в минуту.

При среднем HTTP-флуде не более 10 000-30 000 запросов в минуту.

Анализа 5 000 - 80 000 строк обычно хватает что бы найти большую часть ботов.

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

M
На сайте с 16.09.2009
Offline
278
#33
netwind:
myhand, проще блокировать. Думаю, мало кто этим заморачивается. Генерировать капчу это немало ресурсов нужно.

То, что "проще" - никто и не спорит. Во-вторых, и с капчей есть варианты.

А в-третьих, иногда лучше временно просто дать 503 для подозрительных клиентов.

netwind:
Я, например, для vbulletin могу ид пользователя на форуме определить только из логов. Причем, не важно сохранял ли он пароль в кукисах.

А что мешает это делать на уровне веб-сервера?

netwind:
Буду. Чего именно существенного нету в CustomLog http://httpd.apache.org/docs/2.0/mod/mod_log_config.html#formats ?

Ну, например, какие еще сейчас запросы вебсервер обрабатывает.

netwind:
И С-джедай долбанется изучать библиотеки взаимодействия и обязательно что-нибудь не освободит. А, что хуже всего, может неаккуратным программированием завалить процесс вебсервера и тогда вообще все перестанет работать.

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

Собственно, тут уже писали, что не нужно все пихать непосредственно в веб сервер. Можно поставить отдельный обработчик (например, cgi-скрипт), который будет принимать решение о пропуске/отклонении конкретного запроса.

zexis:
В чем сложность анализировать логи постфактумно раз в минуту?

Медленно. (Да и логи далеко не всегда оправданно вести.)

Вполне годится как костыль. Конечно, "чудо" на C ради этого городить не стоит.

zexis:
Моим анализатором 10 000 строк анализируется около секунды, 80 000 строк около 8 секунд.

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

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
N
На сайте с 06.05.2007
Offline
419
#34
myhand:
А что мешает это делать на уровне веб-сервера?

обычно веб-сервер ничего не знает о php-приложении.

myhand:
Ну, например, какие еще сейчас запросы вебсервер обрабатывает.

Почти бесполезно. Если обычные запросы не завершаются хотя бы за 5-10 секунд - сайт уже в жопе. Все остальное в логах.

myhand:
Собственно, тут уже писали, что не нужно все пихать непосредственно в веб сервер. Можно поставить отдельный обработчик (например, cgi-скрипт), который будет принимать решение о пропуске/отклонении конкретного запроса.

Ну и где взять такое решение? опять писать на C ?

Тут вам предлагают одновременно и просто и безопасно.

M
На сайте с 16.09.2009
Offline
278
#35
netwind:
обычно веб-сервер ничего не знает о php-приложении.

Обычный вебсервер и не досят. Досят конкретные приложения - просто используйте информацию о их работе при защите. Это и есть задача администратора.

netwind:
Ну и где взять такое решение? опять писать на C ?
Тут вам предлагают одновременно и просто и безопасно.

Да что Вы к C-то привязались? На чем хотите - на том и пишите. Хоть на perl.

Еще раз - то, что Вы предлагаете далеко не так просто. Вспомните хоть, что изменение формата логов потребует reload'а веб-сервера + плюс всего, что парсит эти ваши логи. А тут все просто: на входе запрос - на выходе разрешение/запрет на его дальнейшую обработку. А в промежутке "черный ящик", ваш обработчик, которому всегда доступны параметры запроса - меняйте его логику как и когда удобно.

zexis
На сайте с 09.08.2005
Offline
388
#36
myhand:

А в-третьих, иногда лучше временно просто дать 503 для подозрительных клиентов.

Отдать временно ошибку 503 подозрительному клиенту можно настроив limit_zone и limit_req_zone в конфигурации NGINX для каждого типа файлов. Тут и изобретать нечего не надо, лишь вставить 4-6 строк в файл конфигурации NGINX.

myhand:

Ну, например, какие еще сейчас запросы вебсервер обрабатывает.

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

Причем в логе эта информация за длительный период времени, и удачные алгоритмы могут эту информацию использовать для более точного определения ботов.

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

myhand:

Медленно. (Да и логи далеко не всегда оправданно вести.)
Вам бенчмарк показали. Простейшие утилиты уделывают Ваш "анализатор" чуть ли не на порядок.

Вы показали сравнение со скриптом, находящим топ быстрых IP.

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

zexis добавил 18.01.2011 в 16:33

myhand:

А что мешает это делать на уровне веб-сервера?

myhand, вы уже написали модуль для вебсервера, принимающий решения кто бот, а кто нет?

Или это только на словах из серии, что можно написать, если постараться?

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

M
На сайте с 16.09.2009
Offline
278
#37
zexis:
Отдать временно ошибку 503 подозрительному клиенту можно настроив limit_zone и limit_req_zone в конфигурации NGINX для каждого типа файлов. Тут и изобретать нечего не надо, лишь вставить 4-6 строк в файл конфигурации NGINX.

Я бы поостерегся делать это "для каждого типа файлов". И, к сожалению, есть еще клиенты, для которых таки нельзя это делать. Так что логика на порядок сложнее - но вы идете в нужную сторону.

zexis:
Информация какие запросы обрабатываются в одно и то же время как раз есть в логе, так как у каждой строки лога указана дата запроса.

"Садись, два" (с)

Ну какое это отношение имеет к тому "какие еще сейчас запросы вебсервер обрабатывает"? Сейчас, не "третьево дни".

zexis:
Во вторых программа анализатор логов получается более универсальной, чем модуль для вебсаервера, так как анализатор логов можно запускать как во время атаки по крону, так и после атаки для анализа HTTP-флуда администратором.

Анализ логов никто не отменял. Но это больше уже для обновления списков IP, формирования статистических критериев и т.п.

Начнем с того, что "взаимодействия" с "клиентом" нету. Как класса. Бан - и все. Или не бан.

zexis:
Вы показали сравнение со скриптом, находящим топ быстрых IP.

Я показывал сравнение со случаем, когда Ваша программа строит этот самый топ.

zexis:
myhand, вы уже написали модуль для вебсервера, принимающий решения кто бот, а кто нет?

- но зачем делать очередной велосипед? Есть решения и для nginx, и для апача. Их тут цитировали. Интересно - поучаствуйте в разработке.

zexis:
анализатором логов, который у меня уже написан, протестирован и активно мной используется на практике.

Вы только не обижайтесь, но таких "анализаторов, которые анализируют" - у каждого администратора есть в заначке. Присутствующие, уверяю, не исключение. Делиться здесь особо нечем - т.к. все подобное пишется/писалось на коленке за полчаса.

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#38
netwind:
Boris A Dolgov
1 - это реально дебилом нужно быть, чтобы добровольно терять информацию об IP и заниматься блокировкой ботов. Так не бывает.
2 - понимаю, но это не отменяет всех ужасов C/C++.

1) Вероятность того, что один из ста пользователь ната - бот в сто раз больше, чем вероятность того, что пользователь, который хотел пойти к нам на сайт и был заблокирован из-за соседа - бот.

В конце концов, никто не отменяет блокировку на FW. Но если, например, за 4 часа пришло 10% ддос-запросов и 90% нормальных, то такой ip нельзя блокировать.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
Andreyka
На сайте с 19.02.2005
Offline
822
#39
myhand:
Обычный вебсервер и не досят.

С DDOS по IP не встречался?

Не стоит плодить сущности без необходимости
M
На сайте с 01.12.2009
Offline
235
#40
Andreyka:
С DDOS по IP не встречался?

Если я думаю за http - ip - , то статика разгружает все эти запросы, nginx в этом плане на высоте.

P.s я почти всегда справляюсь без парсеров, штатные средства пока работали, nginx спасает почти в 70% случаях, ну может и есть скрипты не большие, и то они для nginx-ерор-лог что бы лимиты выгребать. хотя атака-атаке рознь.

Администратор Linux,Freebsd. построения крупных проектов.

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