Как создавать правила, временные интервалы и кейсы из событий Suricata с использованием приложений SIEM Kibana

Введение

Предыдущие учебные пособия в этой серии руководили вас по установке и настройке Suricata. Они также объясняли, как использовать Filebeat для отправки оповещений с вашего сервера Suricata на сервер стека Elastic, чтобы использовать его с встроенной функциональностью управления информацией и событиями безопасности (SIEM).

В этом заключительном уроке серии вы создадите пользовательские правила Kibana и сгенерируете оповещения в панелях SIEM Kibana. После того как у вас будут установлены правила и вы поймете, где и как фильтровать журналы Suricata с помощью Kibana, вы изучите, как создавать и управлять случаями с использованием инструментов анализа временных интервалов Kibana.

К концу этого урока у вас будет система SIEM, которую вы сможете использовать для отслеживания и исследования событий безопасности на всех серверах вашей сети.

Предварительные требования

Если вы следовали этому серии уроков, у вас уже должен быть сервер с не менее чем 4 ГБ оперативной памяти и 2 процессорами, а также настроенный пользователь без прав root. Для целей данного руководства вы можете настроить это, следуя нашим руководствам по начальной настройке сервера для Ubuntu 20.04, Debian 11 или Rocky Linux 8, в зависимости от вашей операционной системы по вашему выбору.

Вам также понадобится установленный и работающий Suricata на вашем сервере. Если вам нужно установить Suricata на вашем сервере, вы можете сделать это, следуя одному из следующих учебников, в зависимости от вашей операционной системы:

Вам также понадобится сервер, работающий на Elastic Stack и настроенный таким образом, чтобы Filebeat мог отправлять журналы с вашего сервера Suricata в Elasticsearch. Если вам нужно создать сервер Elastic Stack, используйте одно из руководств из следующего списка, соответствующее вашей операционной системе:

Убедитесь, что вы можете войти в Kibana на вашем сервере Elasticsearch, и что в различных панелях индикаторов и событий Suricata есть события.

После того как у вас будут все необходимые предварительные условия, откройте SSH-туннель к вашему серверу Kibana и войдите в Kibana с помощью вашего браузера, используя учетные данные, которые вы сгенерировали в предыдущем уроке.

Шаг 1 — Включение ключей API в Elasticsearch

Перед тем как создавать правила, оповещения и временные линии в Kibana, вам необходимо включить настройку модуля безопасности xpack.

Откройте файл /etc/elasticsearch/elasticsearch.yml с помощью nano или вашего предпочтительного редактора.

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

Добавьте следующую выделенную строку в конец файла:

/etc/elasticsearch/elasticsearch.yml
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

Сохраните и закройте файл после завершения редактирования. Если вы используете nano, вы можете сделать это с помощью CTRL+X, затем Y и ENTER для подтверждения.

Теперь перезапустите Elasticsearch, чтобы новая настройка вступила в силу.

  1. sudo systemctl restart elasticsearch.service

Теперь вы готовы настраивать правила, изучать оповещения и создавать временные линии и кейсы в Kibana.

Шаг 2 — Добавление правил в Kibana

Чтобы использовать функционал SIEM Kibana с данными событий Suricata, вам необходимо создать правила, которые будут генерировать оповещения о входящих событиях. Перейдите на Панель правил на странице приложения безопасности Kibana, чтобы создать или импортировать правила.

Для целей этого руководства мы будем использовать следующие сигнатуры для обнаружения трафика, направленного на сервер с несовпадающими портами (трафик SSH, HTTP и TLS соответственно):

Example Suricata Signature
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)

alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

Если вы используете собственные сигнатуры или те, что входят в набор правил, убедитесь, что вы можете генерировать оповещения и что у вас есть доступ к соответствующим событиям в стандартных панелях инструментов Suricata в Kibana.

Теперь перейдите на страницу Правила в приложении Безопасность Kibana http://localhost:5601/app/security/rules/. Нажмите кнопку Создать новое правило в правом верхнем углу страницы.

Убедитесь, что выбран тип карточки Пользовательский запрос. Прокрутите до поля ввода Пользовательский запрос и вставьте в него следующее:

Kibana Query Language Input
rule.id: "1000000" or rule.id :"1000001"

Убедитесь, что значения вашего rule.id совпадают со значением sid в Suricata для атаки или атак, о которых вы хотите получать оповещения.

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

Нажмите Продолжить, чтобы перейти к добавлению имени в поле Имя правила, которое обязательно для каждого добавленного правила. Добавьте имя в поле Имя правила. В этом примере мы используем описание сообщения из правила Suricata SSH TRAFFIC on non-SSH port. Добавьте также описание правила. В этом примере мы используем Проверка попыток подключения по SSH на нестандартные порты.

Вы также можете развернуть раздел Дополнительные настройки и добавить детали о правиле. Например, вы можете добавить объяснение о том, как обрабатывать оповещение, сгенерированное правилом, или ссылку на статьи исследователя по безопасности о конкретном типе атаки.

Когда вы закончите добавление названия правила, описания и необязательных дополнительных полей, нажмите Продолжить, чтобы перейти к Шагу 3 создания правила.

Оставьте следующие настройки раздела Запланировать правило с их значениями по умолчанию и нажмите Продолжить.

Наконец, на этапе Действия правила нажмите Создать и активировать правило.

Вы будете перенаправлены на новую страницу, на которой будут отображаться детали о правиле:

Примечание: Это может занять несколько минут, чтобы данные оповещения заполнились впервые. Эта задержка вызвана тем, что расписание правила по умолчанию составляет запуск каждые 5 минут.

Если есть другие правила Suricata, по которым вы хотели бы получать оповещения, повторите вышеуказанные шаги, заменив sid подписи в поле пользовательского запроса Kibana rule.id.

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

Теперь, когда у вас настроено одно или несколько правил для генерации оповещений в приложении SIEM Kibana, вам понадобится способ дополнительной группировки и управления оповещениями. Для начала перейдите на панель оповещений Kibana: http://127.0.0.1:5601/app/security/alerts.

Убедитесь, что вы создали некоторый недействительный трафик, соответствующий сигнатуре или сигнатурам Suricata, которые вы используете. Например, вы можете запустить пример правила Suricata sid:1000000, выполнив команду подобную следующей на вашем локальном компьютере:

  1. ssh -p 80 your_server_ip

Эта команда попытается подключиться к вашему серверу через SSH на порту 80 вместо стандартного порта 22 и должна вызвать оповещение. Отображение оповещения в Kibana может занять несколько минут, так как оно должно быть обработано Elasticsearch и правилом, которое вы создали в Kibana.

Затем вы добавите поле community_id в таблицу оповещений, которая отображается внизу страницы. Помните из первого учебника, что это поле генерируется Suricata и представляет собой уникальные IP-адреса и порты, содержащиеся в сетевом потоке. Нажмите кнопку Fields, и во всплывающем модальном диалоге введите network.community_id, а затем установите флажок рядом с именем поля:

Закройте модальное окно, и поле будет добавлено в таблицу оповещений. Теперь наведите указатель мыши на любое оповещение с тем же значением community_id и нажмите значок Add to timeline investigation. Это гарантирует, что все оповещения, которые разделяют community_id, добавленный Suricata к событию, будут добавлены в ленту для дальнейшего изучения:

Затем щелкните по ссылке Untitled Timeline в левом нижнем углу вашего браузера. Эта ссылка перенесет вас на страницу, на которой отображаются только предупреждения с полем community_id Suricata, которые вы хотите исследовать.

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

Щелкните по кнопке All data sources справа на странице и выберите кнопку Detection Alerts, затем щелкните по кнопке Save. Эта опция ограничит время воспроизведения, отображая только предупреждения, генерируемые Kibana. Без этой опции предупреждения Suricata также будут включены во временную шкалу.

Чтобы сохранить новую временную шкалу, щелкните по значку карандаша в верхнем левом углу страницы временной шкалы. На следующем скриншоте показано, где найти значок карандаша и кнопку All data sources:

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

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

На следующем этапе вы будете использовать свои представления временных шкал событий, чтобы прикрепить предупреждения к приложению Cases Kibana в пакете инструментов SIEM.

Шаг 4 — Создание и Управление Кейсами SIEM

На предыдущем этапе вы создали временную шкалу для группировки отдельных предупреждений и пакетов на основе поля community_id в Suricata. На этом этапе руководства вы создадите кейс для отслеживания и управления предупреждениями в вашей временной шкале.

Чтобы создать новый кейс из вашей временной шкалы, убедитесь, что вы находитесь на странице временной шкалы в вашем браузере. Нажмите кнопку Присоединить к кейсу в правом верхнем углу страницы временной шкалы, а затем кнопку Присоединить к новому кейсу в появившемся списке.

Вы будете перенаправлены на страницу, где вы сможете ввести информацию о инциденте, который вы расследуете. На следующем примере скриншота кейс – это наши предупреждения об обращении по SSH на не-SSH порт:

Заполните поля описательным именем и необязательным тегом или тегами. В этом примере имя кейса – Обращение по SSH на не-SSH порт с 203.0.113.5, так как это конкретный тип трафика и хост, который мы исследуем. С множеством событий для исследования в вашей системе SIEM такая схема именования поможет вам отслеживать кейсы, временные шкалы и предупреждения, так как имя будет соответствовать оповещению Kibana и полю сообщения подписи Suricata.

Прокрутите вниз страницы и нажмите кнопку Создать дело. Ваш браузер перейдет на страницу, где будет отображено сохраненное дело. Вы можете добавить комментарии в формате Markdown с дополнительной информацией, а также редактировать дело с этой страницы.

Затем перейдите по ссылке в описании, чтобы перейти к временной шкале дела, которую вы добавили на предыдущем шаге этого руководства.

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

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

Теперь снова посетите приложение Дела в Kibana](http://localhost:5601/app/security/cases) с помощью меню навигации слева на странице. Нажмите на ваше дело и обратите внимание, как добавленные вами оповещения перечислены в деталях дела:

Отсюда вы можете прокрутить вниз дела и добавить любую дополнительную информацию, которую хотите. Например, любые шаги, которые вы предприняли для исследования оповещения или оповещений, изменения конфигурации в Suricata, такие как новое или отредактированное правило, передача на другого члена команды или что-то еще, что относится к делу.

Как только вы будете уверены в создании дел для различных типов оповещений, которые вы хотите отслеживать, вы теперь можете использовать инструменты SIEM Kibana для организации и координации исследования любого оповещения в одном центральном месте.

Заключение

В этом руководстве вы расширили свою существующую систему SIEM Suricata и Elastic Stack, добавив правила в Kibana, которые генерируют оповещения о конкретном трафике, представляющем интерес. Вы также создали временную шкалу или временные шкалы, чтобы сгруппировать наборы оповещений на основе их community_id. Наконец, вы создали дело и связали свою временную шкалу с ним, а также с отдельными интересующими оповещениями.

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

Для получения дополнительной информации о инструментах SIEM Kibana посетите официальную Документацию по безопасности Elastic. В руководствах там подробно объясняется, как использовать Правила, Оповещения, Временные шкалы и Дела.

Для более легкого интерфейса SIEM вас также может заинтересовать EveBox, который представляет всю информацию о событиях Suricata и функциональность SIEM на одной странице.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-rules-timelines-and-cases-from-suricata-events-using-kibana-s-siem-apps