Snort (Система Предотвращения Вторжений)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:15, 24 июня 2016.
Snort
fraimed
Разработчики: Sourcefire, Cisco
Написана на: C
Операционная система: UNIX-like, Windows
Тип ПО: IPS, IPS
Веб-сайт snort.org

Snort является свободно распространяемой программой с открытым исходным кодом под лицензией GPL. Изначально Snort был создан одним из известнейших людей в мире информационной безопасности, автором многих: книг Мартином Рошем в 1998 году. Основной причиной создания этой IDS было отсутствие на тот момент достаточно эффективного, тем более бесплатного, инструмента оповещения об атаках.

Snort является самой распространенной IDS(а со временем и IPS) в мире, во многом благодаря ее открытости и работе авторов.

Возможности

Данная IPS выявляет следующее:

  • Плохой трафик
  • Использование эксплоитов (выявление Shellcode)
  • Сканирование системы (порты, ОС, пользователи и т.д.)
  • Атаки на такие службы как Telnet, FTP, DNS, и т.д.
  • Атаки DoS/DDoS
  • Атаки связанные с Web серверами (cgi, php, frontpage, iss и т.д.)
  • Атаки на базы данных SQL, Oracle и т.д.
  • Атаки по протоколам SNMP, NetBios, ICMP
  • Атаки на SMTP, IMAP, pop2, pop3
  • Различные Backdoors
  • Web-фильтры (порнография)
  • Вирусы

Помимо всего прочего Snort имеет:

  • Возможность написания собственных правил
  • Расширение функциональности, используя возможность подключения модулей
  • Гибкую систему оповещения об атаках (Log файлы, устройства вывода, БД и.д.)

Snort поддерживает следующие интерфейсы для прослушивания:

  • Ethernet
  • SLIP
  • PPP

IPS Snort может работать на многих операционных системах: Linux, Windows, IRIX, SunOS, *BSD и др. Также сушествует отличное расширение функциональности для Snort под названием inline, которое позволяет связать firewall с действиями правил. К примеру, можно передать firewall'у IP адрес того хоста, с которого пришел подозрительный пакет и дать команду игнорировать весь трафик с этого IP. Часто это применяется при DDoS атаках. В свою очередь Snort получает пакеты не от библиотеки libpcap, а от iptables. Но существует и обратная сторона. Рассмотрим ситуацию, когда злоумышленник поймет, как происходит блокирование и сможет воспользоваться этим, подделывая пакеты и присылая их с важных серверов, вызывая тем самым состояние DDoS. Поэтому специалисты по безопасности крайне не рекомендуют реализовывать данную возможность или же использовать ее только в исключительных случаях.

Установка Snort

Где скачать

Последнюю версию Snort всегда можно найти на сайте разработчиков: http://www.snort.org

Куда лучше установить Snort

  • Где в сети должен находиться Snort? Конечно, если в сети есть выход в Internet, то можно установить IPS до или после межсетевого экрана. Если Snort будет запщуен до брандмэуера, то можно будет получать все предупреждения о попытках взлома и принять соответствующие меры, если после, то, так как фаервол может отбрасывать интересные пакеты, то будет меньше возможностей для анализа интересного трафика.
  • Многие специалисты по сетевой безопасности советуют устанавливать Snort сразу на двух машинах до и после - это обеспечит максимальную надежность получения нужной информации. Также эффективно можно использовать систему обнаружения вторжений с помощью маршрутизаторов, поддерживающих зеркалирование трафика. К примеру, настраиванием IPS на машине и зеркалированием всего трафика с маршрутизатора на машину с IPS. Для менее крупных сетей можно использовать концентратор для того, чтобы прослушивать весь трафик.

Конфигурация установочной программы

Будет рассмотрена установка Snort версии 2.4.3 на Linux

  • Выполняем:
 $ ./configure && make && make install
  • Важно заметить, что у configure существует множество довольно интересных

опций. Ниже приведены некоторые из них:

  • Инсталляционные директории:
   --prefix=PREFIX         префикс к архитектурно-независимым файлам [/usr/local]
   --exec-prefix=EPREFIX   префикс к  архитектурно-зависимым файлам [PREFIX]
  • Опции для указания инсталляционных директорий
 --bindir=DIR         пользовательское исполнение (PREFIX/bin)
 --sbindir=DIR        исполнение системного администратора (PREFIX/sbin)
 --libexecdir=DIR     выполнение программ (PREFIX/lib)
 --datadir=DIR        только для чтения архитектурно-независимый каталог
                                                           (PREFIX/share)
 --sysconfig=DIR      только для чтения конфигурационный каталог
                                                             (PREFIX/etc)
 --sharedstatedir=DIR изменяемый архитектурно-независимый каталог
                                                             (PREFIX/com)
 --localstatedir=DIR  изменяемый конфигурационный каталог (PREFIX/var)
 --includedir=DIR     заголовочные файлы C (PREFIX/include)
 --oldincludedir=DIR  заголовочные файлы не C (/usr/include)
 --infodir=DIR        документация (PREFIX/info)
 --mandir=DIR         документация man (PREFIX/man)
  • Опции пакета
 --with-PACKAGE[=ARG] использовать PACKAGE [ARG=yes]
 --without-PACKAGE    не использовать PACKAGE
                                                   (аналогично --with-PACKAGE=no)
 --with-libpcap-includes=DIR   директория с вложенными файлами для
                                 библиотеки libpcap
 --with-libpcap-libraries=DIR  каталог с библиотекой libpcap
 --with-libpcre-includes=DIR   каталог с вложенными фалами для библиотеки
                                 libpcre
 --with-libpcre-libraries=DIR  каталог с библиотекой libpcre
 --with-libnet-includes=DIR    директория с вложенными файлами для
                               библиотеки libnet
 --with-libnet-libraries=DIR   каталог с библиотекой libnet
 --with-mysql=DIR              поддержка mysql
 --with-odbc=DIR               поддержка odbc
 --with-postgresql=DIR         поддержка postgresql
 --with-pgsql-includes=DIR     директория с вложенными файлами postgresql
 --with-oracle=DIR             поддержка oracle
 --with-libprelude-prefix=PFX  префикс, куда установлена библиотека
                                 libprelude
 --with-libipq-includes=DIR    каталог с вложенными файлами для  библиотеки
                                 libipq
 --with-libipq-libraries=DIR   каталог с библиотекой libipq
 --enable-perfmonitor          включить препроцессор perfmonitor
 --enable-inline               использовать интерфейс libipq для snort inline
 --enable-ipfw                 использовать ipfw для snort inline
 --enable-debug                это только для разработчиков, опция для отладки
  • После завершения установки нужно убедиться, что удовлетворены все зависимости удолетворены и Snort находится в рабочем состоянии (запускаем в режиме sniffer):
 $ snort -dev
  • Запустим любое сетевое приложение и проверим, выводит ли Snort данные о пакетах. Запуск должен осуществляться с правами суперпользователя, так как основа Snort построена на использования библиотеки libpcap. Libpcap и осуществляет прослушивание всего трафика. Библиотека позволяет видеть Snort пакеты до того, как они будут восприняты остальными приложениями, а на этом уровне требуются права суперпользователя. Последнюю версию библиотеки можно найти на : http://www.tcpdump.org. Для Snort под windows потребуется аналог библиотеки libpcap под названием winpcap.

Настройка snort.conf

  • Далее следует настроить файл : "snort.conf". Пример этого файла можно найти в

каталоге "etc/", который в свою очередь находится в разархивированной директории вместе со Snort. Фаил опций можно разбить на 5 основных частей:

 1) Установка значений для вашей сети
 2) Конфигурация препроцессоров
 3) Конфигурация плагинов
 4) Добавление директив
 5) Используемые правила

Его опции подробно описаны на официальном сайте.

Опции запуска

После завершения конфигурации рассмотрим опции для запуска. (Примечание: опции в командной строке имеют более высокий приоритет, чем snort.conf)

 -A         Может принимать значения: fast, full, console или none. Fast
              предназна для быстрого генерирования алертов. Этот параметр
              рекомендуют использовать не только разработчики, но и
              специалисты в информационной безопасности. Full - самый
              медленный способ, используется при необходимости.
 -b         Журналировать пакеты в формате tcpdump. (Это наиболее быстрый и
              производительный вариант)
 -c         После этого параметра указывается имя с конфигурационным файлом.
 -C         Убирать из дампа пакета HEX значения.
 -d         Журналировать дамп (содержимое) пакетов.
 -D         Запуск Snort в режиме демона.
 -e         Журналировать информацию о заголовке пакета.
 -f         Отключает вызовы fflush() после записи бинарных логов.
 -F         Читать bpf фильтры из файла .
 -g         Запустить IPS с правами группы .
 -G <0xid>  Идентификатор логов. Используется, если на машине работают
              несколько программ Snort.
 -h         Домашняя сеть = .
 -i         Прослушивать интерфейс с именем .
 -I         Добавить имя интерфейса в созданный алерт.
 -k         Режим контрольной суммы. Может принимать значения:
              (all,noip,notcp,noudp,noicmp,none).
 -K         Режим логирования. Значения: pcap, ascii, none. По умолчанию
              устанавливается значение pcap.
 -l         Писать логи в каталог .
 -L         Писать логи в tcpdump файл с именем .
 -m         Устанавливает маску .
 -n         Выход после получения  пакета.
 -N         Отключает логирование (но алерты работают).
 -o         Выбрать правило для тестирования в Log|Alert|Pass
 -O         Скрывать IP адреса.
 -p         Отключение promisc режима.
 -q         Не показывать баннер Snort.
 -r         Записывать журнал в декодированной форме, то есть в более
              читабильном виде в отличие от бинарных логов tcpdump.
 -R         Вставить 'id' в имя файла snort_intf.pid
 -s         Журналировать в syslogd. Для работы данного ключа необходимо
              записать в файл syslog.conf:
              "auth.alert@managmentserverIP"
 -S         Устанавливает значение файла с правилами n равному v.
 -T         Протестировать и сообщить о текущей конфигурации Snort.
 -u         Запустить IPS с правами пользователя .
 -U         Использовать UTC.
 -v         Подробный режим.
 -V         Показать версию Snort.
 -w         Делать дамп 802.11 контрольных фреймов.
 -X         Делать дамп содержимого пакета.
 -y         Помещать год в дату логов и алертов.
 -Z         Использовать путь к файлу и имя из препроцессора
              performonitor (статистика).
 -z         Использовать гарантийный режим, используется для установленных
              (established) соединений. С помощью этой опции можно распознать
              генераторы шумов и успешно их блокировать, используя
              препроцессор stream4.
 -h         Экран с помощью.

Пример использования

  • Игнорировать все пакеты от 127.0.0.1.
 $ snort <опции_командной_строки> not host 127.0.0.1
  • Игнорировать весь ICMP трафик (ICMP ECHO-REQUESTS, ICMP-ECHO REPLY)

от машины :

 $ snort <опции_командной_строки> ``not ( (icmp[0] = 8 or icmp[0] = 0) and host )``

Ссылки

1.opennet.ru/
2.snort.org/