Использование Snort

Базовая настройка Snort

Для использования Snort необходимо установить пакеты snort и snort-extra. Пакет snort-extra содержит модуль для настройки SELinux, базовый набор правил для анализа трафика и скрипт, упрощающий первоначальную настройку snort.

В качестве примера настройки будет использован один из хостов, входящий в состав среды виртуализации ROSA Virtualization. В первую очередь для установки необходимых пакетов требуется включить репозиторий DVD и примонтировать диск в директорию /mnt:

dnf config-manager --set-enabled DVD
mount -t iso9660 -o ro /dev/sr0 /mnt

Установить пакеты snort и snort-extra:

dnf install snort snort-extra

Файл /etc/sysconfig/snort содержит параметры запуска snort, а /etc/snort/snort.conf является основным конфигурационным файлом. Перед запуском snort требуется самостоятельно выполнить необходимые настройки либо воспользоваться утилитой install-snort-extra, которая запускается без каких-либо параметров и настраивает SELinux, копирует в директорию /etc/snort базовые правила для анализа трафика и устанавливает основной конфигурационный файл /etc/snort/snort.conf. Далее в файле /etc/snort/snort.conf потребуется указать адрес сетевого интерфейса или же адрес внутренней сети и все остальные адреса, которые будут считаться внешними (рисунок 13).

Рисунок 13 ‒ Редактирование файла /etc/snort/snort.conf

ipvar HOME_NET 192.168.1.162/32
ipvar EXTERNAL_NET !$HOME_NET

В файле /etc/sysconfig/snort в качестве сетевого интерфейса прописать ovirtmgmt (рисунок 14):

Рисунок 14 ‒ Редактирование файла /etc/sysconfig/snort

INTERFACE=ovirtmgmt

После всех предварительных настроек необходимо выполнить проверку корректности конфигурации snort, и в случае успеха вывод команды будет заканчиваться сообщением "Snort successfully validated the configuration!":

snort -T -c /etc/snort/snort.conf
.
--== Initialization Complete ==--
,,_     -*> Snort! <*-
o"  )~   Version 2.9.19 GRE (Build 85)
''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.9.1 (with TPACKET_V3)
Using PCRE version: 8.44 2020-02-12
Using ZLIB version: 1.2.11
Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 3.2  <Build 1>
Preprocessor Object: SF_SDF  Version 1.1  <Build 1>
Preprocessor Object: SF_IMAP  Version 1.0  <Build 1>
Preprocessor Object: SF_SSH  Version 1.1  <Build 3>
Preprocessor Object: SF_FTPTELNET  Version 1.2  <Build 13>
Preprocessor Object: SF_S7COMMPLUS  Version 1.0  <Build 1>
Preprocessor Object: SF_POP  Version 1.0  <Build 1>
Preprocessor Object: SF_MODBUS  Version 1.1  <Build 1>
Preprocessor Object: SF_DNS  Version 1.1  <Build 4>
Preprocessor Object: SF_SMTP  Version 1.1  <Build 9>
Preprocessor Object: SF_GTP  Version 1.1  <Build 1>
Preprocessor Object: SF_SIP  Version 1.1  <Build 1>
Preprocessor Object: SF_DNP3  Version 1.1  <Build 1>
Preprocessor Object: SF_REPUTATION  Version 1.1  <Build 1>
Preprocessor Object: SF_DCERPC2  Version 1.0  <Build 3>
Preprocessor Object: SF_SSLPP  Version 1.1  <Build 4>
Total snort Fixed Memory Cost - MaxRss:856252
Snort successfully validated the configuration!
Snort exiting

Запустите snortd и проверьте его статус:

systemctl restart snortd.service
systemctl status snortd.service

На рисунке 15 показан результат успешного запуска системы Snort.

Рисунок 15 ‒ Успешный запуск системы snort

Пример применения Snort для анализа трафика SSH

Для тестового примера обнаружения вторжения можно воспользоваться правилом анализа SSH-трафика, отслеживающего попытки подбора пароля:

