Snort ubuntu установка и настройка. Безопасность корпоративной сети с использованием Snort. Установка и настройка OINKMASTER

Кустарники 15.04.2022
Кустарники

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 – имя файла для регистрации. Пример.

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

Один из наиболее распространенных способов, который уведомляет системных администраторов о вторжениях в сеть - это использование систем обнаружения сетевых вторжений (NIDS). Самой распространенной из них является Snort.

У нас уже есть вводная статья по Snort, и теперь мы хотим углубиться в эту тему, чтобы показать вам, как работают правила Snort для обнаружения вашего вторжения. Чем больше мы знаем о Snort и других NIDS, тем лучше мы можем обходить их.

Шаг 1. Найдите правила Snort

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

Мы можем найти все правила Snort, перейдя в директорию /etc/snort/rules нашего BackTrack. Перейдем и посмотрим на ее содержимое.

Cd /etc/snort/rules

Теперь выведем список файлов этой директории.

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

Шаг 2. Просмотр правил Snort

Файлы правил Snort являются простыми текстовыми файлами, поэтому мы можем открывать и редактировать их с помощью любого текстового редактора. Мы будем использовать редактор Kwrite. Откроем файл porn.rules. Этот набор правил предназначен для обнаружения порно, проходящего по проводному соединению. Это довольно старый набор правил и большинство системных администраторов больше его не использует.

Kwrite /etc/snort/porn.rules

Здесь мы можем видеть, что эти правила предназначены для обнаружения различных видов порно. Если вы когда-нибудь задавались вопросом, как ваш сисадмин узнал, что вы скачивали порно, то теперь вы это знаете!

Шаг 3. Изучение правила

Давайте возьмем какое-нибудь простое правило и проанализируем его. Откроем файл scan.rules.

Kwrite /etc/snort/scan.rules

Теперь копируем выделенное правило в отдельный текстовый файл и анализируем, что оно делает.

Шаг 4. Анализ правила SF-сканирования

Это правило предназначено для обнаружения сканирований, выполняемых с помощью различных инструментов для сканирования, таких как nmap и hping. Один из этих сканеров называется SYN-FIN. Этот сканер отправляет TCP-пакеты с установленными флагами SYN и FIN для того, чтобы попробовать определить, какие порты открыты на целевой системе.

Этот тип пакетов никогда нельзя встретить при анализе естественного трафика, поскольку пакет с одновременно включенными флагами SYN и FIN запрашивает у системы открытие соединения (SYN) и одновременное закрытие соединения (FIN).

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

Шаг 5. Заголовок правила

Начнем с изучения первой части правила с начала и до первой скобки. Начальная часть правила называется заголовком и наш заголовок выглядит вот так:

Разбивка заголовка правила на элементы

  • alert - это действие. Это может быть предупреждение, запись в лог (журнал) или пропуск.
  • Tcp - это протокол трафика, который ищет правило. Это могут быть tcp, udp и icmp.
  • $EXTERNAL_NET - это исходный IP-адрес или сеть вредоносных пакетов. Его можно установить как переменную в файле snort.conf.
  • any - это исходный порт вредоносного трафика. Этот параметр можно установить как в один порт, так и в несколько или ряд портов.
  • -> - это направление трафика. В этом случае мы ищем трафик, идущий из EXTERNAL_NET во внутренний или HOME_NET.
  • $HOME_NET - это IP-адрес назначения, к которому идет трафик. Как и в случае с EXTERNAL_NET, его можно установить как переменную в файле snort.conf.
  • any - это порт назначения. Этот параметр также может указывать на определенные порты, например 80, или на переменную, содержащую список портов.

Шаг 6. Параметры правил Snort

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

ключевое слово: аргументы

Наш пример правила выглядят вот так:

