Использование 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