
Павел Закляков
"Системный администратор" №5(18), май 2004
«Лучше один раз увидеть, чем сто раз услышать» гласит пословица. Многие вещи мы лучше понимаем, представляем и запоминаем, если видели их собственными глазами. При этом не всякое нами увиденное воспринимается одинаково хорошо. Очень сильно на процесс восприятия влияет наглядность. В этой статье будет рассмотрен именно такой вариант отображения данных об интенсивности атак, регистрируемых с помощью Snort. В качестве средства отображения используется MRTG.
Предполагается, что имеется СОА Snort, данные с одного или нескольких сенсоров которой заносятся в БД инцидентов. Необходимо организовать визуальное отображение среднего уровня атак в зависимости от времени. Для отображения удобнее всего использовать штатное средство большинства Linux-систем - MRTG (The Multi Router Traffic Grapher) [1,2 стр. 52-53, 3 стр. 316, 4 стр. 208-216]. Предполагается, что MRTG у вас уже установлен. Рассмотрим его настройку. Конфигурационный файл MRTG обычно называется mrtg.cfg и находится в директории /etc/mrtg.

Предполагается, что имеется СОА Snort, данные с одного или нескольких сенсоров которой заносятся в БД инцидентов. Необходимо организовать визуальное отображение среднего уровня атак в зависимости от времени. Для отображения удобнее всего использовать штатное средство большинства Linux-систем - MRTG (The Multi Router Traffic Grapher) [1,2 стр. 52-53, 3 стр. 316, 4 стр. 208-216]. Предполагается, что MRTG у вас уже установлен. Рассмотрим его настройку. Конфигурационный файл MRTG обычно называется mrtg.cfg и находится в директории /etc/mrtg. Нам необходимо отредактировать или создать заново этот файл, добавив туда следующие строки:
mrtg.cfg
# Рабочая директория mrtg, где создаются поддиректории
# для отчётов, обычно она уже указана WorkDir:
/var/www/html/mrtg
# Выбор языка - вносит в заголовок html-строку
# с CONTENT="text/html; charset=koi8-r" и локализует
# html-файлы создаваемых отчётов
Language: russian
# Внешний файл, который будет являться источником данных
# для mrtg, записывается в обратных кавычках
Target[snort]:'/etc/mrtg/snort_stat.pl'
#Максимальное число атак в единицу времени
# Значения выше игнорируются, нужно больше для наглядности
MaxBytes[snort]: 2000
AbsMax[snort]: 2000
# Заголовок окна браузера, тег
Title[snort]: Статистика атак (данные Snort)
# Заголовок страницы с графиками
PageTop[snort]: <Н1>Статистика атак (данные Snort)
# Поддиректория в WorkDir, где будут создаваться отчёты
Directory[snort]: snort
# Размер графиков по ширине в точках
XSize[snort] : 600
# Размер графиков по высоте в точках
YSize[snort] : 160
# Подпись графиков по оси ординат
YLegend[snort]: Attacks per minute
# Подпись легенды, пояснение, что именно за график
# нарисован таким-то цветом.(Необходимо, чтобы не
# запутаться, когда графиков несколько)
Legend1[snort]: Число атак в минуту
# Убрать лишнюю информацию
LegendI[snort]: LegendO[snort]:
# Задать направление рисования графиков и что значения,
# выдаваемые программой, указанной в Target, являются
#абсолютными
Options[snort]: absolute, growright
# Подпись единиц измерения атак
ShortLegend[snort]: атак/мин
После того как внесена правка в конфигурационный файл mrtg.cfg, необходимо создать файл, на который мы сделали ссылку в поле Target[snort]: /etc/mrtg/snort_stat.pl. Этот файл будет запускаться по запросу mrtg, и он должен подключаться к БД snort и подсчитывать число атак, например за последние 5 минут, после чего выдавать это значение в требуемом mrtg формате. Реализовать данную идею возможно с помощью следующего SQL-запроса:
SELECT count(timestamp) FROM event
WHERE unix_timestamp(now())-unix_timestamp(timestamp)<300
который фактически является основным ядром нижеследующего perl-скрипта, который лишь осуществляет автоматизацию процесса подключения и работы с БД и выводит результат в нужном формате.
Перед созданием скрипта убедимся, что данный запрос работает правильно, подключившись к БД из консоли
от имени пользователя snort. Выполним подключение командой:
# mysql -u snort -p
введя после соответствующий пароль, если он был задан. Далее выберем БД snort командой:
mysql> USE snort;
и выполним вышеописанный SQL-запрос. В результате на экране у вас может быть примерно следующее:

Если БД с инцидентами у вас достаточно большая, то запрос может выполняться несколько десятков секунд.
Убедившись, что число строк в таблице event, время которых лежит в интервале последних 300 секунд, считается правильно, создадим файл snort_stat.pl в директории /etc/mrtg, который будет выполнять все проделанные нами действия в автоматическом режиме. Подробнее о создании подобных скриптов можно прочитать в [7, 8].
Последние комментарии
1 год 14 недели назад
1 год 14 недели назад
1 год 30 недели назад
1 год 35 недели назад
1 год 41 недели назад
1 год 41 недели назад
1 год 41 недели назад
1 год 43 недели назад
1 год 46 недели назад
1 год 48 недели назад