Разбивка параметров правила

  • msg - это сообщение, которое отсылается системному администратору, если это правило вызывается. В этом случае Snort сообщает системному администратору «SCAN SYN FIN».
  • flow - этот параметр позволяет правилу проверять поток трафика. Он может иметь несколько значений, включая established (TCP-соединение установлено), not established (TCP-соединение не установлено), stateless (установленные или не установленные соединения) и т.д. В нашем примере правило вызывается при трафике с установленным TCP-соединением или без него.
  • flags - эта пара проверяет флаги TCP. Как вы знаете, флаги TCP могут быть SYN, FIN, PSH, URG, RST или ACK. Это правило ищет трафик, в котором установлены флаги SYN и FIN (SF), и, кроме того, имеет два зарезервированных бита в наборе байтов флагов (12).
  • reference - этот раздел предназначен для ссылки на базу данных безопасности для получения дополнительной информации об атаке. В нашем примере мы можем найти дополнительную информацию об этой атаке в базе данных arachnids, атака 198.
  • classtype - все правила подразделяются на многочисленные категории, которые призваны помочь администратору понять, какой тип атаки был предпринят. В нашем примере мы видим, что он классифицируется как «попытка анализа».

Шаг 7. Обход и Отключение

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

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

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

Сегодня о безопасности беспроводных сетей говорят часто и много, но взлом сети воспринимается как что-то очень далёкое. Мы уже публиковали материал о том, как взломать защиту WEP. Кроме того, через некоторое время вышло продолжение о том, как защитить сеть. Сегодня же наше внимание будет посвящено инструментам проверки защиты беспроводной сети. А также системам обнаружения атак - своеобразной "пожарной сигнализации" вашей WLAN.

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

Однако, не всё так печально, как кажется. В природе существуют способы для оценки защищённости беспроводной сети, несмотря на кажущуюся абсурдность сочетания слов "безопасность" и "беспроводная сеть". Системы распознавания атак (Intrusion Detection Systems - IDS) позволяют обнаружить возможные способы вторжения ещё до того, как они произойдут, пока враг ищет лазейку. Конечно, такие системы не могут гарантировать полную защищённость (а что, кстати, может?), но в сочетании с брандмауэрами и другими средствами защиты они могут оказаться весьма полезными. Принято считать, что IDS это своего рода охранная сигнализация: то есть она лишь оповещает об атаке, оставляя работу с атакующим на другие системы и средства (вплоть до физических).

Рис. 1. Snort IDS.


Рис. 3. Linksys WRT54G.

Ниже мы будем приводить примеры на основе WRT54G с прошивкой OpenWRT RC 2 (с кодовым названием "White Russian"). На самом деле существует множество дистрибутивов Linux для беспроводных маршрутизаторов, но мы остановились именно на прошивке OpenWRT, поскольку она простая, "лёгкая" и поставляется в пакетном виде наподобие Debian Linux.


Рис. 4. OpenWRT в работе.

Предупреждение. Загрузка OpenWRT, Snort Wireless или других альтернативных версий прошивки в WRT54G лишает гарантии. Перед тем, как начать прошивку альтернативной версии, рекомендуем скачать копию текущей версии прошивки

Мы не будем детально рассматривать установку OpenWRT, так как на сайте OpenWRT можно найти прекрасное руководство по инсталляции . После завершения установки можно подключиться к маршрутизатору при помощи Telnet () и насладиться результатом.

После установки OpenWRT на маршрутизатор, можно скачивать и устанавливать программу Snort Wireless . Всё это можно сделать через упомянутую пакетную систему OpenWRT - выполнить команду ipkg со следующими параметрами.

ipkg install http://nthill.free.fr/openwrt/ipkg/testing/20041204/snort-wireless_2.1.1-1_mipsel.ipk

Некоторым может не понравиться, что этому пакету уже больше года. Но ничего страшного в этом нет, поскольку все необходимые функции IDS здесь присутствуют, а все более поздние правила Snort можно тоже скачать через ipkg (подробнее: OpenWRT tracker page ). Если вы решили организовать точку доступа на ПК, то можете скачать исходный код Snort Wireless и скомпилировать его прямо на компьютере. Отметим, что при этом следует добавить флаг --enable-wireless , иначе предпроцессоры Wi-Fi не будут работать.

