- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Курс по сетям
- Зачем нужен Shodan, когда есть Google?
- Что такое IPS, IDS, UTM?
- Как установить все устройства для этичного хакинга в Kali Linux
- Обеспечение безопасности доменной инфраструктуры
- Способы защиты персональных данных
- Интересное про Private VLAN
- Зачем нужен Shodan, когда есть Google?
- Установка и настройка утилиты для обнаружения вторжений в сети – Snort
- Пошаговая инструкция для Windows
- Установка вспомогательных утилит
- Краткое содержание данной инструкции:
- Установка Snort на Linux дистрибутивах
- Мониторинг с помощью Snort
- Сниффер пакетов
- Сниффер с записью
- Системы обнаружения вторжений
- Требования для использования Snort в Windows
- Установка Snort для Windows
- Настройка Snort для Windows
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Курс по сетям
Зачем нужен Shodan, когда есть Google?
Что такое IPS, IDS, UTM?
Как установить все устройства для этичного хакинга в Kali Linux
Обеспечение безопасности доменной инфраструктуры
Способы защиты персональных данных
Интересное про Private VLAN
Зачем нужен Shodan, когда есть Google?
Еженедельный дайджест
Установка и настройка утилиты для обнаружения вторжений в сети – Snort
Хрюн в поисках вторжений
10 минут чтения
Snort — утилита для обнаружения вторжений в сети (IDS — Intrusion Detection System). Она совместима с ОС Windows и Linux. Все выявленные угрозы (список параметров подачи тревоги имеет тонкие настройки), записываются в лог-файл. Snort работает по принципу анализа пакетов транспортного уровня, поэтому для его использования, требуется перевод сетевой карты в специальный мониторный режим. Разработчики учитывали проблему потребления системных ресурсов системами класса IDS, поэтому Snort нетребовательна к железу и работает в фоновом режиме.
Обучайся в Merion Academy
Пройди курс по сетевым технологиям
Начать
Snort не имеет графической оболочки (GUI), в связи с чем любая работа с программой возможна только посредством командной строки. Ничего сложного здесь нет, и в этой статье мы подробно рассмотрим процесс установки и настройки Snort на Windows и на Linux. На различных дистрибутивах она устанавливается примерно одинаково за небольшой разницей в указании путей папок в командах и других мелочах.
Пошаговая инструкция для Windows
Первым делом переходим на официальный сайт разработчика Snort.org. Поскольку программа является полностью бесплатной, то никаких проблем с лицензией, пробной версией не появляется
Нажимаем Get Started.
Открывается окно с текстовыми командами, там выбираем в верхних вкладках нашу операционную систему (в данном случае Windows) и загружаем файл загрузчика (Installer.exe).
Устанавливаем его в режиме «прощелкивания», то есть, ни снимая никакие флажки, поставленные разработчиком по умолчанию.
Установка вспомогательных утилит
После установки Snort никаких изменений на компьютере не произошло и работать с программой нет возможности, потому что не установлены специальные утилиты и драйвера, которые обеспечат запуск приложения.
В завершающем окне Snort для Windows попросит вас установить хорошо известную сетевым администраторам утилиту Winpcap. Это драйвер, который позволит вашей сетевой карте перейти в мониторный режим, то есть передавать и получать пакеты, обходя стеки протоколов. Данная утилита тоже бесплатная, поэтому ее скачиваем с сайта разработчика www.winpcap.org и также устанавливаем в режиме «прощелкивания».
Вторая вспомогательная утилита — специальный архиватор с высокой степенью сжатия, который нужен, чтобы распаковать файлы. Скачиваем и устанавливаем архиватор 7-Zip с официального сайта 7-zip.org.
Итак, установщик загружен и установлен, вспомогательные утилиты тоже поставлены. Но поскольку, графической оболочки нет, нам надо загрузить специальные правила, по которым Snort будет работать. Возвращаемся на официальный сайт Snort.org и нажимаем на кнопку «Rules» (правила). Из открывшегося списка берем файл, список правил (rules), соответствующий нашей версии (они рассортированы по версиям Snort, а не по операционным системам). На начало 2020 г. для Windows актуальна версия 2.9.15.1, которую мы инсталлируем и настроим в качестве примера.
Для Linux есть и более новая версия Snort 3.0.
Скачанный файл правил (называется community-rules.tar.gz) находим в папке и открываем с помощью только что установленного архиватора 7-zip. Интерфейс этого архиватора очень похож на WinRar или WinZip.
Все файлы разархивируем, копируем и переносим в папку Snort, которую создал наш установщик. В дальнейшем, это значительно упростит указание путей.
Теперь находим и открываем файл snort.conf (параметры конфигурации для запуска приложения) в NotePad++ или другом текстовом редакторе.
Где-то на 103 строчке (она может немного отличаться по мере того, как разработчик вносит изменения в обновления) находим, установленную разработчиком по умолчанию строчку, указатель пути: c:\snort\rules. Она совпадает с расположением файла на нашей машине. Если у вас путь другой, то припишите именно его. Там, где надо редактировать пути, разработчик ставит две точки.
Теперь нам надо указать путь для папки Log-файлов, куда наш Snort будет записывать все логи, доступные для просмотра и изучения. Редактируем пути к лог-файлам.
В папке C:/snort уже есть папка log, для этого предназначенная, поэтому мы прописываем путь C:\snort\log.
На строчке 182 прописываем в config logdir: c:\snort\log, причем первая часть config logdir уже есть и строку можно найти по ней. Незабываем удалить символ «#», который выбрасывает строки из исполняемого файла, превращая их в комментарий. Результат:
Дальнейшее редактирование файла конфигурации проводим по списку по ссылке. Ищем по первой части строк и прописываем правильные пути. Я просто заменил строки 242-249 на этот блок.
Продолжаем редактирование. Теперь комментируем, добавляя знаки комментария «#» к строкам 259-265. В отредактированном варианте это выглядит так:
1.Редактирум пути к правилам правил Snort
# such as: c:\snort\rules
var RULE_PATH c:\Snort\rules
var SO_RULE_PATH c:\Snort\so_rules
var PREPROC_RULE_PATH c:\Snort\preproc_rules
# If you are using reputation preprocessor set these
var WHITE_LIST_PATH c:\Snort\rules
var BLACK_LIST_PATH c:\Snort\rules
2.Прописываем путь к папке лог
config logdir: c:\Snort\log
3. Редактируем пути для libraries
5. Иправляем пути правил
6.Определяем сетевую карту snort -W
7. Тестируем конфиг snort -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 2
- ключ -T указывает, что нужно протестировать текущую конфигурацию Snort
- ключ -с означает, что включен режим IDS
- далее следует путь к конфигурационному файлу snort.conf
- ключ -l включает режим записи на жесткий диск с указанием пути к файлу
- ключ -A показывает что все предупрежления(alerts) будут дублтроваться выводом на консоль
- ключ -i указывает на порядковый номер(index) интересующего нас интерфейса
7. Чтобы узнать поддерживаемые интерфейсы необходимо выполнить команду:
8. Добавляем нужные вам правила
9. Запускаем Режим IDS: snort -A console -c c:\snort\etc\snort.conf -l c:\snort\log -i 2
Краткое содержание данной инструкции:
- исправление ошибок в файле конфигурации (в новых версиях почти не требуется, см инструкцию на сайте разработчика);
- указание пути правил (rules);
- указание нужных правил из каталога;
- добавление корректных данных сетевой карты;
- указание Log-папки на жестком диске;
Указание правил идет на собственном простом языке. Выучивать его не нужно, так как правила берутся из списка правил. Завершающий этап настройки — определение сетевой карты из командной строки. После этого Snort запустится (из папки Bin файл с расширением .exe). Пример запуска (выдается ошибка — не задан препроцессор):
- Внимание, данная часть руководства не является обязательной для повторения. Разработчик уже выпустил несколько вариантов новых правил Snort, где исправлены многие ошибки. В этом случае редактирование файла конфигурации исключает этап самостоятельного их исправления.
Нормально установленный и запущенный Snort (IDS консоль) на Windows выглядит вот так (открыт с помощью Internet Explorer, но для примера указана очень старая версия 2004 года):
Установка Snort на Linux дистрибутивах
Поскольку, Snort изначально разрабатывался на Linux его установка там значительно проще, так как он изначально предназначен для этого семейства ОС. Открываем терминал, и набираем первую команду, которая начнет загрузку файлов Snort с официального сервера:
Поскольку файлы скачиваются в заархивированном виде, то используем команду «tar», чтобы запустить встроенный архиватор и разархивировать только что скаченные файлы с его помощью.
На этом этапе все необходимые файлы скачаны, теперь можно приступить к настройке программы. Snort имеет тонкие настройки, позволяющие осуществлять мониторинг с минимальным потреблением сетевых ресурсов. На практике это означает значительную экономию энергии и стоимости железа при круглосуточной работе.
Проверяем, где установился Snort командой:
Для управления Snort используются нетипичные символы в командах, но не стоит этого пугаться, так как самих команд немного. Сам Snort состоит из трех основных программных модулей.
- Дешифратор сетевых пакетов: после перевода сетевой карты в мониторный режим из общего трафика, который имеет весьма значительный объем, необходимо выкачать «транспортные» данные, то есть сведения об адресах. Именно за счет этих данных легко обнаруживаются вторжения.
- Система обнаружения вторжения: на основе дешифрованных пакетов в соответствии с rules (правилами).
- Logger/Alerter: конвертирует информацию с дешифрованных транспортных пакетов в удобный вид, для него указывается папка для хранения фалов регистрации :/var/log/Snort (логи сервера).
Мониторинг с помощью Snort
Итак, на Windows или на Linux сначала открываем окно (через терминал, или exe файл из папки GUI). Введем первую команду, чтобы получить справку, отобразить список всех основных команд (имя компьютера, Someone, замените на ваше):
На экране отобразится список:
С помощью команд из этого списка программу можно перевести в один из трех режимов работы, рассмотренных ниже.
Сниффер пакетов
Функция аналогичная многим известным снифферам, например WireShark. Пакеты дешифруются и выводятся на экран (заголовки пакетов). Режим очень удобно использовать для проверки правильности указания IP-адресов и всех настроек программы. Для запуска сниффера введите:
Сниффер с записью
На экране отображаются не только заголовки пакетов, но и происходит запись содержимого на диск. Для сетей со значительным трафиком такой режим использовать невозможно ввиду огромного объема данных. Пакеты сохраняются на диске в ASCII формате. Путь папки для записи прописывается в команде.
Системы обнаружения вторжений
Требования для использования Snort в Windows
Snort для Windows требует Windows 2000 или XP; на NT, 98 или 95 выполнение невозможно. Необходимы также установленные библиотеки WinPcap. Если они были установлены для программ, описанных ранее в этой книге, таких как Ethereal или WinDump, тогда все готово. В противном случае можно взять их по адресу
Вам может также потребоваться база данных MySQL , если вы планируете импортировать результаты в базу данных. Конкретная конфигурация MySQL для этой цели описана в «Средства анализа и управления» .
Для того чтобы Snort для Windows демонстрировал ту же производительность, что и UNIX-версия, понадобится более мощная аппаратура,. Машина с процессором 700 МГц — это минимум, но лучше использовать процессор с частотой 1 ГГц и выше. Необходимо также убедиться, что сервер Windows хорошо защищен, на нем выполняется минимум сервисов и удалены программы, активно использующие процессор, такие как IIS. Воспользуйтесь окном Services из Administrative tools Панели управления, чтобы проверить, не запускается ли что-нибудь лишнее.
Установка Snort для Windows
Чтобы установить Snort для Windows, возьмите бинарный файл с прилагаемого к книге компакт-диска или с сайта http://www.snort.org. Сделайте на нем двойной щелчок мышью, и он автоматически установится. Вас спросят, нужна ли вам определенная база данных или дополнительные модули, такие как модуль гибкого реагирования.
Настройка Snort для Windows
Процесс настройки версии Snort для Windows весьма схож с настройкой для UNIX. Все файлы конфигурации и правил находятся в тех же относительных подкаталогах. Войдите в файл snort.conf в подкаталоге etc установки Snort. Измените и отредактируйте его, как предложено в разделе о UNIX-версии. Затем перейдите в файлы правил и произведите изменения там. После этого все будет готово к запуску Snort. Обратитесь к разделу «Запуск Snort» для UNIX, чтобы получить дополнительную информацию о применении Snort для Windows, так как все команды такие же. Дополнительные настройки и рекомендации по размещению — те же, что и для исходной UNIX-версии.
Уголок кодировщиков Флэми Теха
Написание индивидуальных правил Snort
Хотя стандартные наборы правил, с которыми поставляется Snort, обеспечивают достаточную защиту от атак с известными сигнатурами, можно создавать некоторые индивидуальные правила, специфичные для вашей сети, чтобы получить от системы обнаружения вторжений максимальную отдачу. Вы можете написать правила для:
- отслеживания входящего и исходящего доступа для определенных серверов;
- поиска определенных типов или имен файлов, специфичных для вашей организации;
- наблюдения за определенными типами трафика, чужеродными для вашей сети;
Научиться писать правила для Snort несложно; это позволит быстро наращивать функциональность программы даже при отсутствии обширных программистских знаний. Как вы видели, все правила Snort являются просто текстовыми инструкциями в одном из файлов правил.
Если нужно, чтобы Snort обнаруживал некое особое поведение, которое в вашей сети будет считаться подозрительным, можно быстро закодировать правило и тут же протестировать это поведение. Правила Snort по сути представляют собой одиночные текстовые строки, начинающиеся с действия (как правило, alert), за которым следует несколько аргументов. В новейшей версии (2.0 и выше) можно добавить несколько строк, просто помещая \ (обратную косую черту) в конце каждой строки, кроме последней. В более сложных случаях можно также вызывать другие программы, используя инструкцию включения. Но в своей базовой форме правило Snort имеет две части: заголовок и параметры. Ниже представлен пример правила.
Заголовок является частью перед первой скобкой. Данная инструкция содержит действие (в нашем случае — alert), протокол, а также адреса и порты отправителя и получателя. Действие будет выполняться, если заданное правилом условие истинно. В данном случае будет порождаться сигнал тревоги (alert). Другими вариантами действий служат Log, Pass , Activate и Dynamic.
Log | Просто протоколирует пакеты |
Pass | Игнорирует пакет. Это подразумеваемое действие для пакетов, не соответствующих правилу. |
Activate | Сигнал тревоги, затем активация динамического правила. |
Dynamic | Остается пассивным, пока не активируется динамическим правилом, затем действует как log. |
Протоколами могут быть tcp, udp , icmp или ip, что означает любой IP-протокол. (В будущем могут поддерживаться протоколы не на основе IP, такие как IPX ). Исходный и целевой порты самоочевидны. Исходный адрес идет первым и задается в стандартной нотации с косой чертой для IP-диапазона. Можно также перечислить несколько индивидуальных адресов и сетей, разделяя их запятой без пробелов и заключая в квадратные скобки, например: alert tcp any msg : «Test Alert»;)
Эта инструкция ориентирована на трафик, приходящий из любых адресов, направляющийся на машины с адресами 192.168.1.1, 192.168.1.5 и 192.168.1.10 в порт 80. При условии, что это ваши web-серверы, приведенное правило будет искать идущий туда трафик, который содержит указанные шестнадцатеричные данные в разделе содержимого.
Второй частью правила Snort служат опции, задающие дополнительные детали выявляемого трафика. Можно искать по набору полей в заголовке TCP/IP (см. описания в «Сетевые анализаторы» ) или по полезной нагрузке пакета. За каждой опцией должны следовать кавычки и разыскиваемое значение. Можно добавить несколько опций, разделяя их с помощью точки с запятой. Ниже приведены допустимые опции.
msg | Предоставляет текстовое описание сигнала тревоги |
logto | Записывает пакет в заданный пользователем файл вместо стандартного выходного файла |
ttl | Проверяет значение поля TTL в заголовке IP |
tos | Проверяет значение поля TOS в заголовке IP |
id | Сравнивает значение поля идентификатора фрагмента в заголовке IP с указанной величиной |
ipoption | Ищет поля опций IP с определенными кодами |
fragbits | Проверяет биты фрагментации в заголовке IP |
dsize | Сравнивает размер полезной нагрузки пакета с указанным значением |
flags | Проверяет флаги TCP на соответствие определенным значениям |
seq | Сравнивает поле порядкового номера TCP с определенным значением |
ack | Проверяет поле подтверждения TCP на соответствие определенному значению |
itype | Проверяет поле типа ICMP на соответствие определенному значению |
icode | Проверяет поле кода ICMP на соответствие определенному значению |
icmp_id | Проверяет поле ECHO ID ICMP на соответствие определенному значению. |
icmp_seq | Проверяет порядковый номер ECHO ICMP на соответствие определенному значению |
content | Ищет определенный шаблон в полезной нагрузке пакета |
content-list | Ищет определенный набор шаблонов в полезной нагрузке пакета |
offset | Модификатор для опции содержимого. Задает смещение для начала сопоставления с образцом |
depth | Модификатор для опции содержимого. Устанавливает максимальную глубину поиска при сопоставлении с образцом |
nocase | Сравнивает предыдущую цепочку содержимого без учета регистра символов |
session | Вывод информации прикладного уровня для данного сеанса |
rpc | Следит за сервисами RPC для выявления определенных вызовов приложений/процедур |
resp | Активный ответ. Закрывает соединение (например, разрывая его) |
react | Активный ответ. Отвечает запрограммированным поведением (например, блокированием определенных Web-сайтов) |
reference | Идентификаторы ссылок на внешние атаки |
sid | Идентификатор правила Snort |
rev | Номер версии правила |
classtype | Классификационный идентификатор правила |
priority | Идентификатор уровня серьезности правила |
uricontent | Сопоставление с образцом в части URI пакета |
tag | Дополнительные действия по протоколированию для правил |
ip_proto | Значение протокола в заголовке IP |
sameip | Определяет, не равны ли исходный и целевой IP-адреса |
stateless | Применимо независимо от состояния потока |
regex | Сопоставление с образцом с применением метасимволов |
byte_test | Числовое сравнение |
distance | Заставляет при относительном сопоставлении с образцом пропустить в пакете определенное число байт |
byte_test | Числовое сопоставление с образцом |
byte_jump | Числовое сопоставление с образцом и корректировка смещения |
Более подробную информацию о каждой из опций правил можно получить в оперативной справке. Ниже представлены несколько примеров применения этих опций для создания индивидуальных правил Snort
Пример 1 индивидуального правила
Предположим, имеется набор бухгалтерских серверов, доступ к которым может осуществляться только из внутренней сети . Можно написать правило Snort, реагирующее на трафик, идущий с любого не принадлежащего вашей сети IP-адреса и направленный на эти серверы. Пусть бухгалтерские серверы имеют IP-адреса 192.168.1.10, 192.168.1.11 и 192.168.1.12, а ваша внутренняя сеть — адреса 192.168.2.0/24. Тогда правило будет выглядеть примерно так:
Знак операции ! (восклицательный знак) обозначает логическое отрицание . Смысл правила в том, чтобы выдать сигнал тревоги при обнаружении TCP-трафика, идущего не из сети 192.168.1.0/24 и направленного на указанные серверы. Не задается никаких опций, кроме msg — метки, появляющейся в журналах сигналов. Дело в том, что нас интересует любой трафик на любой порт. Будет отмечено любое обращение к бухгалтерским серверам, исходящее из внешнего мира, так как предполагается, что любой внешний трафик к этим серверам должен считаться вредоносным.
Пример 2 индивидуального правила
Опираясь на сценарий из примера 1, предположим, что следует разрешить некоторый внешний доступ к бухгалтерским серверам, но, тем не менее, гарантировать, что никто не скопирует определенные файлы. Предположим, что имеется файл с именем payroll.xls, который содержит все данные о зарплате (совершенно секретный файл, как внутри, так и вне организации). Можно написать правило, которое проследит за любым трафиком, внутренним или внешним, направленным на эти серверы и содержащим имя секретного файла. Это можно сделать с помощью опции content, осуществляющей поиск в реальном содержимом пакетов. Правило будет выглядеть примерно так:
Отметим, что знак операции ! снова означает, что нас интересует трафик, направленный на бухгалтерские серверы из любого места, кроме этих серверов. Тем самым устраняется сигнализация о межсерверном трафике. Отметим также, что символ \ позволяет писать многострочные правила, а опция content — осуществлять поиск текста payroll.xls в пакетах. В результате серверные машины могут иметь доступ в Интернет, но если этот конкретный файл будет когда-либо выгружаться с них, вы будете об этом оповещены.
С помощью других опций можно писать правила для выявления трафика практически любого вида. Если ваши правила могут представлять интерес для других организаций, стоит послать их разработчикам Snort для вставки в официальный набор распространяемых правил. Если вы решите это сделать, постарайтесь использовать все средства документирования , такие как msg , sid , rev , classtype и priority . Также тщательно протестируйте свои правила, чтобы гарантировать, что они действительно охватывают все виды активности, которую вы пытаетесь поймать, и не дают ложных срабатываний.