Меню Рубрики

Установка и настройка snort debian

Snort: Часть 2. Установка Snort

В данной статье рассмотрим пример установки и первичной настройки Snort для ОС Debian. А также рассмотрим конфигурацию сетевого интерфейса, рекомендуой для Snort.

Установка и первичная настройка Snort для ОС Debian

Установка необходимых пререквизитов для Snort

В данной статье разберём подробно установку из исходных кодов и первичную настройку Snort в ОС Debian.

Для начала устанавливаем обновления для ОС:

  • apt-get update — обновление индекса пакетов
  • apt-get upgrade — обновление пакетов

Устанавливаем обязательные пререквизиты для Snort:

  • build-essential — предоставляет инструменты, необходимых для сборки пакетов Debian;
  • libpcap-dev — библиотека для захвата сетевого трафика, необходима для Snort;
  • libpcre3-dev — библиотека функций для поддержки регулярных выражений, необходима для Snort;
  • libdumbnet-dev — библиотека, ещё известная как libdnet-dev, предоставляющая упрощённый, портативный интерфейс для различных низкоуровневых (interface to several low-level networking routines);
  • zlib1g-dev — библиотека, реализующая метод сжатия deflate, необходима для Snort.

Устанавливаем необходимые для DAQ парсеры:

  • bison — генератор анализаторов синтаксиса (parser) выражений;
  • flex — инструмент для генерации программ, распознающих заданные образцы в тексте.

Устанавливаем дополнительные (рекомендуемые) программы:

Для сборки документации (не является обязательным) понадобиться установить следующие пакеты:

Для поддержки HTTP/2 траффика необходимо установить библиотеку Nghttp2: HTTP/2 C библиотека, которая реализует алгоритм сжатия заголовков HPAC.

Устанавливаем её из исходного кода:

Сборка DAQ и Snort из исходного кода

Создадим каталог snort_src, куда сохраним загружаемые архивы с программами: mkdir

/snort_src Snort использует библиотеку Data Acquisition library (DAQ), которую можно скачать с официального сайта Snort. Скачиваем архив с исходным кодом, создаём бинарный пакет с помощью checkinstall и устанавливаем его:

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

Далее устанавливаем Snort из исходного кода:

В случае каких-либо ошибок во время сборки необходимо их устранить прежде чем двигаться дальше.

И создаём символьную ссылку

Следует проверить, правильно ли установился Snort. Для этого достаточно запустить команду snort -V . Если вывод команды будет примерно следующий (номер версии может отличаться), то это будет означать, что Snort успешно установлен:

Также с помощью команды snort —daq-list можно посмотреть список доступным DAQ-модулей.

Устранение возможных ошибок

Во время выполнения команды checkinstall могут возникнуть ошибки вида:

ranlib: could not create temporary file whilst writing archive: No more archived files

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

Установкой и удалением программы при помощи make:

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

После чего вновь собираем и устанавливаем Snort:

Конфигурация сетевого интерфейса, рекомендуемая для Snort