Snort Wireless работает подобно обычному Snort, однако специально предназначен для беспроводных точек доступа, позволяя эффективно защитить их от атак. В частности, он содержит новый протокол правил, названный wifi и позволяющий IDS правильно выделять беспроводной трафик, типичный для распространённых атак на WLAN. Например, тех же атак при помощи Netstumbler или попыток взлома WEP. Использование протокола wifi в Snort Wireless очень похоже на настройку обычных правил для Snort, но с одним исключением: вместо ввода IP-адресов и портов первого и второго узлов, следует использовать их МАС-адреса.

На этом этапе у нас есть работающий Snort Wireless. Переходим к его настройке для использования в выбранной сети. При запуске ipkg Snort устанавливается в каталог /etc/snort на маршрутизаторе. Как и другие программы для Unix, Snort использует редактируемый конфигурационный файл, где можно указать информацию о сетевом окружении и шаблонах различных атак, которые нужно отслеживать. Файл носит название snort.conf (Рис. 5 ) и располагается в каталоге /etc/snort . Его нужно открыть в любом текстовом редакторе (если такового на маршрутизаторе нет, скачайте с помощью ipkg).


Рис. 5. Конфигурационный файл snort.conf.

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

В частности, обратите внимание на предпроцессоры, специфичные для Wi-Fi в Snort Wireless. Они включают предпроцессоры для определения пассивного сканирования сети с помощью программ вроде NetStumbler и попытки подмены MAC-адресов. Мы решили рассмотреть важные предпроцессоры отдельно.


Рис. 6. Предпроцессор AntiStumbler позволяет оповещать об атаке recon.

  • AntiStumbler . Такие программы, как NetStumbler и MacStumbler (Рис. 6 ), используют для обнаружения точек доступа нулевые SSID. Эти SSID работают как широковещательные и заставляют другие точки доступа прислать свои SSID на запросивший узел. Подобная функция полезна при поиске доступных беспроводных сетей. Предпроцессор AntiStumbler распознаёт рассылку слишком большого количества нулевых SSID с одного MAC-адреса и может поднять тревогу.
    Примечание. Этот предпроцессор не позволяет определять такие программы, как Kismet , поскольку те всего лишь пассивно прослушивают кадры 802.11, а не посылают запросы.
  • DeauthFlood . Эта атака была подробно описана в нашем материале о взломе WEP . Используется для отключения хостов от точек доступа и принудительной активации попытки повторного подключения, что даёт дополнительные пакеты для анализа во время взлома WEP. Кроме того, атаку можно использовать для "отказа в обслуживании" (Denial of Service, DoS) точки доступа. Предпроцессор DeauthFlood распознаёт этот тип атаки, подсчитывая количество кадров деаутентификации в единицу времени и, в случае необходимости, поднимает тревогу.
  • AuthFlood . Атака похожа на предыдущую, но предпроцессор AuthFlood определяет слишком частое число попыток аутентификации, то есть попыток подключения клиентов к беспроводной сети, что может использоваться в качестве DoS-атаки на точку доступа.
  • MacSpoof . Один из наиболее эффективных способов ограничения доступа к точке доступа - это создание списка MAC-адресов разрешённых клиентов. К сожалению, атакующий может подделать MAC-адрес своей машины и подключиться к точке доступа. Препроцессор MacSpoof проверяет номера пакетов и при обнаружении каких-либо несоответствий, указывающих на возможную подмену MAC-адреса, поднимает тревогу.
  • RogueAP . Чужие ("вражеские") точки доступа маскируются под обычные для того, чтобы пользователь ошибочно подключался к ним и передавал какие-либо личные данные. Этот предпроцессор пока не реализован , однако в будущих выпусках он сможет сообщать о близости чужих точек доступа.

Кроме того, Snort Wireless включает множество предопределённых правил для огромного количества ситуаций. В зависимости от конфигурации сети, некоторые из правил могут оказаться очень удобными. Например, все правила web, если в вашей сети работает web-сервер. Для активации правила достаточно просто убрать комментарий с соответствующей строки в конфигурационном файле Snort. Отдельные наборы правил по умолчанию сохраняются в каталоге /etc/snort/rules , причём любые из них можно просмотреть при помощи текстового редактора. Правила в наборах заданы точно так же, как и в самом Snort. Кстати, следуя примерам, можно легко написать правило самостоятельно.


Рис. 7. Правило Snort обнаружило машину, сканирующую порты.

В работе

Когда файл snort.conf готов, можно запускать Snort. При запуске можно указать множество параметров, которые определяют всё, начиная от вывода и заканчивая режимом работы. Для начала давайте запустим Snort со следующими параметрами (в строек Telnet).

snort -D -A full

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

Теперь, когда Snort работает, можно подумать над дополнительными способами защиты беспроводной сети. Скажем, можно обратиться к Kismet - утилите, подобной Snort, которую можно развернуть в качестве дополнительной системы обнаружения атак. Snort работает лишь на третьем уровне модели OSI - сетевом, отвечающем за IP и другой трафик. А Kismet работает на втором уровне - канальном, ответственном за кадры Ethernet. Таким образом, развёртывание обеих систем в паре позволит существенно повысить общую защищённость.


Рис. 8. Kismet в работе.

Можно настроить Snort на запись журналов в базу данных, что упрощает дальнейший анализ. Дэниэл Уолтер (Daniel Walther) написал руководство о том, как настроить запись в базы MySQL и PostgreSQL. Если вы используете Gentoo Linux на машине, работающей в качестве точки доступа, то можно пойти дальше: установить Apache и настроить отображение журналов через web. На сайте Gentoo Wiki можно найти подробное описание подобной настройки.


Рис. 9. Просмотр журналов Snort через MySQL, ACID и Apache.

Заключение

Мы затронули лишь основные принципы работы Snort. В принципе, по материалам статьи вы сможете настроить систему на точке доступа. Однако у Snort гораздо больше возможностей, чем описано в статье. В частности, вы можете заняться созданием правил самостоятельно , что поможет глубже интегрировать Snort в сеть.

Наконец, не забывайте, что для эффективной защиты беспроводной сети необходимо постоянно обновлять как Snort, так и правила. Не забывайте регулярно посещать Snort Wireless , а также ipkg package tracker (для инсталляций OpenWRT) или Snort rules page (для остальных).

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КУРСОВАЯ РАБОТА (ПРОЕКТ)
ЗАЩИЩЕНА С ОЦЕНКОЙ отлично

РУКОВОДИТЕЛЬ

доц., к. т.н., доц.

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ (ПРОЕКТУ)

Практика использования IDS SNORT

по дисциплине: инженерно-техническая защита информации

РАБОТУ ВЫПОЛНИЛ(А)

СТУДЕНТ(КА) ГР.

подпись, дата

инициалы, фамилия

Санкт-Петербург 2011

1.. Что такое Snort?. 2

2. Режим сниффера : 2

3. Режим журналирования пакетов . 6

4. Режим обнаружения сетевых вторжений. 6

1. Что такое Snort?

Snort – облегченная система обнаружения вторжения. Snort обычно называют “облегченным” NIDS /расшифровать, перевести/, - потому что это он разработан прежде всего для маленьких сетей. Программа может исполнять анализ протокола и может использоваться, чтобы обнаружить разнообразные нападения.

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

Snort может работать в 3 основных режимах:

· Режим сниффера: позволяет просто ловить пакеты из сети и отображать их на экране(как правило консоли)

· Режим журналирования пакетов: позволяет сохранять пакеты на жесткий диск


· Режим системы обнаружения вторжений (NIDS) - наиболее сложная и настраиваемая конфигурация, которая позволяет анализировать сетевой трафик на основе определяемых пользователем набора правил.

2. Режим сниффера :

В режиме анализа пакетов, Snort просто читает пакеты, приходящие из сети, и выводит их на экран. Для вывода заголовков пакетовов TCP/IP необходимо выполнить:

snort –v

Эта команда выводит заголовки IP - и TCP/UDP/ICMP-пакетов. Можно увидеть откуда отсылались пакеты, куда, во сколько /адресов?/. На рисунке /рисунки надо нумеровать, чтобы ссылаться. Ссылки нет – значит рисунок не нужен/ видно, что исходящих адреса два./откуда видно? Расшифруйте форматы записей на рисунке или хоть по номеру строки сошлитесь/

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

systeminfo


Из снимка /уже - снимки. а не рисунки? В пределах документа должно соблюдаться единообразие! Или это – нечто другое?/ становится понятно, что это за исходящие адреса. /ну и перечислите – или по крайней мере укажите. что их номера приведены в квадратных скобках/

Для того чтобы увидеть данные, содержащиеся в пакетах, необходимо ввести:

snort - vd

https://pandia.ru/text/78/320/images/image004_112.jpg" alt="подробный_вывод.jpg" width="589" height="338">

Ключи могут быть заданы в любой форме, например: "snort - vde", "snort - d - ev" и "snort - e - v -d".

Snort будет собирать информацию до тех пор, пока его не прервать. Для завершения захвата пакетов необходимо нажать Ctrl-C. После нажатия Ctrl-C будет выведен отчет о захваченных пакетах. Ниже показан отчет, полученный после работы Snort в течение приблизительно минуты.

Из снимка видно, что большинство проанализированных пакетов являются пакетами TCP/IP. Также были захвачены и UDP пакеты.

3. Режим журналирования пакетов

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

Пример: создаем каталог logs и запускаем:

snort - dev - l../log

В результате операции /куда, где его искать, как указать желательное место?/ запишется файл snort. log.. Цифры в конце новых имен файлов являются временными метками, что позволяет избегать конфликтов при создании файлов. /желателен пример лог-файла/

4. Режим обнаружения сетевых вторжений

Третий режим Snort, это режим обнаружения сетевых вторжений (Network Intrusion Detection, NIDS).

В своей базовой форме правило Snort /где они хранятся?/ имеет две части: заголовок и параметры. Ниже представлен пример правила.

alert tcp any any -> any any (content: "www. "; msg: "Someone is visiting youtube now"; sid:1000002; rev:1)

Модель структуры правил можно представить /она жестко задана или может изменяться? то, что элементы в квадратных скобках – необязательны, надеемся. известно. Но есть ли между ними спецразделители?/ по следующей схеме:

<действие_правила> <протокол> <порт> <оператор_направления>


<порт> ([мета_данные] [даные_о_содержимом_пакета]

[данные_в_заголовке] [действие_после_обнаружения])

Действия правил делятся на следующие категории:

1. alert - Создать предупреждение, используя выбранный метод, и передать информацию системе журналирования.

2. log - Использовать систему журналирования для записи информации о пакете.

3. pass - Игнорировать пакет.

4. activate - Использовать другое динамическое правило.

5. dynamic - После того, как выполнится активное правило, задействуется правило с процедурой журналирования.

6. drop - Отбросить пакет, используя программный брандмэуер, и передать информацию системе журналирования

7. sdrop - Отбросить пакет при помощи программного брандмэуера и не использовать систему журналирования.

8. reject - Используя брандмэуер, отбросить пакет в том случае, если протокол TCP, или же записать в файл журнала сообщение: ICMP порт недоступен, если пакет приходит по протоколу UDP

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

sid – уникальная метка, идентифицирующая правило. Эта опция должна использоваться с опцией rev .

