MRTG + Snort::Журнал СА 5.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6142
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6854
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4137
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2976
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6282
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3433
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12335
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13966
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9098
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7052
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5361
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4593
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3400
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3127
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3378
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 2999
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 MRTG + Snort

Архив номеров / 2004 / Выпуск №5 (18) / MRTG + Snort

Рубрика: Безопасность /  Сетевая безопасность

ПАВЕЛ ЗАКЛЯКОВ

MRTG + Snort

«Лучше один раз увидеть, чем сто раз услышать» гласит пословица. Многие вещи мы лучше понимаем, представляем и запоминаем, если видели их собственными глазами. При этом не всякое нами увиденное воспринимается одинаково хорошо. Очень сильно на процесс восприятия влияет наглядность. В этой статье будет рассмотрен именно такой вариант отображения данных об интенсивности атак, регистрируемых с помощью 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. Нам необходимо отредактировать или создать заново этот файл, добавив туда следующие строки:

mrtg.cfg

# Рабочая директория mrtg, где создаются поддиректории для отчётов, обычно она уже указана

WorkDir: /var/www/html/mrtg

# Выбор языка – вносит в заголовок html-cтроку с CONTENT="text/html; charset=koi8-r" и локализует html-файлы создаваемых отчётов

Language: russian

# Внешний файл, который будет являться источником данных для mrtg, записывается в обратных кавычках

Target[snort]:`/etc/mrtg/snort_stat.pl`

# Максимальное число атак в единицу времени. Значения выше игнорируются, нужно больше для наглядности

MaxBytes[snort]: 2000

AbsMax[snort]: 2000

# Заголовок окна браузера, тег в html

Title[snort]: Статистика атак (данные Snort)

# Заголовок страницы с графиками

PageTop[snort]: <H1>Статистика атак (данные Snort)</H1>

# Поддиректория в 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-запрос. В результате на экране у вас может быть примерно следующее:

Рисунок 1

Если БД с инцидентами у вас достаточно большая, то запрос может выполняться несколько десятков секунд.

Убедившись, что число строк в таблице event, время которых лежит в интервале последних 300 секунд, считается правильно, создадим файл snort_stat.pl в директории /etc/mrtg, который будет выполнять все проделанные нами действия в автоматическом режиме. Подробнее о создании подобных скриптов можно прочитать в [7, 8].

Файл snort_stat.pl

#!/usr/bin/perl

# Файл, выдающий число атак за последние 300 секунд

use DBI;

# Хост, где запущена БД MySQL

$hostname="адрес_хоста_MySQL_с_БД_snort";

# Порт, на котором запущена БД MySQL

$port="3306";

# Имя пользователя, от которого подключаться к БД

$user="snort";

# Пароль пользователя, указанного выше

$password="пароль_подключения_к_БД";

# Имя БД, к которой осуществляется подключение

$database="snort";

# Подключиться к БД

$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port", $user,$password);

# Подготовить SQL-запрос, выполняющий подсчёт числа атак за последние 300 секунд на выполнение

$sth = $dbh->prepare("SELECT count(timestamp) FROM event WHERE unix_timestamp(now())-unix_timestamp(timestamp)<300");

# Выполнить запрос

$sth->execute;

# Результат выполненного ранее запроса поместить в массив ref

@ref = $sth->fetchrow_array;

# Вывести полученное в результате запроса значение

print $ref[0]," ";

# Завершить работу с БД и отключиться от неё.

$rc = $sth->finish;

$rc = $dbh->disconnect;

# Вывести дополнительные значения, необходимые для соблюдения формата передачи данных в mrtg

print "0 ";

print "0 ";

print "snort ";

Соответствующие параметры: адреса MySQL-сервера и пр. следует задать самостоятельно, в зависимости от вашей конфигурации. Следует отметить, что сам скрипт и БД могут быть разнесены и выполняться на разных компьютерах, если вы запускаете скрипт на том же самом компьютере, где находится БД, что наиболее вероятно, то без сомнения можно использовать значение «localhost». После указания в файле правильных значений необходимо придать файлу атрибут запускаемости следующей командой:

# chmod +x /etc/mrtg/snort_stat.pl

Далее, для того чтобы данный сценарий работал без ошибок, перед его тестовым запуском необходимо убедиться в том, что в системе установлен не только сам perl по тому адресу, что указан в первой строчке, который будет выполнять написанный нами скрипт, но и его пакеты-расширения, позволяющие ему взаимодействовать с БД. Это perl-DBD-MySQL и perl-DBI. Проверить их наличие можно командой:

# rpm -qa|grep perl

которая выдаст имена всех пакетов в вашей системе, в которых содержится слово perl. В случае отсутствия двух вышеуказанных пакетов, содержащих необходимые нам для работы perl-модули, следует установить их, например для RedHat v.7.3, командами:

# rpm -ihv perl-DBI-1.21-1.i386.rpm

# rpm -ihv perl-DBD-MySQL-1.2219-6.i386.rpm

(Эти rpm-пакеты с модулями можно найти на втором и третьем компакт-дисках соответственно.)

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

19
0
0
snort

Первая цифра – число атак за последние 5 минут, следует заметить, что она может отличаться от той цифры, что была выдана при ручном вводе соответствующего SQL-запроса ранее, так как время не стоит на месте, то пятиминутные интервалы, в промежутке которых осуществляется подсчёт, будут разные для разных моментов запуска. В случае отсутствия атак первая цифра будет 0.

Три последующие строки меняться не будут, что легко заметить из последних строчек выводящего их скрипта.

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

После того как как мы убедились, что скрипт работает, можно запустить mrtg. Первые три раза лучше это сделать вручную, так как директория snort к моменту запуска скорее всего будет отсутствовать со всем её будущим содержимым, то в первые два раза будет выдано сообщение о создании директории, и будут выданы сообщения об ошибках. Mrtg будет жаловаться на то, что отсутствует log-файл, где хранятся данные и отсутствует его резервная копия. Третий раз запуск программы должен пройти тихо, без выдачи каких-либо сообщений об ошибках. Если это так, то можно смело переходить к автоматизации процесса запуска mrtg. Если бы мы сразу решили автоматизировать запуск, то эти и, возможно, другие сообщения об ошибках могли бы оказаться в log-файлах вашей системы, что усложнило бы процесс отладки и поиска возможных ошибок.

Дополнительно убедиться в правильности работы mrtg можно, изучив содержимое директории /var/www/html/mrtg/snort командой:

# ls /var/www/html/mrtg/snort

Там должны быть 7 файлов:

  • snort-day.png                    
  • snort.log     
  • snort.old
  • snort-year.png
  • snort.html
  • snort-month.png
  • snort-week.png

Процесс автоматизации запуска mrtg возможно организовать двумя путями: запускать mrtg в виде демона один раз из стартовых скриптов, например из /etc/rc.d/rc.local, указав дополнительно соответствующий параметр в файле конфигурации, либо запускать с помощью демона crond. Второй вариант мне нравится больше. Для его реализации необходимо в файле /etc/crontab прописать следующие две строчки:

# mrtg-статистика
0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg --logging /var/log/mrtg.log

Строка-комментарий никакой смысловой нагрузки не несёт, кроме того, что это правила хорошего тона, пояснять все записи в crontab-файлах, да и потом в случае чего проще будет разобраться.

Сообщения от mrtg лучше вести в отдельный файл /var/log/mrtg.log, дабы не замусоривать и так перегруженный /var/log/messages, хотя это не обязательно. MRTG лучше запускать раз в пять минут (запись 0-59/5), каждого часа, каждого дня месяца, каждого месяца в любой день недели (оставшиеся четыре *). Подробнее про синтаксис и процесс автоматизации см. [9 стр.34-38]. В случае если вы будете запускать его чаще или реже, следует изменить и скрипт, подсчитывающий значение числа атак, заменив там соответствующее 5 минутам значение в 300 секунд.

