ELK, SIEM, Open Distro: Оповещения (алерты)

от автора

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

Они могут прервать цепочку кибер-атак или отслеживать эту атаку, в зависимости от политики предприятия и команды. Вы, наверное, задаетесь вопросом, зачем нам нужно включать больше предупреждений. Разве модулей предупреждений Open Distro недостаточно? Это потому, что ему не хватает количества выходов и его интегрируемости с остальной частью нашего решения, например Thehive. Мы познакомим вас с другой альтернативой.

Оглавление всех постов.

Статья разделена на следующие разделы:

* Установка и настройка ElastAlert, ElastAlert-Server и Praeco

* Создание правил

1-Установка и настройка ElastAlert, ElastAlert-Server и Praeco:

1.1 Введение:

A- Определения

Praeco: позволяет создавать оповещения с опциями уведомлений, включая Slack, электронную почту, Telegram, Jira.

Оповещения в Praeco могут быть собраны либо путем выбора полей, о которых нужно оповещать, и соответствующих операторов с помощью конструктора запросов, либо вручную с помощью языка запросов Kibana (KQL).

ElastAlert — это простая структура для оповещения об аномалиях, всплесках или других интересных паттернах на основе данных в Elasticsearch. Он работает путем объединения Elasticsearch с двумя типами компонентов: типами правил и предупреждениями. Elasticsearch периодически опрашивается, и данные передаются в тип правила, который определяет, когда будет найдено совпадение. Когда происходит совпадение, передается одно или несколько предупреждений, которые принимают меры в зависимости от совпадения.

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

— Правила Sigma: Sigma — это общий и открытый формат подписи, который позволяет вам прямо описывать соответствующие события журнала. Формат правила очень гибкий, его легко написать и он применим к любому типу файла журнала. Основная цель этого проекта — предоставить структурированную форму, в которой исследователи или аналитики могут описать свои однажды разработанные методы обнаружения и сделать их доступными для других.

B- Клонирование проектов:

cd /etc git clone https://github.com/Yelp/elastalert.git git clone https://github.com/ServerCentral/elastalert-server.git git clone https://github.com/ServerCentral/praeco.git

Вы можете найти дополнительную информацию по этому URL-адресу: https://github.com/ServerCentral/praeco

1.2-Настройка Elastalert:

cd /etc/elastalert mkdir rules rule_templates cp config.yaml.example config.yaml nano config.yaml

Настройте elastalert config.yaml с помощью:

Ваш es_host: localhost

Уникальный writeback_index: elastalert_status

Измените папку rules_folder на rules

ПРИМЕЧАНИЕ. Если вы используете python 2.7, вам необходимо изменить его на 3.6.

A- Установка python3.6 в Ubuntu:

sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.6

B-Обновление конфигурации Python:

sudo update-alternatives — install /usr/bin/python python /usr/bin/python2.7 sudo update-alternatives — install /usr/bin/python python /usr/bin/python3.6

C-Изменение Python по умолчанию:

update-alternatives — config python

И выберите python3.6

Теперь по умолчанию у вас должен быть python3.6

D-Install pip3:

sudo apt install python3-pip

E- Вам также необходимо установить PyYAML (пример 5.1):

pip install PyYAML==5.1

F- Требования к установке и elastalert

cd /etc/elastalert pip3 install “setuptools>=11.3” python setup.py install

G- Создание индекса:

cd /usr/local/bin/ ./elastalert-create-index

Параметры

ES Host : localhost ES Port : 9200 Use ssl : t Verify ssl :f

Мы будем использовать по умолчанию ES_username: admin и ES_password: admin.

Также оставьте ответ по умолчанию для остальных вопросов.

1.3- Настройка сервера API:

Настройте сервер API /etc/elastalert-server/config/config.json с помощью:

  • Абсолютный путь к вашей папке elastalert для elastalertPath: /etc/elastalert
  • Адрес вашего экземпляра elasticsearch для es_host: elasticsearch
  • Тот же writeback_index из config.yaml: elastalert_status

A- Журналы предупреждений о неисправностях (No Data):

Обработчик метаданных, относящийся к индексу обратной записи журнала предупреждений, ищет документы с _type elastalert. Начиная с 7.x, это не возвращает результатов, потому что все документы имеют _type _doc.

Таким образом, в вашем журнале предупреждений (в интерфейсе Praeco позже) вы увидите No Data.

Итак, вам необходимо:

cd /etc/elastalert-server/src/handlers/metadata/ nano get.js

удалите строку, содержащую тип: «elastalert»,

Теперь вы сможете просматривать журналы предупреждений в интерфейсе praeco.

B-Установите Elastalert-Server:

sudo npm install sudo npm run start

Вы должны увидеть эту строку, если она запустилась успешно. Это просто предупреждение из-за небезопасного соединения (SSL_verify = False).

1.4- Настройка Praeco:

A- Изменить файлы конфигурации:

cd /etc/praeco/config nano api.config.json

nano elastalert.yml

B- Установите Praeco:

sudo npm install export PRAECO_ELASTICSEARCH=localhost

C- Скопируйте BaseRule.cfg:

Перед запуском сервисов необходимо:

cp /etc/praeco/rules/BaseRule.config /etc/elastalert/rules/

Этот файл содержит настройки для Slack, SMTP и Telegram.

Здесь мы добавим URL-адрес Slack Webhook, используемый в Разделе 2.

cd /etc/elastalert/rules/ nano BaseRule.config

добавьте URL-адрес Webhook

D- Запустите Praeco:

npm run serve

Теперь вы должны увидеть, что пользовательский интерфейс работает по адресу http://yourServerIP: 8080.

Вот ваш интерфейс Praeco

2- Создание правил:

2.1.- Создание правил с помощью интерфейса Praeco и отправка их в Slack webhook:

Перейдите в Правила(Rules) -> Добавить правило(Add Rule):

Теперь вы можете видеть, что создание правила очень похоже на Open Distro Alerting Tool, мы отфильтруем предупреждение и укажем место назначения.

Щелкните UNFILTERED и укажите фильтр вручную или с помощью инструмента предварительной сборки.

Затем нажмите Close

Мы будем использовать уведомления Slack с тем же URL-адресом веб-перехватчика, который используется в разделе 2, и тем же каналом (#test).

Нажмите Save

Ваше оповещение включено по умолчанию

Мы можем проверить, что оповещения были успешно отправлены в Slack.

В нашем слабом канале:

2.2- Отправка предупреждений из ElastAlert в TheHive

К сожалению, Praeco не обеспечивает вывод предупреждений в TheHive, поэтому мы будем редактировать наши правила вручную и отправлять их с помощью elastalert-server.

Благодаря этому обходному пути правила будут хорошо работать в фоновом режиме благодаря Elastalert-server, они также будут присутствовать в интерфейсе Praeco, но, к сожалению, мы не сможем редактировать или настраивать их с помощью интерфейса Praeco.

A- Создание правила: «User_creation»:

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

Когда закончите, нажмите Save.

B- Уведомления о доставке в Thehive:

Добавьте настройку TheHive, сохраните и перезапустите Elastalert-Server

Перейдите в /etc/elastalert/rules

nano User_creation.yml

C. Проверка предупреждений в Praeco

Наше оповещение было успешно отправлено в Hive

К сожалению, как мы упоминали ранее, правило не будет редактироваться с помощью интерфейса Praeco, вам придется отредактировать его вручную в /etc/elastalert/rules:

D- Проверка предупреждений в интерфейсе TheHive:

2.3- Получите помощь с инструментом Sigma для создания правил:

Как упоминалось ранее, инструмент Sigma помог нам преобразовать правила сигмы в несколько форматов, включая Elastalert.

URL проекта с подробными инструкциями: https://github.com/Neo23x0/sigma.git

A- Загрузить инструмент Sigma

cd ~ git clone https://github.com/Neo23x0/sigma.git

B- Создайте свое оповещение с помощью инструмента сигма

cd ~/sigma/tools pip3 install -r requirements.txt

Выполнить (пример правила) (это одна команда):

./sigmac -t elastalert -c winlogbeat ../rules/windows/builtin/win_user_creation.yml

К сожалению, это правило не может напрямую использоваться (Praeco / Elastalert-Server) из-за отсутствия нескольких полей.

Таким образом, вы можете выбрать важную информацию из этого правила (строка запроса) и создать собственное правило в интерфейсе Praeco с этой информацией.

Этот инструмент очень важен, поскольку помогает собирать информацию о многих правилах и их строках запроса.

Примечание: Иногда вам нужно проверить свои журналы (Kibana → Discover Interface) и их поля, чтобы убедиться, что поля имен в ваших журналах совпадают с полями имен в правилах сигмы. Если в ваших полях отображается желтая ошибка, перейдите к шаблону индекса, выберите соответствующий индекс и нажмите кнопку «Обновить поля».

2.4- Отправка предупреждений Wazuh в theHive:

Мы будем использовать тот же обходной путь, упомянутый ранее, для предупреждений wazuh, сначала мы создадим предупреждения wazuh с помощью интерфейса praeco, затем мы вручную отредактируем файл правил, чтобы добавить вывод Hive:

A. Создайте правило wazuh и сохраните его:

Мы использовали для фильтрации правила с помощью rule.id (вы можете выбрать любое другое поле).

Вы можете получить идентификатор правил в wazuh → Overview → Security events.

B-Отредактируйте правило и перезапустите elastalert-server:

nano /etc/elastalert/wazuh-alert-TEST.yaml

C- Проверка оповещений:

Спасибо за уделенное время. Мы надеемся, что вам понравилась эта статья и вы лучше поняли систему оповещений, используемую в нашем проекте. Увидимся в следующей статье.

ссылка на оригинал статьи https://habr.com/ru/post/516472/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *