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

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

Предлагаю вашему вниманию анализатор логов ddosViewer вебсервера для поиска HTTP флуда в логах access.log

Ранее я не встречал удобного анализатора логов для поиска ддос ботов.

Поэтому мной был написан этот анализатор.

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

Программа ddosViewer – создает отчеты, предназначенные для просмотра человеком.

В течении 1-2 недель постараюсь написать документацию на другую мою программу -ddosHunter, которая в автоматическом режиме находит в логах IP, превысившие различные индивидуальные и групповые лимиты на количество кликов, и заносит их в фаервол.

Последнюю документацию и исходный код можно скачать здесь.

http://ddosviewer.narod.ru/

Мне было бы интересно услышать ваши отзывы и замечания по анализатору ddosViewer.

Какие аналогичные инструменты используете для поиска HTTP-флуда? Насколько они вам удобны?

Сталкивались ли вы с ддос атаками и как с ними боролись?

Сталкивался, использую хостинг с защитой от ддос. Защитой доволен.
10% (2)
Сталкивался, использую хостинг с защитой от ддос. Защитой НЕ доволен.
0% (0)
Сталкивался, для защиты использую аппаратные средства (например Cisco Guard) Защитой доволен.
0% (0)
Сталкивался, для защиты использую аппаратные средства (например Cisco Guard) Защитой НЕ доволен.
0% (0)
Сталкивался, для защиты использую программные средства. Защитой доволен.
30% (6)
Сталкивался, для защиты использую программные средства. Защитой НЕ доволен.
15% (3)
Сталкивался, для защиты использую программные и аппаратные средства. Защитой доволен.
15% (3)
Сталкивался, для защиты использую программные и аппаратные средства. Защитой НЕ доволен.
0% (0)
Сталкивался, но средств защиты не было.
10% (2)
С ддос атаками не сталкивался.
20% (4)
Всего проголосовало: 20
M
На сайте с 01.12.2009
Offline
235
#1

Потёр извените,за офф топ.

Администратор Linux,Freebsd. построения крупных проектов.
M
На сайте с 16.09.2009
Offline
278
#2

Может хватит уже тупых опросов? Клиентов Вы так вряд-ли привлечете - Ваши клиенты вряд-ли поймут C-код :-) А кто поймет - Вашим клиентом будет вряд-ли.

За код - тройка с минусом. Уровня очень плохой курсовой и крайне не рекоммендован для выполнения с правами root.

zexis:
Ранее я не встречал удобного анализатора логов для поиска ддос ботов.
Поэтому мной был написан этот анализатор.

Неумение элементарно найти информацию - тоже признак... Подсказка: искать соответствующие проекты стоит не на народ.сру, а на sf.net, googlecode, etc. Используя грамматически правильные буржуйские ключевые слова, а не "reqwest".

Хотя толком и искать-то не имеет особого смысла - подобные вещи пишутся на sh/sed/awk ценой пары выпитых чашек кофе...

zexis:
Какие аналогичные инструменты используете для поиска HTTP-флуда? Насколько они вам удобны?

Вам уже неоднократно отвечали: bash+sed/awk (или perl). Проверенные, отлаженные и заоптимизированные давно средства для потоковой обработки теста.

PS: Как бы то ни было, поздравляю Вас с первым разумным решением - выложить код в открытый доступ. Маловероятно, что будет он кому-то интересен, но все-же. Шаг второй: изучить возможности стандартной библиотеки и избавиться от > 50% (скромная оценка) кода из велосипедов. Шаг третий - избавиться от оставшейся 50% кода, используя прикладные библиотеки.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
zexis
На сайте с 09.08.2005
Offline
388
#3

Да, опрос в теме, наверное, лишний.

По поводу надежности кода и отсутствия в нем ошибок.

Он выполняется по крону раз в минуту на многих высоконагруженных серверах и не к каким сбоям сервера не приводит

По поводу использования стандартных решений и скриптов bash+sed/awk (или perl)

Сколько времени вам потребуется используя bash+sed/awk (или perl) что бы например сделать следующее?

1) Найти в логе те IP, которые за любую одну минуту сделали более N кликов.

Или

2) Найти в логе те IP, которые обращались менее чем к N разным страницам и сделали по ним более К кликов

Или

3) Найти в логе те страницы к которым обращались более N разных IP.

Или

4) Найти в логе юзерагенты которые использовались более N раз K разными IP адресами.

Или

5) найти страницы, которые были запрошены более N раз, затем найти IP которые кликали только по этим страницам более К раз.

Может дадите ссылку на такие готовые решения?

Конечно, если у вас HTTP флуд состоит всегда из запросов лишь к стартовой

GET / HTTP/1.1

Причем каждый IP делает по десятку запросов в секунду, то флудящие IP можно найти и скриптом bash+sed/awk

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

R
На сайте с 14.02.2010
Offline
77
#4
zexis:
По поводу использования стандартных решений и скриптов bash+sed/awk (или perl)
Сколько времени вам потребуется используя bash+sed/awk (или perl) что бы например сделать следующее?

что-то я запустил -I на паругиговом логе и вот уже минут 15 жду выхлопа :D

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

по теме пока не ковырял, вечером гляну...

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

Анализатор анализирует не более 130 000 строк (это указано в описании).

Отчет -I самый ресурсоемкий. попробуйте меньшее количество строк для него, например 10 000.

tail –n 10000 /path/to/access.log >log

K
На сайте с 19.03.2008
Offline
58
kkc
#6
r0mik:
что-то я запустил -I на паругиговом логе и вот уже минут 15 жду выхлопа

как закончится, напишите сколько же у вас IP в логе оказалось. У меня при Top IP=1104 на 10г логе обработка заняла 7 сек.

zexis, спасибо, даже при первом запуске всех отчетов уже оценил полезность. Надеюсь дожить до -ddosHunter :)

R
На сайте с 14.02.2010
Offline
77
#7

да я не дождался


~ $ cut -d' ' -f1 zzzzz.log | sort | uniq | wc -l
94195
~ $ wc -l zzzzz.log
7615884

может быть просто завис или кто его знает, в свете

zexis:
Анализатор анализирует не более 130 000
Zaqwr
На сайте с 08.08.2007
Offline
111
#8
kkc:
10г логе обработка заняла 7 сек.
Из лог файла считываются и анализируется не более 130 000 строк.
Если анализатору передан лог файл с большим количеством строк, то будут считаны и проанализированы лишь первые 130 000 строк.

как вы думаете, сколько строк в 10G лог-файле??

Администрирование, Linux, Cisco, Juniper
Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#9

Код ужасен :)

Увы, сейчас нет достаточно времени прочитать целиком и выдать конкретные замечания, но в общем:

  • Излишние комментарии, комментарии по-русски
  • Отсутствие табуляции и пробелов, или их излишнее наличие, но indent спас чтение дальше :)
  • Чисто сишный код в cpp-файле (разве что используются передачи по ссылке)
  • Функции по несколько экранов, принимающие десяток параметров
  • На стэке выделяются большие куски данных
  • Странные функции, которые объявлены как возвращающие что-то, но ничего не возвращающие
  • Всё в одном огромном файле
  • ОЧЕНЬ странные места вроде inArray_str

Вообще, 3+ за старание.

Осталось выучить boost и stl и написать то же самое в 30 строк.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
M
На сайте с 16.09.2009
Offline
278
#10
zexis:
По поводу надежности кода и отсутствия в нем ошибок.
Он выполняется по крону раз в минуту на многих высоконагруженных серверах и не к каким сбоям сервера не приводит

И что, потому ошибок нет? :-) А я предлагаю присутствующим верить своим глазам - благо Вы код таки показали.

Вы бы хоть обращали внимание на ошибки компилятора. Ключики -W, -Wall знаете? Не - 3 с плюсом многовато...

zexis:
По поводу использования стандартных решений и скриптов bash+sed/awk (или perl)
Сколько времени вам потребуется используя bash+sed/awk (или perl) что бы например сделать следующее?

Дак отвечали в других Ваших тредах :-) Не надоело одни и те же вопросы задавать?

zexis:
Может дадите ссылку на такие готовые решения?

А толку? Вам уже давали ссылку на nginx - а Вы, судя по "парсеру", еще даже не выучили возможность логгирования запросов. С ним все это можно сделать - даром, что нет модуля "сделай мне задачу x)"

zexis:
Анализатор анализирует не более 130 000 строк (это указано в описании).
kkc:
как закончится, напишите сколько же у вас IP в логе оказалось. У меня при Top IP=1104 на 10г логе обработка заняла 7 сек.

Так я тоже могу :-)

time tail -130000 access.log |cut -d " " -f2|uniq -c|sort -n|tail -1000

...
real 0m0.934s
user 0m0.852s
sys 0m0.080s
Тормозной Ваш парсер, вот что сударь...

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