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

Содержание

Скачать

Исходный текст анализатора логов на языке С

Назначение анализатора ddosViewer

Анализ лог файла access.log вебсервера NGINX или Apache стандартного формата.
Анализатор рассчитывает различные статистические данные по логу и выдает их в виде таблиц, предназначенных для чтения человеком.
Анализатор удобно применять для:
  1. Поиска HTTP-флуда в лог файле access.log.
  2. Анализ легитимного трафика сайта.
  3. Подбор ограничивающих лимитов для программ автоматического обнаружения ботов в логах, которые полезный трафик пропускают, а IP ботов банят.

Аналогичные программы

Похожей по назначению программой является, например, Webalizer и другие анализаторы логов.
Аанализатор ddosViewer отличается от них следующим
  1. Позволяет удобнее и нагляднее увидеть HTTP флуд.
  2. Запускается из командной строки и выдает данные виде текстовой таблицы.

Компиляция

Анализатор написан на языке С.
Распространяется в виде исходного текста.
Скачайте исходный текст анализатора в разделе "Скачать" и разархивируйте командой
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 видов отчетов.
  1. Топ IP адресов
  2. Топ IP адресов, с подсчетом интенсивности кликов каждого IP.
  3. Топ запрашиваемых страниц
  4. Топ кодов ответа
  5. Топ реферреров
  6. Топ юзерагентов

Общая рекомендация как обнаруживать ддос во всех видах отчетов

Когда ддос атаки нет – цифры в колонках обычно меняются равномерно без скачков.
Когда идет ддос атака, то некоторые параметры могут принимать скачкообразные очень высокие или очень низкие значения.
Например.
  1. Несколько IP адресов могут иметь очень много кликов, остальные IP очень мало кликов.
  2. Какие то страницы запрашиваются намного чаще других.
  3. Какие то рефереры или юзерагенты используются намного чаще других.
  4. С какого то IP адреса или юзерагента запрашивается часто одни и те же страницы. То есть низкое количество уникальных страниц.
Ниже описываются подробно все отчеты.

Заголовок отчетов

У всех отчетов вначале идет строка заголовка, ее формат одинаковый у всех отчетов.
В ней дается общая информация о лог файле, переданном анализатору.
Список полей заголовка
  1. Read – количество строк считанных из лог файла
  2. Cm – количество кликов за последнюю минуту лога. Это важный параметр показывает текущую нагрузку. Его высокое значение может говорить о ддос атаке.
  3. urls – количество уникальных страниц запрошенных в логе. Если количество уникальных страниц намного меньше количества строк в логе, то это часто свидетельствует о ддос атаке, при которой атакуется небольшое число страниц.
  4. ref – количество уникальных реферреров в логе
  5. ua – количество уникальных юзерагентов в логе
  6. t – дата и время первого клика в логе
  7. В конце в скобках указана длительность лога в минутах, секундах или часах в зависимости от длины лога.

Топ IP адресов (ключ –i)

Пример запуска
./ddosv –i log
Принтскрин этого отчета
В этом отчете подсчитывается количество кликов с каждого IP.
На каждой строке печатаются данные об одном IP.
IP выводятся в порядке убывания количества кликов им сделанных.
Список полей этого отчета.
  1. Top IP – количество уникальных IP адресов в логе.
  2. Ip – ip адрес
  3. c/c60 – два числа. Первое – суммарное количество кликов с этого IP адреса в логе. Второе – максимальное число кликов с этого IP, сделанные им за минуту, в которой он больше всего кликал.
  4. url – количество разных страниц запрошенных с этого IP адреса. Если все страницы были разные, то это поле делается пустым для этой строки.
  5. co – последний код ответа сервера, выданный этому IP адресу.
  6. ref – количество уникальных реферреров, использованных этим IP адресом
  7. ua – количество уникальных юзерагентов, использованных этим IP адресом
  8. last_url – последняя страница, запрошенная с этого IP адреса
  9. last_ua – последний юзерагент, использовавшийся этим IP адресом.
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Несколько IP адресов имеют высокое значение в полях c/c60
  2. У нескольких адресов низкое значение в поле url по сравнению с количеством кликов с этих IP. То есть они многократно обращаются к одним и тем же страницам.
  3. У многих IP последний код ответа 503. То есть они превысили лимиты на количество кликов заданные в NGINX.
  4. В поле ref стоит цифра 1, то есть у всех кликов с этого IP одинаковый реферрер или он отсутствует. Боты часто не передают разные значения в поле реферрер.
  5. У многих IP адресов поле last_url – одинаковое. То есть все они обращаются к одной и той же странице.
  6. У многих IP адресов в поле last_ua – одинаковое значение. То есть все они используют одинаковый юзерагент. Иногда боты при ддос атаке имеют одинаковый юзерагент.

Топ 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, кликающие с такой интенсивностью, будет автоматически банится.

Список полей этого отчета.
  1. Top IP – количество уникальных IP в логе
  2. ip – IP адрес
  3. c – суммарное количество кликов с этого IP адреса
  4. d1 – Три числа. Показывают максимальное количество запросов к одной и той же станице за любые 1, 2 и 3 минуты. Причем запросов к другим страницам за эти 1, 2 и 3 минуты не было.
  5. d2 – Три числа. Показывают максимальное количество запросов к одной и той же станице за любые 1, 2 и 3 минуты. Причем допускаются запросы к другим страницам за эти 1, 2 и 3 минуты.
  6. d3 – Три числа. Показывают максимальное количество запросов к любым станицам за любые 1, 2 и 3 минуты.
  7. url – количество разных страниц запрошенных с этого IP адреса. Если все страницы были разные, то это поле делается пустым.
  8. co – последний код ответа сервера, выданный этому IP адресу.
  9. ref – количество уникальных реферреров, использованных этим IP адресом
  10. ua – количество уникальных юзерагентов, использованных этим IP адресом
  11. last_url – последняя страница запрошенная с этого IP адреса (показывается первые 30 символов страницы, что бы данные умещались на одной строке)
  12. last_ua – последний юзерагент использовавшийся этим IP адресом. (показывается первые 19 символов юзерагента, что бы данные умещались на одной строке)
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Если в поле d1 стоят большие цифры, то это говорит о том, что этот IP часто обращается к одной и той же странице. И запросов к другим страницам в это время не делал.
  2. Если в поле d2 стоят большие цифры, то это говорит о том, что этот IP часто обращается к одной и той же странице. Но при этом в это время мог делать запросы к другим страницам.
  3. Если в поле d3 стоят большие цифры, то это говорит о том, что этот IP делает много кликов к любым страницам.

Топ запрашиваемых страниц (ключ –u)

Пример запуска
./ddosv –u log
Принтскрин этого отчета
В этом отчете подсчитывается количество запросов к каждой странице.
На каждой строке печатаются информация о одной странице.
Страницы выводятся в порядке убывания количества обращений к ним.
Список полей этого отчета.
  1. TOP urls – количество уникальных страниц запрошенных в логе
  2. c – количество обращений к этой странице
  3. ip – количество разных, IP обратившихся к этой странице
  4. co – последний код ответа, выданный на обращение к этой странице.
  5. ref – количество разных реферреров, использованных при обращении к этой странице
  6. ua – количество разных юзерагентов, использованных при обращении к этой странице
  7. url – сама старница, данные о которой даны в этой строке
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Несколько страниц имеют количество обращений существенно большее чем другие. (поле c). То есть эти страницы атакуются ддос ботами.
  2. В поле co – стоит значение 503, То есть, превышен лимит на количество кликов для IP адреса, который последний обратился к этой странице.
  3. В поле ua стоит низкое значение по сравнению с количеством адресов обратившихся к ней, то есть все обращения к этой странице с разных IP делаются с использованием одних и тех же юзерагентов.

Топ кодов ответа сервера (ключ –y)

Пример запуска
./ddosv –y log
Принтскрин этого отчета
В этом отчете подсчитывается количество строк каждого кода ответа в логе.
На каждой строке печатаются информация о одном коде ответа.
Коды ответа выводятся в порядке убывания количества их использования.
Список полей этого отчета.
  1. TOP response code – количество разных кодов ответа в логе.
  2. code - код ответа сервера.
  3. c – сколько раз в логе был этот код ответа.
  4. ip – скольким разным IP был выдан этот код ответа
  5. url – скольким разным страницам был выдан этот код ответа
  6. ua – скольким разным юзерагентам был выдан этот код ответа
  7. last_ip – последний IP адрес, которому был выдан этот код ответа
  8. last_url – последняя старница, которой был выдан этот код ответа.
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Высокое количество раз был выдан код ответа 503, (превышение лимита количества кликов заданное в NGINX)

Топ реферреров (ключ –e)

Пример запуска
./ddosv –e log
Принтскрин этого отчета
В этом отчете подсчитывается количество использования каждого реферрера в логе.
На каждой строке печатаются информация о одном реферрере
Реферреры выводятся в порядке убывания количества их использования.
Список полей этого отчета.
  1. TOP referrer – количество разных реферреров в логе
  2. c – количество раз использования реферрера
  3. ip – сколько разных IP адресов использовали этот реферрер.
  4. url – сколько разных старниц запрашивалось с использованием этого реферрера.
  5. ua – сколько разных юзерагентов использовалось с этим реферрером.
  6. ref – строка реферрера. Если реферер отсутствует то он обозначается символом – (минус)
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Если несколько реферреров используются чаще чем другие.
  2. Если часто используется отсутствующий реферрер. Обозначается символом минус.

Топ юзерагентов (ключ –U)

Пример запуска
./ddosv –U log
Принтскрин этого отчета
В этом отчете подсчитывается количество использования каждого юзерагента в логе.
На каждой строке печатаются информация о одном юзерагенте.
Юзерагенты выводятся в порядке убывания количества их использования.
Список полей этого отчета.
  1. TOP useragents – количество уникальных юзерагентов в логе
  2. c – количество кликов с этого юзерагента
  3. ip – количество разных IP адресов, которые использовали этот юзерагент
  4. url – количество уникальных станиц, которые были запрошены с использованием этого юзерагента.
  5. ref – количество уникальных реферреров, которые использовались этим юзерагентом.
  6. ua – название юзерагента
Какие признаки ддос атаки можно увидеть в этом отчете.
  1. Если какие то юзерагенты используются намного чаще чем другие. (поле c)
  2. В поле url низкое значение по сравнению с количеством раз использования этого юзерагента. То есть с этим юзерагентом запрашиваются одни и те же страницы.
  3. В поле ref низкое значение по сравнению с количеством раз использование этого юзерагента. То есть с этим юзерагентом используется один и тот же реферрер.

Количество строк выводимых в отчетах

По умолчанию в каждом отчете выводится первые 20 строк.
Для изменения максимального количество выводимых строк используется ключ –p за которым указывается количество строк.
Пример
./ddosv -i -p 5 logFile

Одновременный вызов нескольких отчетов

Можно при вызове программы указать несколько ключей и тогда будет построено несколько отчетов.
Например, вывод подряд 3 отчетов.
./fddos -i -e –U log

Между всеми ключами нудно ставить пробел
Указав ключ –a можно вывести все отчеты подряд (кроме отчета -I)
./fddos -a log

Раздельный анализ логов доступа к динамическим и статическим файлам

Рекомендуется производить раздельный анализ анализатором логов доступа к статическим файлам и к динамическим.
Так как интенсивность кликов к этим файлам может сильно различаться.
Например, один запрос к динамической странице, может порождать десятки запросов к статическим файлам jpg, gif, css, js и так далее.
Во вторых чаще всего ддос атаке подвергаются динамические файлы. Поэтому убрав из лога запросы к статике, будет лучше видно запросы к динамическим страницам.
Есть два способа разделить лог файлы на части.
  1. В конфигурации NGINX создать несколько локейшенов под разные типы файлов и для каждого локейшена указать свой файл лога access.log.
  2. Можно писать статику и динамику в один лог файл, но перед анализом с помощью функции grep или egrep убирать из нее не нужные строки.
Например, так можно убрать из лог файла log1 запросы к статическим файлам
egrep -v -i '(\.jpg|\.jpeg|\.gif|\.ico|\.css|\.js|\.png)' log1>log2

Рекомендую для каждого сайта вести отдельный лог файл, а не писать логии всех сайтов в один файл, так как это позволяет лучше видеть флуд на каком то одном сайте.
Хотя если у вас очень много сайтов и они мало посещаемы, то возможно вам будет удобнее писать логи всех этих сайтов в один файл. И анализировать суммарный лог файл.

Не плохой идеей может быть еще большее разделение лог файлов на части для анализа.
Например, отдельно вести логии для каждого типа динамических и каждого типа статических файлов. и отдельно их анализировать.
Это позволит
  1. Легче определить начавшийся ддос-флуд этих файлов.
  2. Точнее задать лимиты для программы автоматического бана ботов, анализирующей логи.

Анализ кликов одного IP адреса

Если в отчете вы нашли подозрительный IP адрес, то вы можете проанализировать клики лишь с одного этого IP.
Для этого с помощью команды grep нужно получить строки из лога, относящиеся к этому IP
grep 11.22.33.44 /path/to/access.log >log

Затем проанализировать полученный лог файл log с помощью анализатора.

Стоимость анализатора логов ddosViewer

Оплата производится в том случае, если вы находите анализатор ddosViewer полезным и желаете поощрить автора для его дальнейшего улучшения.
Стоимость анализатора ddosViewer 10$
В комментарии к платежу напишите ваше имя или емейл и в скобках (за ddosViewer)
Кошельки вебмани для оплаты.
Z592796551024
R832753847268 (по текущему курсу)
Или на кошелек Янлекс-деньги по текущему курсу 41001215529324




Hosted by uCoz