alert tcp any any -> $HOME_NET 22 (msg:"SSH brute force login attempt"; flow: to_server, established; content:"SSH"; nocase; offset: 0; depth: 4; detection_filter: track by_src, count 5, seconds 60; classtype: misc-attack; sid:10000001; rev: 1;)

Эту строку необходимо добавить в файл /etc/snort/rules/local.rules и перезапустить snortd:

systemctl restart snortd.service

При обнаружении попытки подбора пароля к SSH-серверу в файле /var/log/snort/alert будут регистрироваться соответствующие предупреждения:

10/03-14:16:15.411268  [**] [1:10000001:1] SSH brute force login attempt [**] [Classification: Misc Attack] [Priority: 2] {TCP} 192.168.1.32:52826 -> 192.168.1.192:22
10/03-14:16:15.432371  [**] [1:10000001:1] SSH brute force login attempt [**] [Classification: Misc Attack] [Priority: 2] {TCP} 192.168.1.32:52827 -> 192.168.1.192:22
10/03-14:16:15.435580  [**] [1:10000001:1] SSH brute force login attempt [**] [Classification: Misc Attack] [Priority: 2] {TCP} 192.168.1.32:52828 -> 192.168.1.192:22
10/03-14:16:15.456817  [**] [1:10000001:1] SSH brute force login attempt [**] [Classification: Misc Attack] [Priority: 2] {TCP} 192.168.1.32:52833 -> 192.168.1.192:22
10/03-14:16:15.455757  [**] [1:10000001:1] SSH brute force login attempt [**] [Classification: Misc Attack] [Priority: 2] {TCP} 192.168.1.32:52831 -> 192.168.1.192:22

Уведомления Snort

Для рассылки уведомлений по электронной почте требуется установить пакеты swatch и swatch-systemd. Пакет swatch-systemd позволяет запускать swatch в качестве сервиса. Для установки соответствующих пакетов необходимо выполнить команду:

dnf install swatch swatch-systemd

В файле /etc/snort/snort.conf замените строку:

"# output alert_syslog: LOG_AUTH LOG_ALERT# output alert_syslog: LOG_AUTH LOG_ALERT

на строку (рисунок 15):

output alert_syslog: LOG_LOCAL2 LOG_ALERT".

Рисунок 16 ‒ Редактирование файла /etc/snort/snort.conf

В файле /etc/sysconfig/snort закомментируйте строку "ALERTMODE=fast" (рисунок 17).

Рисунок 17 ‒ Редактирование файла /etc/sysconfig/snort

В файл /etc/rsyslog.conf добавьте строки (рисунок 18):

Save snort alert also to /var/log/snort/alert.log
local2.alert               /var/log/snort/alert.log

Рисунок 18 ‒ Редактирование файла /etc/rsyslog.conf

Перезапустите сервисы rsyslog и snortd:

systemctl restart rsyslog.service snortd.service

После проделанных изменений регистрация событий snort будет выполняться в файл /var/log/messages и дублироваться в файл /var/log/snort/alert.log. Количество однотипных событий, регистрируемых в единицу времени, настраивается в файле /etc/snort/threshold.conf.

Конфигурационный файл /etc/sysconfig/swatch содержит параметры запуска для сервиса swatch, в том числе лог-файл, за которым ведётся мониторинг:

SWATCH_ARGS="--tail-file=/var/log/snort/alert.log"

Файл /etc/swatch.conf содержит правила для рассылки уведомлений по электронной почте:

watchfor /Priority\: (1|2)/
mail root@localhost,subject="[SNORT] Priority $1 Alert!"

Включите и запустите сервис swatch:

systemctl enable --now swatch.service

С вышеописанной конфигурацией все события, попавшие в файл /var/log/snort/alert.log и имеющие приоритет 1 или 2, будут отправлены по адресу root@localhost. Для проверки работоспособности данного примера требуется запустить сервис postfix на настраиваемом хосте:

systemctl start postfix.service