Описание
Suricata — программный комплекс для сбора, мониторинга и аудита сетевой безопасности. Эта утилита «построена» вокруг группы правил, как предопределенных, так и созданных пользователем. В соответствии с этими правилами, весь поступающий трафик анализируется и (возможно) обрабатывается перед отправкой дальше на "клиентское" устройство.
В Suricata есть несколько готовых предопределенных правил, в соответствии с которыми система работает в «пассивном режиме», она просто информирует администратора без каких-либо изменений в проходящем трафике. Этот комплекс можно запустить на "шлюзовом" устройстве для «пропуска» всего офисного трафика или на каждом из клиентских компьютеров отдельно.
Перед началом работы
Требования к оборудованию зависят от топологии локальной сети и конкретных потребностей. В общем, считается верным правило "большее количество проверяемого трафика и обрабатываемых правил требует большего количества системных ресурсов". Необходимый минимум - 2 ядра процессора и 4 или 8 гигабайт оперативной памяти.
Подытоживая, требования такие:
Ubuntu 20.04, на сервере с не менее чем 4 ГБ ОЗУ и 2 ядрами процессора, доступ в систему от имени root или полномочия sudo, установленный системный брандмауэр.
Установка
Во-первых, необходимо подключить к операционной системе дополнительный репозиторий. Авторизуйтесь как суперпользователь и выполните команду:
add-apt-repository ppa:oisf/suricata-stable
Подтвердите операцию, если появится предупреждение системы безопасности.
Собственно, программный пакет устанавливается за пару секунд одной командой:
apt-get update
apt-get install suricata
Установленную программу стоит добавить в системный пул служб с автозапуском. Если в результате вы видели что-то подобное — автозапуск успешно включен:
systemctl enable suricata
Стартовая конфигурация
Suricata "из коробки" удовлетворяет потребности большинства пользователей. Он работает в "безопасном" режиме, никакие сетевые пакеты не отбрасываются, только предупреждает о возможных угрозах. Этот подход хорош до тех пор, пока у вы не погрузитесь в описываемую область достаточно глубоко. Опий немного, но даже среди имеющихся есть полезные, например, Community ID.
Его использование может быть полезно в случае интеграции Suricata и других продуктов (например, Elasticsearch). Community ID добавляется в "главную" конфигурацию Suricata. Чтобы это сделать, установите для директивы "community-id:" значение "true" в файле /etc/suricata/suricata.yaml.
Следующим шагом нужно определить имя подлежащего мониторингу сетевого интерфейса. Скорее всего, это будет интерфейс по умолчанию, найти его можно при помощи команды:
ip -j -p route show default
Небольшое пояснение: опция -j установит формат "вывода" как JSON, флаг -p улучшает читабельность. Собственно интерфейс стоит искать в строке "dev".
Далее, имя найденного интерфейса нужно указать для Suricata, откройте файл /etc/suricata/suricata.yaml, найдите директиву interface в строке #550. Если нужно отслеживать несколько интерфейсов, можно добавить их все.
По окончании редактирования, нужно перезапустить сервис командой:
service suricata restart
Обновление правил
Для добавления дополнительных правил был придуман инструмент suricata-update. С его помощью можно скачивать как свободные, так и распространяемые за плату наборы правил со сторонних сайтов. Также он позволяет посмотреть, которые из наборов правил используются в данный момент.
suricata-update list-sources
Чтобы установить новый набор правил, выполните команду:
suricata-update enable-source <ИМЯ_НАБОРА_ПРАВИЛ>
Для применения изменений запустите suricata-update еще раз.
Проверка текущих настроек
Хорошей практикой является проверка конфигурации после каждого изменения. Делается это так:
suricata -T -v -c /etc/suricata/suricata.yaml # С флагом -T Suricata запускается в режиме «проверки», опция -c указывает путь к файлу конфигурации, параметр -v выводит множество дополнительной информации
Запуск сервиса
Чтобы перезапустить демон после успешной проверки конфигурации, выполните:
service suricata restart>
Для проверки статуса службы применяется команда
service suricata status
Проверка действующих правил
Чтобы проверить, действительно ли трафик обрабатывается сообразно вашим ожиданиям, установите инструмент jq, это сделает анализ журнала более простым. Для тестирования можно использовать специальным образом созданный файл.
apt-get install jq
curl http://testmynids.org/uid/index.html
Для поиска идентификаторов предупреждений можно посмотреть в лог-файлы:
tail -f /var/log/suricata/fast.log
tail -f /var/log/suricata/eve.log
Далее, можно посмотреть описание угрозы более детально:
jq 'select(.alert .signature_id==<ID_события>)' /var/log/suricata/eve.json
Итоги
Вы научились устанавливать и конфигурировать набор инструментов Suricata. Узнали, что можно использовать Community Flow ID для интеграции данного ПО с другими диагностическими инструментами. Также теперь вы умеете проверять настройки сервиса и анализировать с его помощью HTTP-трафик.