<100 зарезервировано для дальнейшего использования

100-999,999 уже зарезервированные правила

>=1,000,000 правила, задаваемые пользователем

rev - значение версии правила. С помощью rev интерпретатор правил

Snort определяет версию написанного правила.

Запуск Snort в режиме IDS можно осуществить командой:

snort - c "D:\Program Files\Snort\etc\snort. conf" - l " D:\Program Files\Snort\log" - A console - i 1

ключ –с означает, что включен режим IDS

ключ l включает режим записи на жесткий диск с указанием пути к файлу

ключ A показывает что все предупрежления(alerts) будут дублтроваться выводом на консоль

ключ i указывает на порядковый номер(index) интересующего нас интерфейса

чтобы узнать поддерживаемые интерфейсы необходимо выполнить команду:

snort W

Содержимое файла snort. conf

Содержимое файла *****les:

В файл snort. conf можно подсоединять правила использую ключевое слово include .

Результат выполнения команды:

Видно, что Snort зафиксировал попытку попасть на “опасный” сайт.

Нет информации об источнике, откуда был взят дистрибутив, об ОС, на которой велось исследование

В целом работа весьма интересна. /


Дата публикации: 21 сентября 2009г.
Перевод: С.Владимирский
Дата перевода: 2 октября 2009г.

Данное руководство описывает, как установить и настроить систему обнаружения вторжения (IDS) с пакетами Snort, ACIDBASE (основной модуль анализа и обеспечения безопасности), MySQL и Apache2 в Ubuntu 9.04 с помощью менеджера пакетов Synaptic Ubuntu. Snort поможет вам в мониторинге вашей сети и предупредит о возможных угрозах. При этом Snort сформирует файлы протоколов для базы данных MySQL, а ACIDBASE позволит отобразить их в графическом интерфейсе в веб-браузере.

1. Подготовка системы и установка программного обеспечения.

1.1 Установка.

Загрузите 32-битную или 64-битную версию Desktop Ubuntu 9.04 отсюда: http://www.ubuntu.com/getubuntu/download

1.2 Системные и сетевые настройки

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

  • Размещение в демилитаризованной зоне (DMZ).
  • Статический IP-адрес, скрытый с помощью NAT за файерволом.
  • Подключение к порту мониторинга на сетевом коммутаторе (SWITCH).

Создайте нового администратора с именем <ваше_имя> и паролем <ваш_пароль> .

1.3 Установка программного обеспечения.

Первое, что необходимо сделать после завершения установки, - установить все рекомендованные Ubuntu обновления. Для доступа к обновлениям перейдите в меню: System > Administration > Update Manager (Система > Администрирование > Менеджер обновлений). Введите свой пароль и выберите Check (Проверить) . Выберите Install Updates (Установить обновления) .

С рабочего стола перейдите в System > Administration > Synaptic Package Manager (Система > Администрирование > Менеджер пакетов Synaptic) . Введите свой пароль и выберите Search (Поиск) .

Найдите и установите следующие пакеты:

  • Acidbase со всеми зависимыми пакетами
  • Snort-MySQL со всеми зависимыми пакетами
  • MySql-server-5.0 со всеми зависимыми пакетами
  • Libpcap0.8-dev
  • libmysqlclient15-dev
  • MySql-client-5.0
  • Bison
  • Apache2
  • Libapache2-mod-php5
  • Php5-gd
  • Php5-mysql
  • Libphp-adodb
  • Php-pear

2. Получите права суперпользователя

С рабочего стола перейдите в меню: Applications > Accessories > Terminal (Приложения > Дополнения > Терминал) и введите команду:

$ sudo -i
$ введите пароль

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

Для того, чтобы установить индивидуальные настройки, необходимо изменить файл настроек snort.conf .

С помощью текcтового редактора (nano, vi, vim или другого) откройте файл /etc/snort/snort.conf .

# vim /etc/snort/snort.conf

Измените переменную var HOME_NET any на var HOME_NET 192.168.1.0/24 (адрес вашей домашней сети может отличаться от адреса 192.168.1.0). Если вы ведете мониторинг нескольких сетей, необходимо указать все эти сети следующим образом: var HOME_NET . Измените var EXTERNAL_NET any на var EXTERNAL_NET !$HOME_NET (устанавливаются все переменные, кроме внешней переменной HOME_NET).

Измените var RULE_PATH ../rules на var RULE_PATH /etc/snort/rules . Прокрутите список до того места, где указана строка # output database: log, mysql, user= , удалите знак # из начала строки.

Пример: output database: log, mysql, user= password= dbname=snort host=localhost

(смотрите выше, когда создавался новый пользователь).

Запишите имя пользователя, пароль и название базы данных (dbname). При установке базы данных MySQL вам потребуются эти данные. Сохраните изменения и выйдите.

4. Установка баз данных Snort и Archive в MySQL

4.1 Установка MySQL

Войдите на сервер MySQL.

# mysql -u root -p

Иногда бывает так, что пароль не установлен, так что просто нажмите "Enter".

Если вход не выполняется, попробуйте еще раз набрать указанную выше команду и введите ВАШ_ПАРОЛЬ.

Если пароль отсутствует, вам необходимо установить пароль для учетной записи суперпользователя.

Примечание: Когда вы на сервере MySQL, в приглашении вместо символа "#" отображается группа символов "mysql>"

mysql> create user @localhost;
mysql> SET PASSWORD FOR r@localhost=PASSWORD();
mysql> SET PASSWORD FOR root@localhost=PASSWORD();

4.2 Создание базы данных Snort

mysql> create database snort; mysql> grant INSERT,SELECT on root.* to snort@localhost; mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to @localhost; mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort;

4.3 Создание базы данных Archive

mysql> create database archive; mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on archive.* to @localhost; mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on archive.* to archive; mysql> exit

4.4 Создание таблиц в базах данных Snort и Archive

Мы будем использовать схему Snort для компоновки баз данных Snort и Archive.

# cd /usr/share/doc/snort-mysql # zcat create_mysql.gz | mysql -u -h localhost -p snort # zcat create_mysql.gz | mysql -u -h localhost -p archive

4.5 Подтверждение создания баз данных и вновь созданных таблиц.

Войдите на сервер MySQL и проверьте базы данных, которые мы только что создали, и таблицы, размещенные в этих базах данных. Если все было успешно создано, вы увидите четыре (4) базы данных (mysql, test, snort и archive) в базах данных mysql и приблизительно по 16 таблиц в каждой базе данных.

# mysql -u root -p mysql> show databases; mysql> use snort; mysql> show tables; mysql> use archive; mysql> show tables; mysql> exit

4.6 Тестирование Snort

В режиме терминала наберите команду: # snort -c /etc/snort/snort.conf

Если все прошло успешно, вы должны увидеть ответ в кодах ascii.

Для завершения теста нажмите ctrl + c

5. Настройка Apache2

На компьютере должен быть уже установлен пакет Apache2.

С помощью вашего любимого текстового редактора создайте файл с именем test.php в папке /var/www/ .

# vim /var/www/test.php

Запишите в нем:

Сохраните изменения и закройте этот файл.

Отредактируйте файлt /etc/php5/apache2/php.ini

# vim /etc/php5/apache2/php.ini

Под строкой "Dynamic Extensions" добавьте следующее:

Extension=mysql.so extension=gd.so

Перезагрузите Apache2.

# /etc/init.d/apache2 restart

Получите IP-адрес вашего рабочего компьютера.

# ifconfig -a

Откройте веб-браузер и перейдите по адресу http://ВАШ_IP_АДРЕС/test.php .

Если все прошло успешно, отобразится информация по РНР.

6. Конфигурирование папок

Переместите ADOdb в папку /var/www .

# mv /usr/share/php/adodb /var/www/