Согласно рекомендациям из руководства Snort следует убедиться, что сетевая карта не обрезает слишком большие пакеты (в сетях Ethernet длина которых превышает 1518 байт). Для этого произведём оптимизацию сетевых интерфейсов с помощью утилиты ethtool. Если нужно, устанавливаем ethtool ( sudo apt-get -y install ethtool ) и для настройки параметров выполняет в терминале следующие команды:

  • ethtool -K eth0 rx off — освобождение ОС от расчёт контрольных суммы TCP/IP (rx-checksumming) для входящих пакетов;
  • ethtool -K eth0 tx off — освобождение ОС от расчёт контрольных суммы TCP/IP (tx-checksumming) для исходящих пакетов;
  • ethtool -K eth0 gso off — отключение функции (generic-segmentation-offload) фрагментации пакетов без участия CPU;
  • ethtool -K eth0 gro off — отключение функции (generic-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU;
  • ethtool -K eth0 lro off — отключение функции (large-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU.

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

Открываем файл /etc/network/interfaces ( sudo gedit /etc/network/interfaces ) с настройками конфигурации сети Ethernet и добавляем в конец файла следующие команды для сетевого интерфейса eth0, который Snort будет слушать:

Либо открываем файл /etc/rc.local ( sudo gedit /etc/rc.local ) с автозагрузками и добавляем следующие строчки до “exit 0”:

Текущие значения параметров можно посмотреть с помощью команды ethtool -k eth0 . Если параметр обозначен как [fixed], то это означает, что значение параметра нельзя изменить с помощью ethtool. Часто многие параметры обозначены [fixed], когда ОС запушена в виртуальной машине (например, VMWare или VirtualBox) и гостевая ОС не в состоянии изменить параметры хостовой ОС.

Конфигурация ниже не рабочая:

Установка Snort для для других ОС

На ОС Raspbian (Raspberry Pi 3) Snort устанавливается с помощью такой же последовательности команд.

источник

How to install Snort on Debian

Snort is a popular choice for running a network intrusion detection systems or NIDS for short. It monitors the package data sent and received through a specific network interface. NIDS can catch threats targeting your system vulnerabilities using signature-based detection and protocol analysis technologies. NIDS software, when installed and configured appropriately, can identify the latest attacks, malware infections, compromised systems, and network policy violations. In this guide, you will find instructions on how to install Snort on Debian 9. The install guide is also available for cloud servers running CentOS 7 and Ubuntu 16.

Snort is one of the most commonly used network-based IDS. It is a lightweight, open source, available on a multitude of platforms, and can be comfortably installed even on the smallest of cloud server instances. Although Snort is capable of much more than just network monitoring, this guide shows how to configure and run Snort in NIDS mode with a basic setup that you can later expand as needed.

Preparing your server

Setting up a basic configuration of Snort on Debian is fairly simple but takes a few steps to complete. You will first need to install all the prerequisite software to ready your cloud server for installing Snort itself. Install the required libraries with the following command.

Читайте также:  Установка дефлектора капота на camry

With the prerequisites fulfilled, next up is how to install Snort on Debian 9. Snort can be downloaded and installed manually from the source. Below you will find instructions on how to get this done.

Installing from the source

Setting up Snort on Debian from the source code consists of a couple of steps: downloading the code, configuring it, compiling the code, installing it to an appropriate directory, and lastly configuring the detection rules.

Start by making a temporary download folder to your home directory and then changing into it with the command below.

Snort itself uses something called Data Acquisition library (DAQ) to make abstract calls to packet capture libraries. Download the latest DAQ source package from the Snort website with the wget command underneath. Replace the version number in the command if a newer source available.

The download will only take a few seconds. When complete, extract the source code and jump into the new directory with the following commands.

Run the configuration script using its default values, then compile the program with make and finally install DAQ.

With the DAQ installed you can get started with Snort, change back to the download folder.

Next, download the Snort source code with wget. You can find the latest version number on the Snort website and replace it in the following command if necessary.

Once the download is complete, extract the source and change into the new directory with these commands.

Then configure the installation with sourcefire enabled, run make and make install.

With that done, continue below on how to set up the configuration files.

Configuring Snort to run in NIDS mode

Next, you will need to configure Snort for your system. This includes editing some configuration files, downloading the rules that Snort will follow, and taking Snort for a test run.

Start with updating the shared libraries using the command underneath.

Snort on Debian gets installed to /usr/local/bin/snort directory, it is good practice to create a symbolic link to /usr/sbin/snort.

Setting up username and folder structure

To run Snort on Debian safely without root access, you should create a new unprivileged user and a new user group for the daemon to run under.

Then create the folder structure to house the Snort configuration, just copy over the commands below.

Set the permissions for the new directories accordingly.

Create new files for the white and blacklists as well as the local rules.

Then copy the configuration files from the download folder.

Next up, you will need to download the detection rules Snort will follow to identify potential threats. Snort provides three tiers of rule sets, community, registered and subscriber rules.

  • Community rules are freely available though slightly limited.
  • By registering for free on their website you get access to your Oink code, which lets you download the registered users rule sets.
  • Lastly, subscriber rules are just that, available to users with an active subscription to Snort services.

Underneath you can find instructions for downloading both community rules or registered user rule sets.

Option 1. Using community rules

If you just want to quickly test out Snort, grab the community rules using wget with the command below.

Extract the rules and copy them to your configuration folder.

By default, Snort on Debian expects to find a number of different rule files which are not included in the community rules. You can easily comment out the unnecessary lines using the sed command underneath.

Option 2. Obtaining registered user rules

You can also take a moment and register on the Snort website. Registering gives you access to use their Oink code to download the registered user rules. You can find the code in the Snort user account details.

Replace the oinkcode in the following command with your personal code.

Once downloaded, extract the rules over to your configuration directory.

The rule sets for the registered users include an extensive amount of useful preconfigured detection rules. If you tried out Snort with the community rules first, you can enable additional rules by uncommenting their inclusions towards the end of the snort.conf file.

Configuring the network and rule sets

With the configuration and rule files in place, edit the snort.conf to modify a few parameters. Open the configuration file in your favourite text editor, for example using nano with the command below.

Find these sections shown below in the configuration file and change the parameters to reflect the examples here.

In the same snort.conf file, scroll down to the section 6 and set the output for unified2 to log under filename of snort.log like below.

Lastly, scroll down towards the bottom of the file to find the list of included rule sets. You will need to uncomment the local.rules to allow Snort to load any custom rules.

If you are using the community rules, add the line underneath to your ruleset as well, for example just below your local.rules line.

Читайте также:  Установка передних пружин классика

Once you are done with the configuration file, save the changes and exit the editor.

Validating settings

Your Snort should now be ready to run. Test the configuration using the parameter -T to enable test mode.

After running the Snort configuration test, you should get a message like this example below.

In case you get an error, the print out should tell you what the problem was and where to fix it. Most likely problems are missing files or folders, which you can usually resolve by either adding any you might have missed in the setup above, or by commenting out unnecessary inclusion lines in the snort.conf file. Check the configuration part and try again.

Testing the configuration

To test if Snort is logging alerts as intended, add a custom detection rule alert on incoming ICMP connections to the local.rules file. Open your local rules in a text editor.

Then add the following line to the file.

The rule consists of the following parts:

  • action for traffic matching the rule, alert in this case
  • traffic protocol like TCP, UDP or ICMP like here
  • the source address and port, simply marked as any to include all addresses and ports
  • the destination address and port, $HOME_NET as declared in the configuration and any for port
  • some additional bits
    • log message
    • unique rule identifier (sid) which for local rules needs to be 1000001 or higher
    • rule version number.

Save the local.rules and exit the editor.

Start Snort with -A console options to print the alerts to stdout. You will need to select the correct network interface with the public IP address of your server, for example, eth0.

If you are not sure which interface to use, check your UpCloud control panel for the public IPv4 address of your server in the Network settings. You can also use the following command on your server.

The output will list all of your currently configured network interfaces. Find the one with the same public IP address as shown in the Network settings, commonly eth0.

With Snort up and running, ping your cloud server from any other computer. You should see a notice for each ICMP call in the terminal running Snort.

After the alerts show up you can stop Snort with ctrl+C.

Snort records the alerts to a log under /var/log/snort/snort.log. timestamp , where the time stamp is the point in time when Snort was started marked in Unix time. You can read the logs with the command underneath. Since you have only run Snort once, there is only one log, complete your command by pressing TAB.

The log shows a warning for each ICMP call with source and destination IPs, time and date, plus some additional info as shown in the example below.

Running Snort in the background

To run Snort on Debian as a service in the background you will need to add a startup script for Snort. Open a new a file in a text editor for example with the next command.

Enter the following to the file, save and exit the editor.

With the service defined, reload the systemctl daemon.

Snort can then be run with the configuration you set up using the command below.

The startup script also includes other usual systemctl commands: stop, restart, and status. For example, you can check the status of the service with the following command.

Conclusions

Congratulations, you should have now successfully configured and tested a network-based intrusion detection system. This guide however only covers the very basics with an introduction to Snort and NIDS in general. To get more out of your installation, check out the deployment guides over at the Snort documents page, or jump right into writing your own detection rules with their helpful Snort rules info graph.

источник

Установка и настройка snort debian

В статье будет рассмотрен пример реализации системы IDS на базе OS Debian и Snort для мониторинга внутреннего сетевого периметра, включающей подсистемы:
— сервис обнаружения вторжений Snort;
— сервер БД MySQL для хранения записей событий атак, полученный от Snort;
— интерфейс анализа, обработки и визуализации событий Snort (nginx, php5-fpm, BASE).

Установка и первичная настройка

Оптимизация сетевых интерфейсов

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

# apt-get install ethtool
# nano /etc/rc.local

где «—offload eth1 rx off tx off» — отключение определения checksum для входящих и исходящих пакетов; а «gso (generic segmentation offload) off» и «gro (generic receive offload) off» — отключение функции передачи и приема пакета без участия ЦП.

Подготовка БД

Вся информация об атаках, зафиксированных Snort, будет храниться в БД MySQL. Произведем ее первичную настройку:

# mysql -u’root’ -h’MYSQL_SERVER_IP’ -p’ROOT_PASSWORD’

Установка Snort

После первичной настройки БД приступим к установке Snort с поддержкой MySQL:

# apt-get install snort-mysql

В процессе установки необходимо указать режим запуска Snort (по-умолчанию «boot»), а также интерфейсы и сетевые адреса внутренней сети. В случае необходимости можно указать несколько интерфейсов или адресов через пробел. Например:

Активируем режим «promiscuous mode», позволяя Snort просматривать содержимое пакетов, проходящих через интерфейсы, а также указываем параметры подключения к БД.

Читайте также:  Установка видеорегистратора volvo s80

Создадим структуру БД Snort:

# cd /usr/share/doc/snort-mysql
# zcat create_mysql.gz | mysql -u’snort’ -h’MYSQL_SERVER_IP’ -p’SNORT_USER_PASSWORD’ snort

В завершении работ удалим файл:

и приступим к настройке веб-интерфейса.

Настройка веб-сервера

Используем связку nginx и php5-fpm в качестве веб-окружения. Для построения графиков также потребуется компонет php5-gd.

# apt-get install nginx-light php5-fpm libphp-adodb php5-gd php-pear
# pear install —alldeps Image_Canvas channel://pear.php.net/Image_Canvas-0.3.5
# pear install —alldeps Image_Graph channel://pear.php.net/Image_Graph-0.8.0

Установим в настройках php5-fpm TIMEZONE:

Произведем настройку vhost:

# cd /etc/nginx/sites-enabled
# mv default snort
# nano snort

Визуализация атак с использование BASE

Для визуализации детектированных атак установим BASE (Basic Analysis and Security Engine):

# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz -qO- | tar xvzpf — -C /var/www/ && mv /var/www/base-1.4.5 /var/www/snort-base
# chmod -R 0770 /var/www/snort-base && chown -hR www-data:www-data /var/www/snort-base

# /etc/init.d/php5-fpm restart
# /etc/init.d/nginx restart

Подключимся к BASE и произведем первичную инициализацию:

    Path to adodb: /usr/share/php/adodb;
    Укажем параметры подключения к БД Snort;
    Установим пользователя для авторизации в BASE;
    Процесс настройки BASE завершается созданием таблицы BASE AG — «Create BASE AG» и переходом по ссылке ‘step 5’.

Теперь зафиксированные Snort’ом атаки будут сохраняться в БД и доступны через веб-интерфейс BASE.

На этом процесс установки и первичной настройки системы можно считать завершенным.

Расширенная настройка Snort

Начну с цитаты: «Основная проблема информационной безопасности, как правило, связана не с наличием систем обеспечения ИБ, а с обработкой и анализом результатов их работы». Попробуем разобраться с тем, как и по каким критериям Snort генерирует события и оптимизировать их вывод и обработку, исключив все лишнее.

Конфигурационные файлы Snort расположены в каталоге /etc/snort. Информация об интерфейсах, которые «слушает» Snort, а также данные о сетевой адресации, указанные при устаноквки утилиты, хранятся в файле snort.debian.conf. Данные для подключения в БД — в файле database.conf. Информация о правилах Snort — в файле snort.conf. Рассмотрим его подробнее.

snort.conf

Конфигурационный файл состоит из секций:

    1) Set the network variables
    2) Configure the decoder
    3) Configure the base detection engine
    4) Configure dynamic loaded libraries
    5) Configure preprocessors
    6) Configure output plugins
    7) Customize your rule set
    8) Customize preprocessor and decoder rule set
    9) Customize shared object rule set

Рассмотрим основные секции.

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

Кроме этого, в секции указаны пути расположения каталога правил Snort, а также White- и Black- листов. К этому мы вернемся чуть позже.

2. Декодеры
Одним из первых процессов, которые выполняет Snort над пакетом — обработка декодерами, задачей которых является определение базового протокола в пакете (ETHERNET, IP, TCP и т.д.), однако содержимое пакета не обрабатывается, а передается для последующей обработки preprocessor’ам и detection engines.

Пример. Исключим из декодера пакеты с неверными IP-опциями:

и пакеты, адресованные DNS-серверу:

3. Настройка detection engine
В работе detection engine может быть использована PCRE — Perl-совметсимая библиотека поиска по шаблону. В данном разделе можно оптимизировать параметры поиска, а также его метода.

5. Настройка preprocessors
Надо было это сообщить еще в самом начале, но сообщу сейчас — Snort может работать в 2-х режимах — inline (IPS) и promiscuous mode (IDS). В первом случае Snort может управлять проходящими через него пакетами (изменять, блокировать), во втором — только мониторить и алертовать в случае подозрительной активности. В настройках препроцессора некоторые опции работают только в режиме inline, например опция preprocessor normalize_ip4 нормализует (если можно так выразиться) пакеты — исправляет TTL, TOS и т.д. Поскольку в контексте данной статьи речь идет про IDS — то мы опустим такие опции.

Препроцессинц работает непосредственно с содержимым пакета, используя наборы правил, такие как http_inspect_server, в котором определен http-метод, порты, необходимость анализа cookie, допустимые спец.символы и прочее, также доступны профили для веб-серверов.

6. Настройка вывода
Snort имеет достаточно гибгий функционал вывода в формате syslog, unified2, prelude, tcpdump и т.д.
По умолчанию данные пишутся в формате tcpdump (pcap) в файл tcpdump.log. Закоментируем строку:

Не лишним будет настроить построчное логирование алертов в файл с использованием alert_fast:

Но, поскольку у нас настроено логирование в MySQL, эта секция для нас не очень актуальна.

7. Подключение\отключение правил Snort
В данной секции производится подключение и отключение правил Snort. В качестве директории размещения правил используется переменная $RULE_PATH, определенная в первой секции. Итак, мы рассмотрели конфиг, давайте попробуем разобраться с правилами.

Snort rules

Как мы поняли, правила располагаются в каталоге /etc/snort/rules. Рассмотрим на примере алерта рассылки мультикастовых запросов:

Раскрыв запись алерта, определим sid правила, сгенерировавшего алерт.

В данном случае sid равен 527. Произведем поиск правила:

# grep ‘sid:527’ -R /etc/snort/rules/

    ip — протокол;
    первые «any any» — SRCIP и SRCPort, вторые — DSTIP и DSTPort соответственно;
    «->» — указывает направление пакета, также можно использовать » «;
    msg:»BAD-TRAFFIC same SRC/DST» — сообщение, геренируемое при срабатываении алерта;
    параметр sameip сообщает о том, что правило должно срабатывать в случае, если SRCIP и DSTIP идентичны;
    далее идут ссылки на внешние источники идетификации атаки;
    параметр classtype определяет классификацию атаки;
    sid — уникальный идетификатор правила;
    параметр rev указывает ревизию данного правила.

Для того, чтобы исключить из правила хост, достаточно добавить ![HOST]. Исключим мультикаст адрес из правила:

Рассмотрим еще один пример — попытку получить доступ к директории backup на web-сервере:

Правило имеет следующий вид:

Добавим в исключение хосты администраторов:

источник

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