Skip to main content

SIEM (ElasticSearch)

Компоненты

ElasticSearch Серверная часть - бэкенд обработки данных
Агенты На клиентах, агрегируют и отправляют данные 
Kibana Визуализация данных ElasticSearch, возможно на отдельном сервере
Fleet Бэкенд для управления агентами, фронт через kibana. Управление через политики.

Установка ElasticSearch

Ubuntu, 4 ядра, 8ГБ, 30ГБ

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://mirror.yandex.ru/mirrors/elastic/8/ stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update && sudo apt install elasticsearch

В консоли отобразится пароль суперюзера, его нужно сохранить.

The generated password for the elastic built-in superuser is : b0kLYdJDYetVHoPQafmc

Затем изменяем конфиг java vm, устанавливаем 8ГБ лимит. nano /etc/elasticsearch/jvm.options

## heap to 4 GB, create a new file in the jvm.options.d
## directory containing these lines:
##
-Xms8g
-Xmx8g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/8.19/heap-size.html
## for more information

Перегружаем службы 

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

Установка kibana 

sudo apt install kibana
sudo systemctl daemon-reload
sudo systemctl enable kibana.service
sudo systemctl start kibana.service
sudo systemctl status kibana.service

Генерируем пароль для пользователя kibana 

sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system

Password for the [kibana_system] user successfully reset.
New value: QiF9U+blQujOvEg+jHyB

Настраиваем сертификаты 

sudo cp -R /etc/elasticsearch/certs /etc/kibana
sudo chown -R root:kibana /etc/kibana/certs

Настраиваем параметры kibana в файле /etc/kibana/kibana.yml 

server.host: "192.168.1.184"
elasticsearch.username: "kibana_system"
elasticsearch.password: "QiF9U+blQujOvEg+jHyB"
elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/certs/http_ca.crt" ]
elasticsearch.hosts: ["https://192.168.1.184:9200"]

Входим по адресу http://192.168.1.184:5601/ и там логин elastic пароль b0kLYdJDYetVHoPQafmc

Fleet

Желательно ставить на отдельном сервере. Настраивается через Kibana Management - Fleet

image.png

Взаимодействие компонентов:

image.png

Fleet настраивается через Policy в Kibana, настройки(policy) хранятся в Elasticsearch, а агенты регистрируются на Fleet Server, получают через него конфигурацию, и отправляют данные в Elasticsearch. 

Установка Fleet server

Ставим Debian.

Сначала с ElasicSearch копируем сертификат на будущий сервер 

sudo scp /etc/elasticsearch/certs/http_ca.crt user@<fleet_server_host>:/tmp/

На Fleet 

sudo mkdir -p /etc/elastic/certs
sudo mv /tmp/http_ca.crt /etc/elastic/certs/
sudo chmod 644 /etc/elastic/certs/http_ca.crt
sudo chown -R root:root /etc/elastic/certs
sudo chmod 755 /etc/elastic
sudo chmod 644 /etc/elastic/certs/http_ca.crt

 

 

В kibana создаем новый сервер. Указываем отображаемое имя и URL будущего Fleet server. Обязательно установить порт, иначе будет стучаться на 443 по умолчанию и почему-то не поедет.

image.png

Нажимаем Generate... ELK сгенерирует набор команд, которые необходимо выполнить на будущем Fleet сервере для установки. Можно выбрать ОС для команды. В качестве localhost нужно указать адрес elastic сервера.

image.png

И к установочной строке нужно добавить ссылку на сертификат. Итоговая строка: 

sudo ./elastic-agent install   --fleet-server-es=https://192.168.1.184:9200   --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3NjA2MTgzNzk5MjQ6U2tNMlRSczRRcW00emV6aXZkR1JmZw   --fleet-server-policy=fleet-server-policy   --fleet-server-port=8220   --certificate-authorities=/etc/elastic/certs/http_ca.crt

И еще - токен имеет время жизни, поэтому при ошибке его нужно обновить.

Управление конфигурацией агентов

С помощью политик Fleet мы можем управлять конфигурацией агентов elastic. Давайте настроим наши агенты на сбор системных логов. Перейдем в раздел Agent policies:

В разделе "Add Integrations" можно добавить в политику модули для сбора данных. 

Интеграции(Integrations) это модули для сбора данных из различных источников. С актуальным списком доступных интеграций можно ознакомиться по адресу https://www.elastic.co/integrations

Давайте добавим интеграцию System. Для этого введем название интеграции в стоке поиска, откроем ее и нажмем Add System: