Анализатор логов ddosViewer вебсервера для поиска ддос флуда.
Содержание
СкачатьИсходный текст анализатора логов на языке СНазначение анализатора ddosViewerАнализ лог файла access.log вебсервера NGINX или Apache стандартного формата.Анализатор рассчитывает различные статистические данные по логу и выдает их в виде таблиц, предназначенных для чтения человеком. Анализатор удобно применять для:
Аналогичные программыПохожей по назначению программой является, например, Webalizer и другие анализаторы логов.Аанализатор ddosViewer отличается от них следующим
КомпиляцияАнализатор написан на языке С.Распространяется в виде исходного текста. Скачайте исходный текст анализатора в разделе "Скачать" и разархивируйте командой gzip -d ddosv.cpp.gz Перед использованием его нужно откомпилировать для получения исполняемого файла. Компиляция может быть выполнена в ОС Linux или FreeBSD. Если в операционной системе не установлен компилятор, то его нужно установить. Для Linux Debian компилятор устанавливается командой. apt-get install g++ Для Linux CentOS компилятор устанавливается командой. yum install gcc-c++ После этого нужно выполнить компиляцию программы коммандой. gcc -lstdc++ -o ddosv ddosv.cpp В результате будет создан исполняемый файл ddosv Формат анализируемого лог файлаАнализатор анализирует лог стандартного формата.Стандартный формат лога для вебсервера NGINX в конфиг файле имеет следующий вид log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; Пример строки лога стандартного формата. 85.21.207.82 - - [11/Jan/2011:18:29:00 +0000] "GET / HTTP/1.1" 200 12535 "http://www.yandex.ru/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" Скорость работы анализатораАнализатор ddosViewer – это однопоточное приложение. Выполняется на одном ядре процессора.Другие ядра процессора во время работы анализатора свободны. Так как анализатором производится довольно большой объем вычислений, то введено ограничение, на размер анализируемого лог файла. Из лог файла считываются и анализируется не более 130 000 строк. Если анализатору передан лог файл с большим количеством строк, то будут считаны и проанализированы лишь первые 130 000 строк. Начните использование анализатора с небольшого лога, длиной до 10 000 строк, чтобы результат был быстрее получен. Так как при длине лога более 100 000 строк время обработки может быть длительным. Как правило, для того что бы обнаружить ddos-флуд достаточно не более 10-30 тысяч строк лог файла Примерные данные по скорости работы анализатора (с ключом -i), полученные на компьютере с процессором intel Pentium-4 3 Ггц, в зависимости от количества строк в лог файле. 10 000 строк – 0,2 секунды 20 000 строк – 0,7 секунды 30 000 строк – 1 секунда 40 000 строк – 2 секунды 50 000 строк – 3 секунды 60 000 строк – 4 секунды 70 000 строк – 6 секунд 80 000 строк – 7 секунд 90 000 строк – 8 секунд 100 000 строк – 9 секунд 110 000 строк – 11 секунд 120 000 строк – 12 секунд 130 000 строк – 13 секунд Такой старый компьютер использовался для тестирования, так как именно на нем у меня установлен Linux. На современном компьютере с процессором Intel core i7-920 анализатор работает в 3-4 раза быстрее. Запуск и использование анализатораАнализатор запускается из командной строки. Ему передаются параметры, которые указывают, какие отчеты нужны, и путь к лог файлу, который нужно анализировать.Передавать анализатору рекомендуется последние строки из лог файла. Их можно получить командой tail –n 10000 /path/to/access.log >log Анализатор может строить 6 видов отчетов.
Общая рекомендация как обнаруживать ддос во всех видах отчетовКогда ддос атаки нет – цифры в колонках обычно меняются равномерно без скачков.Когда идет ддос атака, то некоторые параметры могут принимать скачкообразные очень высокие или очень низкие значения. Например.
Заголовок отчетовУ всех отчетов вначале идет строка заголовка, ее формат одинаковый у всех отчетов.В ней дается общая информация о лог файле, переданном анализатору. Список полей заголовка
Топ IP адресов (ключ –i)Пример запуска./ddosv –i log Принтскрин этого отчета В этом отчете подсчитывается количество кликов с каждого IP. На каждой строке печатаются данные об одном IP. IP выводятся в порядке убывания количества кликов им сделанных. Список полей этого отчета.
Топ IP адресов, с подсчетом интенсивности кликов каждого IP. (ключ -I)Это самый ресурсоемкий отчет, начните его использование с лога длиной не более10 000 строк, что бы оценить скорость работы. (tail –n 10000 /path/to/access.log >log) Пример запуска. ./ddosv –I log Принтскрин этого отчета Этот отчет аналогичен предыдущему, но в него добавлены три поля - d1, d2, d3. Эти поля показывают интенсивность кликов с одного IP адреса. Ддос боты часто довольно интенсивно кликают, что бы создать нагрузку на сервере. При этом часто запрашиваются одни и те же страницы. Посмотрев на эти поля d1, d2, d3 можно сделать вывод насколько часто клиакет этот IP и как часто запрашивает одни и те же страницы. В каждом из этих трех полей указаны 3 цифры. Это максимальное количество кликов за 1, 2 и 3 минуты любого места лога. Причем расчет производится так, что для каждого IP адреса, например, самая интенсивная минута, в которой он сделал больше всего кликов, может быть в одном месте лога, самые интенсивные 2 минуты, могут быть в другом месте лога, а самые интенсивные 3 минуты в третьем месте. То есть эти периоды в 1, 2 и 3 минуты могут между собой не пересекаться по времени, а могут и пересечься. Посмотрев на интенсивность кликов с IP адреса, можно подобрать ограничивающие лимиты для программы автоматического бана ботов, при которых IP, кликающие с такой интенсивностью, будет автоматически банится. Список полей этого отчета.
Топ запрашиваемых страниц (ключ –u)Пример запуска./ddosv –u log Принтскрин этого отчета В этом отчете подсчитывается количество запросов к каждой странице. На каждой строке печатаются информация о одной странице. Страницы выводятся в порядке убывания количества обращений к ним. Список полей этого отчета.
Топ кодов ответа сервера (ключ –y)Пример запуска./ddosv –y log Принтскрин этого отчета В этом отчете подсчитывается количество строк каждого кода ответа в логе. На каждой строке печатаются информация о одном коде ответа. Коды ответа выводятся в порядке убывания количества их использования. Список полей этого отчета.
Топ реферреров (ключ –e)Пример запуска./ddosv –e log Принтскрин этого отчета В этом отчете подсчитывается количество использования каждого реферрера в логе. На каждой строке печатаются информация о одном реферрере Реферреры выводятся в порядке убывания количества их использования. Список полей этого отчета.
Топ юзерагентов (ключ –U)Пример запуска./ddosv –U log Принтскрин этого отчета В этом отчете подсчитывается количество использования каждого юзерагента в логе. На каждой строке печатаются информация о одном юзерагенте. Юзерагенты выводятся в порядке убывания количества их использования. Список полей этого отчета.
Количество строк выводимых в отчетахПо умолчанию в каждом отчете выводится первые 20 строк.Для изменения максимального количество выводимых строк используется ключ –p за которым указывается количество строк. Пример ./ddosv -i -p 5 logFile Одновременный вызов нескольких отчетовМожно при вызове программы указать несколько ключей и тогда будет построено несколько отчетов.Например, вывод подряд 3 отчетов. ./fddos -i -e –U log Между всеми ключами нудно ставить пробел Указав ключ –a можно вывести все отчеты подряд (кроме отчета -I) ./fddos -a log Раздельный анализ логов доступа к динамическим и статическим файламРекомендуется производить раздельный анализ анализатором логов доступа к статическим файлам и к динамическим.Так как интенсивность кликов к этим файлам может сильно различаться. Например, один запрос к динамической странице, может порождать десятки запросов к статическим файлам jpg, gif, css, js и так далее. Во вторых чаще всего ддос атаке подвергаются динамические файлы. Поэтому убрав из лога запросы к статике, будет лучше видно запросы к динамическим страницам. Есть два способа разделить лог файлы на части.
egrep -v -i '(\.jpg|\.jpeg|\.gif|\.ico|\.css|\.js|\.png)' log1>log2 Рекомендую для каждого сайта вести отдельный лог файл, а не писать логии всех сайтов в один файл, так как это позволяет лучше видеть флуд на каком то одном сайте. Хотя если у вас очень много сайтов и они мало посещаемы, то возможно вам будет удобнее писать логи всех этих сайтов в один файл. И анализировать суммарный лог файл. Не плохой идеей может быть еще большее разделение лог файлов на части для анализа. Например, отдельно вести логии для каждого типа динамических и каждого типа статических файлов. и отдельно их анализировать. Это позволит
Анализ кликов одного IP адресаЕсли в отчете вы нашли подозрительный IP адрес, то вы можете проанализировать клики лишь с одного этого IP.Для этого с помощью команды grep нужно получить строки из лога, относящиеся к этому IP grep 11.22.33.44 /path/to/access.log >log Затем проанализировать полученный лог файл log с помощью анализатора. Стоимость анализатора логов ddosViewerОплата производится в том случае, если вы находите анализатор ddosViewer полезным и желаете поощрить автора для его дальнейшего улучшения.Стоимость анализатора ddosViewer 10$ В комментарии к платежу напишите ваше имя или емейл и в скобках (за ddosViewer) Кошельки вебмани для оплаты. Z592796551024 R832753847268 (по текущему курсу) Или на кошелек Янлекс-деньги по текущему курсу 41001215529324 |