Создайте папку с именем web в www и переместите в нее ACIDBASE.

# mkdir /var/www/web # mv /usr/share/acidbase /var/www/web/

Временно разрешите запись в папку базы acidbase для ее установки.

# chmod 777 /var/www/web/acidbase

# cd /var/www/web/acidbase # mv base_conf.php base_conf.old

Для работы в ACIDBASE выполните команду:

# pear install Image_Color

7. Установка ACIDBASE для баз данных Snort и Archive

7.1 Установка базы данных Snort через веб-браузер

Шаг 1 из 5:

Введите путь к ADODB. Это /var/www/adodb .

Шаг 2 из 5:

Main Database type = MySQL (Тип основной базы данных),
Database name = snort (База данных Snort),
Database Host = localhost (Локальное расположение базы данных Snort),
Database username = <ваше_имя_пользователя> (Имя пользователя базой данных Snort),
Database Password = <ваш_пароль> (Пароль для базы данных Snort)

Archive Database type = MySQL (Тип базы данных Archive),


Database username = <ваше_имя_пользователя>
Database Password = <ваш_пароль>

Шаг 3 из 5:

Если вы хотите использовать аутентификацию, введите имя пользователя и пароль (user: <ваше_имя> , password: <ваш_пароль>).

Шаг 4 из 5:

Щелкните мышкой Create BASE AG (Создать BASE AG).

Шаг 5 из 5:

Когда шаг 4 выполнен, в нижней части щелкните: Now continue to step 5 (Теперь переходите к шагу 5) .

Добавьте эту страницу в закладки.

7.2 Создайте папку для базы данных Archive ACIDBASE

Чтобы архивная база данных корректно работала, в папке ACIDBASE должна быть создана папка archive .

# mkdir /var/www/web/acidbase/archive # cd /var/www/web/acidbase # cp -R * /var/www/web/acidbase/archive # chmod 777 /var/www/web/acidbase/archive

Переименуйте существующий файл base_conf.php в base_conf.old .

# cd /var/www/web/acidbase/archive # mv base_conf.php base_conf.old

7.3 Установка базы данных Archive через веб-браузер.

Откройте веб-браузер и перейдите по адресу http://ВАШ_IP_АДРЕС/web/acidbase/archive/setup .

На первой странице щелкните "Продолжить".

Шаг 1 из 5:

Введите путь к ADODB. Это /var/www/adodb. >

Шаг 2 из 5:

Archive Database type = MySQL (Тип базы данных),
Database name = archive (База данных Archive),
Database Host = localhost (Локальное расположение базы данных Archive),
Database username = <ваше_имя_пользователя> (Имя пользователя базой данных Archive),
Database Password = <ваш_пароль> (Пароль для базы данных Archive)

Шаг 3 из 5:

Если вы хотите использовать аутентификацию, введите имя пользователя и пароль(user: <ваше_имя_пользователя> , password: <ваш_пароль>).

Шаг 4 из 5:

Щелкните на Create BASE AG (Создать BASE AG) .

Шаг 5 из 5:

Когда шаг 4 пройден, внизу щелкните: Now continue to step 5 (Теперь переходите к шагу 5).

8. Запуск Snort и проверка статуса сервисов.

Чтобы запустить Snort наберите в режиме терминала:

# snort -c /etc/snort/snort.conf -i eth0 -D

Эта команда запускает snort с использованием интерфейса eth0 в демо-режиме.

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

# ps aux | grep snort

Если сервис работает, вы увидите что-то, похожее на следующее snort -c /etc/snort/snort.conf -i eth0 -D .

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

# /etc/init.d/mysql status # /etc/init.d/apache2 status # /etc/init.d/snort status

Если сервисы работают, вы увидите ответное сообщение .

Если нужно, запустите команду
# /etc/init.d/ restart
для каждого из сервисов, который должен быть перезапущен.

Рекомендуем почитать

Наверх