Описание
Suricata — программный комплекс для сбора, мониторинга и аудита сетевой безопасности. Эта утилита «построена» вокруг группы правил, как предопределенных, так и созданных пользователем. В соответствии с этими правилами, весь поступающий трафик анализируется и (возможно) обрабатывается перед отправкой дальше на "клиентское" устройство.
В Suricata есть несколько готовых предопределенных правил, в соответствии с которыми система работает в «пассивном режиме», она просто информирует администратора без каких-либо изменений в проходящем трафике. Этот комплекс можно запустить на "шлюзовом" устройстве для «пропуска» всего офисного трафика или на каждом из клиентских компьютеров отдельно.
Перед началом работы
Требования к оборудованию зависят от топологии локальной сети и конкретных потребностей. В общем, считается верным правило "большее количество проверяемого трафика и обрабатываемых правил требует большего количества системных ресурсов". Необходимый минимум - 2 ядра процессора и 4 или 8 гигабайт оперативной памяти.
Подытоживая, требования такие:
Ubuntu 20.04, на сервере с не менее чем 4 ГБ ОЗУ и 2 ядрами процессора, доступ в систему от имени root или полномочия sudo, установленный системный брандмауэр.
Установка
Во-первых, необходимо подключить к операционной системе дополнительный репозиторий. Авторизуйтесь как суперпользователь и выполните команду:
add-apt-repository ppa:oisf/suricata-stable
Подтвердите операцию, если появится предупреждение системы безопасности.
Собственно, программный пакет устанавливается за пару секунд одной командой:
apt-get install suricata
Установленную программу стоит добавить в системный пул служб с автозапуском. Если в результате вы видели что-то подобное — автозапуск успешно включен:
Стартовая конфигурация
Suricata "из коробки" удовлетворяет потребности большинства пользователей. Он работает в "безопасном" режиме, никакие сетевые пакеты не отбрасываются, только предупреждает о возможных угрозах. Этот подход хорош до тех пор, пока у вы не погрузитесь в описываемую область достаточно глубоко. Опий немного, но даже среди имеющихся есть полезные, например, Community ID.
Его использование может быть полезно в случае интеграции Suricata и других продуктов (например, Elasticsearch). Community ID добавляется в "главную" конфигурацию Suricata. Чтобы это сделать, установите для директивы "community-id:" значение "true" в файле /etc/suricata/suricata.yaml.
Следующим шагом нужно определить имя подлежащего мониторингу сетевого интерфейса. Скорее всего, это будет интерфейс по умолчанию, найти его можно при помощи команды:
Небольшое пояснение: опция -j установит формат "вывода" как JSON, флаг -p улучшает читабельность. Собственно интерфейс стоит искать в строке "dev".
Далее, имя найденного интерфейса нужно указать для Suricata, откройте файл /etc/suricata/suricata.yaml, найдите директиву interface в строке #550. Если нужно отслеживать несколько интерфейсов, можно добавить их все.
По окончании редактирования, нужно перезапустить сервис командой:
Обновление правил
Для добавления дополнительных правил был придуман инструмент suricata-update. С его помощью можно скачивать как свободные, так и распространяемые за плату наборы правил со сторонних сайтов. Также он позволяет посмотреть, которые из наборов правил используются в данный момент.
Чтобы установить новый набор правил, выполните команду:
Для применения изменений запустите suricata-update еще раз.
Проверка текущих настроек
Хорошей практикой является проверка конфигурации после каждого изменения. Делается это так:
Запуск сервиса
Чтобы перезапустить демон после успешной проверки конфигурации, выполните:
Для проверки статуса службы применяется команда
Проверка действующих правил
Чтобы проверить, действительно ли трафик обрабатывается сообразно вашим ожиданиям, установите инструмент jq, это сделает анализ журнала более простым. Для тестирования можно использовать специальным образом созданный файл.
curl http://testmynids.org/uid/index.html
Для поиска идентификаторов предупреждений можно посмотреть в лог-файлы:
tail -f /var/log/suricata/eve.log
Далее, можно посмотреть описание угрозы более детально:
Итоги
Вы научились устанавливать и конфигурировать набор инструментов Suricata. Узнали, что можно использовать Community Flow ID для интеграции данного ПО с другими диагностическими инструментами. Также теперь вы умеете проверять настройки сервиса и анализировать с его помощью HTTP-трафик.