После того как добавлены эти строчки, можно считать, что работа по настройке закончена, и если у вас, как и положено, запущен демон crond, то всё будет работать. И уже через несколько часов можно будет наблюдать не совсем пустые гистограммы. В случае если у вас запущен веб-сервер, просмотрите любым графическим браузером файл http://yourserver/mrtg/snort/snort.html, либо файл /var/www/html/mrtg/snort/snort.html локально в противном случае. В результате вы увидите картинку, подобную нижеследующей:

Рисунок 2

После того как, казалось бы, всё рассказано и показано, хочется сделать пару замечаний.

Первое касается точности построения графиков. Как легко заметить, для запуска используется демон crond, который запускается после указанного времени, когда не только загрузка системы позволит это сделать, но и будет ниже определённой. В результате следует понимать, что запуск происходит не точно каждые 5 минут. Если будет запоздание, то скрипт, подсчитывающий атаки, запустится позже, в результате его пятиминутный интервал не перекроется с предыдущим и будет дырка, то есть часть атак не будет подсчитано. Если же после «запоздавшего» задания следующее будет вовремя, то произойдёт перекрытие и некоторые атаки будут подсчитаны дважды. Для систем с грубой оценкой это не важно, так как отклонения эти не большие и примерно компенсируются и не накапливаются в силу случайно флуктуирующего числа атак в единицу времени. Для более точных оценок данный метод следует корректировать. Именно по причине грубости данного метода я не вижу смысла запускать mrtg чаще чем раз в 5 минут.

Второе замечание касается подсчёта числа атак в единицу времени при построении графика. В случае если по каким-то причинам придётся запускать mrtg в разные интервалы времени, то, возможно, вам пригодится следующая информация. Сейчас, когда запускается mrtg то, так как в Options указано слово absolute, осуществляется деление переданного значения от скрипта на время, равное разнице между текущим запуском mrtg и предыдущим. Это время приблизительно равно 300 секундам и там, и там, поэтому получается примерно точно. Однако если по каким-то причинам с момента последнего запуска mrtg прошло другое количество времени, то как легко предположить, среднее число атак будет подсчитано неправильно. Несколько исправить ситуацию может использование опции gauge вместо absolute, но не всегда. Если указана опция gauge, то значение не делится на интервал времени, а принимается равным тому, что передали. Соответственно, для правильного подсчёта и отображения в скрипте snort_stat.pl необходимо будет делить выводимое значение на 5. Этот способ подсчёта также является грубым, но может помочь вам несколько уменьшить ошибку, поменяв правила её подсчёта.

Литература, ссылки:

  1. MRTG: The Multi Router Traffic Grapher, http://people.ee.ethz.ch/~oetiker/webtools/mrtg
  2. Закляков П. Разводной мост на Linux. – Журнал «Системный администратор» №4(5), апрель 2003 г.
  3. Манн С., Крелл М. Linux. Администрирование сетей TCP/IP. Пер. с англ. – М.: ООО «Бином-Пресс», 2003 г.
  4. Колисниченко Д.Н. Linux-сервер своими руками. – СПб: Наука и Техника, 2002 г.
  5. Закляков П. Удобнее, эффективнее, лучше: snort + MySQL – Журнал «Системный администратор» №11(12), ноябрь 2003 г.
  6. Холзнер С. Perl: Специальный справочник – СПб: Питер, 2000 г.
  7. Дюбуа П. Применение MySQL и Perl в Web-приложениях.: Пер. с англ. – М.:Издательский дом «Вильямс», 2002 г.
  8. Как получить доступ к базе данных из cgi-скриптов? (Техническая поддержка Zenon N.S.P.: Виртуальные UNIX-серверы: Вопросы по MySQL), http://www.host.ru/documentation/v-www/0025.html#11
  9. Тейнсли Д. Linux и UNIX: программирование в shell. Руководство разработчика: Пер. с англ. – К.: Издательская группа BHV, 2001 г.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru