Snort установка настройка windows. Практика использования IDS SNORT

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

История о том, как я ставил SNORT + OINKMASTER + BASE

1. Установка SNORT

Идем в /usr/ports/security/snort/. Собираем SNORT (с опциями DYNAMIC и MYSQL):

# make install clean

Прописываем его в rc.conf:

Snort_enable="YES"

Начиная где-то с версии 2.4, в комплекте со snort НЕ предоставляются правила. По-этому, их надо скачивать самостоятельно. Существует два способа. Первый — скачивать руками, второй автоматизировать процесс через OINKMASTER. Так или иначе, надо будет зарегистрироваться на сайте www.snort.org, а для OINKMASTER надо еще сгенерировать OINK CODE в своем аккаунте на snort.org.

2. Установка и настройка OINKMASTER

Идем в /usr/ports/security/oinkmaster и ставим порт:

# make install clean

После установки, в директории /usr/local/etc появляется файл oinkmaster.conf.sample. Его надо переименовать в oinkmaster.conf и поправить в нем следующие строчки:

# Example for Snort-current ("current" means cvs snapshots). url = http://www.snort.org/pub-bin/oinkmaster.cgi/oinkcode/snortrules-snapshot-CURRENT.tar.gz tmpdir = /tmp/

Вместо oinkcode надо вставить свой код, который мы получили после регистрации на сайте snort.org.

Чтобы теперь получить последние правила, надо выполнить команду:

# oinkmaster -o /usr/local/etc/snort/rules

Правила скачаются в папку /usr/local/etc/snort/rules. Убедитесь, что папка существует. По идеи, она должна автоматически создаться после установки SNORT.

3. Настройка SNORT

Все файлы настроек хранятся в папке /usr/local/etc/snort
Первым делом редактируем файл snort.conf, правим в нем следующие строчки:

# Наша подсеть var HOME_NET 192.168.0.0/24 # Порты, на которых висит апач portvar HTTP_PORTS

// Интересно, надо ли сюда вписывать порт 443 # Где храить логи output database: log, mysql, user=snort password=test dbname=snort host=localhost

Чтобы теперь логи хранились в базе данных, надо создать саму базу данных:

# mysql -u root -p Password: вводим пароль mysql> create database snort; mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to ; mysql> SET PASSWORD FOR "snort"@"localhost"=PASSWORD("password"); mysql> exit

Теперь ее надо заполнить. Файл create_mysql я взял в папке /usr/ports/security/snort/work/snort-2.8.1/schemas. Если его там нет, то просто соберите порт (make).

# mysql -u root -p ~/create_mysql snort

Пробуем запустить snort:

# /usr/local/etc/rc.d/snort start

Смотрит /var/log/messages. Если все запустилось без ошибок, то хорошо)))

4. Установка и настройка BASE

Сначала надо поставить pear. Идем в /usr/ports/devel/pear

# make install clean

Теперь надо еще несколько пакетов к pear:

# pear install Image_Color # pear install Log # pear install Numbers_Roman # pear install Numbers_Words-alpha # pear install Image_Canvas-alpha # pear install Image_Graph-alpha

Теперь надо поставить adodb. Я ставил версию 5.02а.

# cd /usr/ports/databases/adodb5 # make install clean

BASE в портах я не нашел. Может, плохо искал. Его можно скачать с сайта www.secureideas.sf.net
Распаковываем его в любую папку на веб сервере. В моем случае — это /usr/local/www/base. В этой папке переименовываем файл base_conf.php.dist в base_conf.php. Редактируем в файле следующие строки:

# Включаем русский язык $BASE_Language = "russian"; # Если установить 0, то не будет авторизации при доступе к BASE. ВНИМАНИЕ! Чтобы инициализировать BASE, надо сначала установить значение 0! $Use_Auth_System = 1; # Если, например, BASE доступен через http://localhost/base, то заносим значение /base. # Я использую виртуальный домен www.base.server.ru, по этому ничего не вношу. $BASE_urlpath = ""; # Указываем путь до adodb $DBlib_path = "/usr/local/share/adodb"; # Параметры для подключения к базе данных $alert_dbname = "snort"; $alert_host = "localhost"; $alert_port = ""; $alert_user = "snort"; $alert_password = "mypassword";

Все. Сохраняем файл и закрываем его. Открываем BASE через браузер. Он скажет, что у нас не оптимизирована база данных и предложит ее оптимизировать. Соглашайтесь. После этого установка BASE завершена.

Введение

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

Основным его плюсом является доступность, и возможность редактировать его работу под свою конкретную рабочую сеть. Программа предназначена для работы как в малых, так и больших организациях. Так же не маловажна возможность редактирования собственных уникальных правил исходя из требований безопасности конкретной организации (например, запрет на доступ персонала к социальным сетям).

Из минусов можно выделить неудобность настройки и установки на некоторых ОС (например, Windows), отсутствие единого достаточно полного и подробного описания настройки и разработки собственного набора правил.

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

Основная задача этой работы состоит в том, что бы разобраться с функциональными особенностями работы IDS Snort, проверить работу приложения производя на него разного рода сетевые атаки. Выяснить есть ли аналогичные IDS в более удобном формате. Как Snort взаимодействует с базами данных. Разработать несколько уникальных правил и проверить их на работоспособность.

Установка и настройка IDS Snort

Snort: Установка на ОС Windows XP

При установке Snort на операционную систему Windows могут возникнуть некоторые сложности. Поэтому в этой работе уделяется достаточно подробная часть установки и возможностей настройки. Для начала нужно скачать требуемые программы на рабочий компьютер.

Правила для Snort.

Все вышеуказанное скачивается с официальных сайтов этих приложений.

Winpcap - приложение, которое перехватывает и фильтрует пакеты на уровне ядра. Это аналог встроенному драйверу Unix систем libpcap. Установка не доставит особых не удобств, запускается через обычный инсталлятор. После этого требуется скачать с официального сайта саму IDS, после этого мы скачиваем оттуда же свежий архив с правилами. Следующим шагом станет полное копирование всех папок, которые находились в архиве с правилами в корневой каталог приложения с полной заменой содержимого, где это требуется. Затем для правильной работы программы потребуется провести важные изменения в конфигурационном файле.

var RULE_PATH c:snort ules

var SO_RULE_PATH c:snortso_rules

var PREPROC_RULE_PATH c:snortpreproc_rules

dynamicpreprocessor directory c:snortlibsnort_dynamicpreprocessor

dynamicengine c:snortlibsnort_dynamicenginesf_engine.dll

#dynamicdetection directory /usr/local/lib/snort_dynamicrules

Находим подобные строчки в конфигурационном файле и заменяем теми которые предоставлены выше. После этого пробуем протестировать приложение. Запускаем командную строку и переходим к каталогу приложения в раздел "bin". Введем команду "snort -W"

Рис. 1.1.

Этой командой мы проверяем работоспособность приложения просматривать наши интерфейсы. Убедившись что их более одного, выбираем тот который подключен к рабочей сети, что бы приступить к перехвату пакетов и отслеживанию работы IDS.

С:Snortinsnort -i 3 -c C:snortetcsnort.conf -l C:snortlog -A console

Разберем теперь команду которую мы ввели. "- i 3" означает что мы будем просматривать интерфейс который имеет ID= 3 в списке наших интерфейсов. Затем мы указали путь до файла конфигурации и путь до каталога куда следует записывать "log" перехваченных пакетов. "-A console" обозначает что тревожные пакеты будут выявляться у нас в консоли. Если во время обработки возникают какие либо неполадки устраняем их по ходу выявления. Snort указывает строку и вид ошибки при сборке. Если все сработало, то мы ничего не увидим до тех пор пока не сработает одно из запущенных правил. Что бы задействовать одно из них попробуем имитировать сетевую атаку и запустим подозрительный пакет по нашей локальной сети. Для этого к примеру откроем командную строку и введем следующее: "Ping 192.168.1.16". Snort перехватит попытку прослушать хост под адресом 192.168.1.1624 и выведет сообщение и информацию об подозрительном действии в сети. К сожалению у подобных IDS систем есть сильный недостаток -это ложные срабатывания. В связи с этим для того что бы Snort был полезным и не вводил в заблуждение, нужно достаточно емко и четко прописывать правила и разграничивать просматриваемые сети, что бы избежать этих ложных срабатываний.


Рис. 1.2.

Сейчас в консоли, где работает наш IDS, появятся сообщения о подозрительном пакете, который напоминает "прослушивание". Это задействованное правило показало, что Snort полностью работоспособен. Рассмотрим режимы его работы и синтаксис правил для дальнейшей работы.

С возвращением, мои хакеры!

В мире информационной безопасности наиболее распространенной системой обнаружения вторжений (IDS), с которой вы рано или поздно столкнетесь, является Snort. Как вы, скорее всего, уже знаете, IDS работает аналогично антивирусному программному обеспечению - пытается идентифицировать вредоносное программное обеспечение в вашей сети и предупреждает вас о его присутствии.

Snort, созданный Мартином Рошем (Martin Roesch) в 1999 году, стал настолько популярным, что сетевой гигант Cisco приобрел его в 2014 году. Поэтому в ближайшем будущем вы, скорее всего, увидите его почти на всех устройствах Cisco. И поскольку Cisco является производителем самых популярных сетевых устройств, то скоро Snort будет вам попадаться везде.

Даже если ваша организация никогда не использует продукты Cisco (что маловероятно) или Snort, вам стоит разобраться в том, как работает эта IDS, так как большинство других систем обнаружения вторжений работают схожим образом.

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

Давайте начнем!

Метод 1. Установка Snort из репозиториев

Установка Snort дело простое, если в репозиториях вашей системы есть Snort. К сожалению, в Kali его больше нет, поэтому наш первый шаг - добавить репозиторий, в котором есть Snort. В этом случае мы добавим некоторые репозитории Ubuntu.

Открываем файл /etc/sources.list. Мы можем сделать это с помощью любого текстового редактора (здесь мы будем использовать Leafpad).

Kali> leafpad /etc/apt/sources.list

Как видно на скриншоте выше, мы добавили несколько репозиториев Ubuntu, которые также перечислены ниже. Поскольку Ubuntu является форком Debian (основным Linux-дистрибутивом, на котором построен Kali), то большинство пакетов Ubuntu будут работать и на Kali.

Deb http://ch.archive.ubuntu.com/ubuntu/ saucy main limited deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main limited deb http://httpredir.debian.org/debian jessie main deb-src http://httpredir.debian.org/debian jessie main

Для того чтобы обновить список наших репозиториев, после сохранения файла необходимо обновить список самих пакетов. Мы можем сделать это, набрав в консоли:

Kali> apt-get update

После того, как наши пакеты обновятся, мы можем установить пакет Snort из репозитория с помощью команды:

Kali> apt-get install snort

Вот и все, что нужно сделать. Snort установлен и готов к работе! Чтобы это проверить, просто введите в консоли:

Kali> snort -V

В нашем случае Snort вывел номер своей версии (в данном случае, 2.9.2).

Метод 2. Установка Snort из исходников

Установка Snort из исходников - задача более сложная и трудоемкая, но преимущество этого способа заключается в том, что Snort будет скомпилирован специально для вашей конкретной конфигурации оборудования и программного обеспечения.

Это обеспечит вам лучшую общую производительность. Как и при работе с любой IDS, производительность имеет решающее значение. Более низкая производительность IDS либо замедлит вашу общую способность работать с сетью, либо приведет к появлению drop-пакетов. В первом случае у вас будут недовольны клиенты или пользователи, а во втором вы подвергаете риску безопасность сети.

При использовании Snort в защищенной среде на продакшене установка из исходников является крайне предпочтительной. Кроме того, установка из исходников гарантирует, что вы устанавливаете последнюю версию Snort. Многие из репозиториев содержат более старые версии. Текущая версия Snort - 2.9.8, а в репозиториях - 2.9.2. Небольшая разница, но когда мы пытаемся защитить «сокровище», то каждая деталь будет полезной.

Начнем с создания директории в Kali, куда загрузим исходный код.

Kali> mkdir snort_source

Затем перейдем в эту директорию

Kali> cd snort_source

Прежде чем скачать Snort, необходимо установить Data Acquisition library (библиотеку сбора данных) или DAQ. У DAQ есть несколько зависимостей, которые нам необходимо установить.

Kali> apt-get install -y bison flex

Теперь мы можем скачать и установить DAQ с сайта Snort.

Kali> wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz kali> tar -xvzf daq-2.0.6.tar.gz

Затем перейдем в каталог daq.

Kali> cd daq-2.0.6

Наконец, сконфигурируем DAQ и вызовем команду make.

Kali> ./configure kali> make kali> install kali> wget "https://snort.org/snort/snort-2.9.8.0.tar.gz"https://snort.org/snort/snort-2.9.8.0.tar.gz

После того, как он скачается, нужно будет его распаковать. (Для получения дополнительной информации о команде tar, можно ознакомиться с нашей статьей по Основам Linux).

Kali> tar -xvzf snort-2.9.8.0.tar.gz

Перейдем в ту директорию, где находятся новые файлы Snort.

Kali> cd /snort-2.9.8.0

Нужно сконфигурировать его.

Kali> ./configure --enable-sourcefire

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

Kali> make

И, наконец, мы делаем установку (make install). Эта команда берет перекомпилированные компоненты программы и размещает их в соответствующих директориях.

Kali> make install

Поскольку мы в процессе установки установили новые файлы библиотеки, нам нужно обновить общие библиотеки. Для этого введем в консоли следующую команду:

Kali> ldconfig

Чтобы запускать Snort из любого каталога, можно сделать символическую ссылку на бинарные (исполняемые) файлы в /usr/local/bin/snort и поместить ее в директорию /usr/sbin, назвав snort. Поскольку /usr/sbin находится в нашей переменной PATH, мы можем ввести Snort в любом месте операционной системы, чтобы начать использовать IDS.

Kali > ln -s /usr/local/bin/snort /usr/sbin/snort

Давайте проверим, нормально ли установился Snort. Для этого наберем в консоли:

Kali> snort

Как мы видим, Snort запустился и успешно работает в режиме дампа пакетов или так называемом режиме сниффера.

Теперь, когда мы успешно установили Snort, продолжим его настройку для обнаружения вредоносного программного обеспечения. Это будет в нашей следующей статье этой серии, так что обязательно возвращайтесь!

Отказ от ответственности : Эта статья написана только для образовательных целей. Автор или издатель не публиковали эту статью для вредоносных целей. Если читатели хотели бы воспользоваться информацией для личной выгоды, то автор и издатель не несут ответственность за любой причиненный вред или ущерб.

Snort – относится к свободному программному обеспечению и является мощным инструментом предотвращения вторжений (IPS) с открытым исходным кодом. На данный момент последней версией утилиты является 2.8.6.1 от 22.07.2010.

Режимы работы snort

Разработчики выделяют три режима работы snort:

  • режим снифера;
  • режим регистратора пакетов;
  • режим сетевой системы выявления атак.

В режиме снифера snort просто выводит в стандартный поток вывода результатов содержание (частично или полностью) пакетов, которые перехватывает в сети. В режиме регистратора пакетов – сохраняяет перехваченные пакеты в указанном каталоге файловой системы. В режиме сетевой системы выявления атак – анализирует трафик сети на соответствие предварительно сформулированным пользователем правилам и выполняет определенные пользователем действия в случае такого соответствия.

Во всех режимах пользователь может задать правила фильтрации сетевого трафика. Синтаксис этих правил такой же, как и в программе tcpdump (windump) (только немного в укороченном виде). Источником данных может быть не конкретно сеть, а предварительно сформированный регистрационный файл. Snort может одновременно находиться в любых двух из этих режимов или во всех трех одновременно.

Режим снифера

Указателем режима снифера является наличие в командной строке snort опций -v, -d или -e. Опция -v разрешает вывести IP-, TCP-, UDP- и ICMP-заголовки пакетов. Опция -d – данные пакетов. Опция -e – Ethernet-заголовки.

Выводит заголовки и данные TCP-пакетов.

#snort -v -d icmp

То же самое, но для ICMP-пакетов.

Режим регистратора пакетов

Указателем режима регистратора пакетов является наличие в командной строке опции -l.

#snort -v -l log

Регистрирует IP-, TCP-, UDP- и ICMP-заголовки всех пакетов в каталоге log (причем для каждого пакета создается отдельный текстовый файл).

Заметим, что каталог регистрации (в данном случае – log) должен существовать.

#snort -l log -b icmp

Регистрирует ICMP-пакеты в каталоге log в двоичном (binary) формате, совместимым с форматом регистрации tcpdump.

Двоичный файл регистрации позднее может быть прочитан с помощью snort (или любого другого средства, которое поддерживает формат регистрации tcpdump, например, windump или Analyzer).

#snort -vd -r log\packet.log udp

Выводит на дисплей заголовки и данные UDP-пакетов, которые были предварительно зарегистрированы в файле log\packet.log.

Режим сетевой системы выявления атак

Указателем режима сетевой системы выявления атак является наличие в командной строке опции -c.

#snort -c snort.conf

Запускает snort в режиме сетевой системы выявления атак в соответствии с правилами, определенными в файле snort.conf.

Заметим, что работа snort в режиме сетевой системы выявления атак нуждается в, как правило, регистрации пакетов. Поэтому командная строка рядом с опцией -c часто также включает опцию -l (при отсутствии этой опции пакеты регистрируются в каталоге /var/log/snort). Запретить регистрацию пакетов в режиме сетевой системы выявления атак можно с помощью опции -N.

Конфигурация режима (способа) вывода сигналов тревоги

Режим по умолчанию: вывод в текстовый файл alerts.ids в каталоге регистрации. Формат вывода включает пометку времени, объясняющее сообщение и содержание (частично) заголовков пакета, который послужил причиной сигнала тревоги.

Получение справки о синтаксисе командной строки snort

Краткую справку о синтаксисе командной строки snort можно получить, запустив snort с опцией -?:

Исчерпывающая справка содержится в man-странице snort.

Написание правил выявления атак

Snort использует два вида правил: бесконтекстные (обычные) и контекстные (правила препроцессоров). Бесконтекстные правила применяются для каждого пакета отдельно, без связи с другими пакетами. Контекстные могут применяться к той или иной совокупности (последовательности) пакетов. Большинство правил пишутся в единой строке, хотя могут занимать и несколько строк (в этом случае каждая строка, кроме последней, должна заканчиваться символом \).

Написание бесконтекстных правил

Каждое правило делится на две логических секции: заголовок и опции. Заголовок включает:

  • обозначение действия, которое должно выполняться в случае выполнения правила;
  • обозначение протокола;
  • IP-адрес источника и назначения;
  • порты источника и назначения.

Опции включают определение дополнительных критериев выполнения правила и определение дополнительных реагирующих действий. Общий синтаксис правил snort:

header (options)

Опции являются необязательной частью правил. В более конкретном плане:

action proto IP1/mask1 port1 ->|< > IP2/mask2 port2 (keyword1: value; \

keyword2: value2; …;)

Пример правила:

alert tcp any any -> 192.168.1.0/24 111 (content:»|00 01 86 a5|»; \

msg: «mountd access»;)

Здесь заголовком является: alert tcp any any -> 192.168.1.0/24 111.

Опциями: content:»|00 01 86 a5|»; msg: «mountd access»;.

Это правило можно растолковать таким образом:

  • выдавать сигнал тревоги, если из любого места на 111 порт любого узла сети 192.168.1.0/24 поступит TCP-пакет, который содержит в своих данных последовательность 00 01 86 a5 (в шестнадцатиричном представлении);
  • сигнал тревоги сопровождать сообщением «mountd access».

Заголовки правил

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

Предусмотрено 5 стандартных вариантов действий snort в случае, если пакет отвечает одному из правил (соответственно, 5 возможных значений action):

  • alert: выдать сигнал тревоги и зарегистрировать пакет;
  • log: зарегистрировать пакет;
  • pass: проигнорировать пакет (т.е. не выполнять никаких действий);
  • activate: выдать сигнал тревоги и активизировать соответствующее динамическое (dynamic) правило;
  • dynamic: не выполнять никаких действий, пока правило не будет активизировано некоторым activate-правилом; после активизации правила действовать так, как и в случае log-правила.

Конструкция с activate и dynamic применяется для того, чтобы в случае выявления начала атаки получить более подробный протокол дальнейших действий атакующего.

Обозначение протоколов

На данный момент поддерживаются 4 протокола (соответственно, 4 значения proto): ip, tcp, udp и icmp.

Обозначение IP-адреса

Ключевое слово “any” применяется в значении “любой адрес”. Конкретные адреса задаются в формате: IP/mask, где IP – IP-адрес сети или узла, mask – маска сети. Маска сети задается как десятичное число, которое равняется числу единиц в двоичной маске. Например, обозначение 192.168.1.0/24 означает IP-сеть класса C с адресом 192.168.1.0 (число 24 эквивалентное шестнадцатиричной маске FF.FF.FF.0); обозначение 192.168.5.151/32 означает отдельный узел с IP-адресом 192.168.5.151. К IP-адресу может быть применен оператор возражения «!». Например, если приведенный выше пример правила модифицировать таким образом:

alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 \

(content: «|00 01 86 a5|»; msg: «external mountd access»;)

сигнал тревоги будет выдаваться только в том случае, если TCP-пакеты будут поступать на 111 порт узлов сети 192.168.1.0/24 извне.

Можно указать также список IP-адресов. Такой список оформляется следующим образом:

alert tcp ! any -> \

111 (content: «|00 01 86 a5|»; \

msg: «external mountd access»;)

Обозначение портов

Ключевое слово “any” применяется в значении “любой порт”. Конкретные порты задаются десятичными числами. С помощью оператора «:» можно задавать диапазоны портов:

log udp any any -> 192.168.1.0/24 1:1024

означает, что будут регистрироваться UDP-пакеты любого происхождения, направленные на порты от 1 до 1024 сети 192.168.1.0/24.

log tcp any any -> 192.168.1.0/24:6000

означает, что будут регистрироваться TCP-пакеты любого происхождения, направленные на порты с номерами, которые меньше или равняют 6000, узлов сети 192.168.1.0/24.

log tcp any:1024 -> 192.168.1.0/24 500:

означает, что будут регистрироваться TCP-пакеты, которые поступают из портов с номерами, которые меньше или равняют 1024, любых узлов на порты с номерами, которые больше или равняют 500, узлов сети 192.168.1.0/24.

К номерам или диапазонам портов может быть применен оператор возражения «!».

Опции правил

Опции отделяются одна от одной с помощью символа «;» (последняя опция в списке тоже должна заканчиваться этим символом). Ключевые слова (keywords) опций отделяются от их аргументов (values) символом «:».

Стандартные ключевые слова

Ниже приведено краткое описание некоторых стандартных ключевых слов.

msg — выводить сообщение вместе с сигналом тревоги или протоколом пакета. Формат:

msg: «»;

ttl — проверять значение поля TTL IP-заголовка. Формат:

ttl: ;

content — проверять, не содержит ли пакет определенных данных. Формат:

content: [!] «»;

Здесь “!” – оператор возражения. Примеры:

content: «|90C8 C0FF FFFF|/bin/sh»;

Данные пакета должны содержать фрагмент, который состоит из байтов 90 C8 C0 FF FF FF (в шестнадцатиричном формате) и текста /bin/sh.

content: !»GET»;

Данные пакета не должны содержать текст GET.

session — регистрировать данные прикладного уровня. Формат:

session: ;

Аргумент printable означает, что регистрировать нужно только те данные, которые отображаются на дисплее или для устройства печати. Аргумент all дает возможность зарегистрировать данные полностью. Например, правило

log tcp any any < > 192.168.1.0/24 23 (session: printable;)

разрешает зарегистрировать все telnet-сессии пользователей сети 192.168.1.0/24.

resp — применить определенные активные реагирующие действия, которые разрешают прервать нежелательное соединение. Формат:

resp: ;

где resp_modifier может принимать такие значения:

  • rst_snd – прислать на сокет источника пакета пакет TCP RST;
  • rst_rcv – прислать на сокет назначения пакета пакет TCP RST;
  • rst_all – прислать пакеты TCP RST в обоих направлениях;
  • icmp_net – прислать источнику пакета сообщение ICMP «Network Unreachable»;
  • icmp_host – прислать источнику пакета сообщение ICMP «Host Unreachable»;
  • icmp_port — прислать источнику пакета сообщение ICMP «Port Unreachable»;
  • icmp_all – прислать источнику пакета все указанные ICMP-сообщения.

Эту опцию нужно применять с большой осторожностью, поскольку, во-первых, можно помешать нормальному трафику, во-вторых, ввести snort в бесконченый цикл.

Написание контекстных правил (подключение препроцессоров)

Контекстная обработка пакетов осуществляется специальными модулями snort, которые имеют название препроцессоры (preprocessors). Специфика функционирования препроцессоров заключается, прежде всего, в том, что они имеют возможность запоминать предыдущий трафик (в определенном аспекте и объеме). Другой важной особенностью препроцессоров является возможность модифицировать данные, которые поступают на модуль бесконтекстного анализа пакетов (например, выполнять дефрагментацию пакетов). Каждое контекстное правило, в сущности, является директивой подключения того или иного препроцессора. Общий формат этих директив:

preprocessor :

где name — имя препроцессора.

Формат options для каждого препроцессора определяется отдельно

Подключение препроцессора Portscan

Препроцессор Portscan обнаруживает и регистрирует сеансы сканирования портов. TCP-сканирование с полным или неполным установлениям соединений и UDP-сканирования определяются по критерию, который можно сформулировать как “поступление с одного узла попыток подключения к n или более портов объекта защиты за T секунд”. Параметры n и T задаются в секции options директивы препроцессора Portscan. TCP stealth-сканирования определяется по поступлению хотя бы одного TCP-пакета соответствующего формата. Формат директивы:

preprocessor portscan:

Где monitor network – это IP-адрес сети, которая рассматривается как возможный объект сканирования, number of ports – указанный выше параметр n, detection period – указанный выше параметр T, file path – имя файла для регистрации. Пример.