Найти в Дзене

Зачем аналитику ClickHouse? | SIEM на коленке

Сегодня поговорим про OpenSource инструмент для хранения и анализа событий - ClickHouse. У многих специалистов по кибербезопасности наступает такой период, когда хочется собрать свой домашний стенд ETL (extract, transform, load). В такие моменты приходят на ум опенсорс-решения, на которых потом можно надстроить Security Operations ("SIEM на коленке"). Подробное изучение вопроса очень быстро привело к Wazuh SIEM+EDR как почти к единственному, однако, развивается он уже достаточно долго и имеет свою специализацию. Если вы слышали другие развивающиеся проекты "сел поехал" - дайте знать! Но, сегодня речь пойдет не о нём, а если всё же интересно почитать про создание лаборатории на Wazuh, сделаем ещё пост :) Итак, моё внимание привлекло одновременно два проекта. Первый - ClickHouse - это колоночная аналитическая СУБД. Среди её преимуществ заявляется: Интересен проект тем, что специалисту SOC в случае работы (например, в рамках Threat Hunting) на большом массиве данных крайне важны описанные
Оглавление

Сегодня поговорим про OpenSource инструмент для хранения и анализа событий - ClickHouse.

ClickHouse
ClickHouse

🔎 OpenSource

У многих специалистов по кибербезопасности наступает такой период, когда хочется собрать свой домашний стенд ETL (extract, transform, load). В такие моменты приходят на ум опенсорс-решения, на которых потом можно надстроить Security Operations ("SIEM на коленке").

Подробное изучение вопроса очень быстро привело к Wazuh SIEM+EDR как почти к единственному, однако, развивается он уже достаточно долго и имеет свою специализацию. Если вы слышали другие развивающиеся проекты "сел поехал" - дайте знать! Но, сегодня речь пойдет не о нём, а если всё же интересно почитать про создание лаборатории на Wazuh, сделаем ещё пост :)

Итак, моё внимание привлекло одновременно два проекта.

🏠 Про ClickHouse

Первый - ClickHouse - это колоночная аналитическая СУБД. Среди её преимуществ заявляется:

  • индексация
  • репликация
  • возможность кластеризации (а это означает лёгкую масштабируемость)
  • сжатие данных
  • высокая скорость обработки запросов к данным
  • практически полная поддержка SQL + дополнительные функции
  • готовность работы не только в RAM и SSD, но и на HDD

Интересен проект тем, что специалисту SOC в случае работы (например, в рамках Threat Hunting) на большом массиве данных крайне важны описанные преимущества для быстрого поиска аномалий в сети.

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

🔨 Установка ClickHouse

Теперь перейдём к практике и поднимем ClickHouse самым простым (*без использования Docker) способом. Для Home Lab нам понадобится VMware Workstation Pro в качестве виртуализации. Шаги по установке следующие:

1. Создание виртуальной машины. Этот шаг не стану описывать из за простоты.

2. Установка ОС. Выбор пал на Ubuntu 22.04

3. Установка ClickHouse. Здесь всё просто по документации:

- добавляем репозиторий

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update

- устанавливаем server и client

sudo apt-get install -y clickhouse-server clickhouse-client

- запускаем

sudo service clickhouse-server start

- проверяем, что всё работает

clickhouse-client
<вводим пароль пользователя default>
select 1

если в ответе получили "1 row in set", всё ок.

- включаем возможности по контрою доступа, для этого в конфигурационном файле пользователя default /etc/clickhouse-server/users.d/default-password.xml добавляем строки:

<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
<show_named_collections>1</show_named_collections>
<show_named_collections_secrets>1</show_named_collections_secrets>

- также, чтобы разрешить удаленные подключения к ClickHouse, необходимо раскомментировать следующую строку в файле /etc/clickhouse-server/config.xml:

<listen_host>::</listen_host>

- перезапускаем clickhouse

sudo service clickhouse-server restart

- подключаемся к ClickHouse, создаём базу 'db' и таблицу 'events' в ней (почему выбраны такие поля в таблице и движок - расскажу позже):

clickhouse-client
CREATE DATABASE db;
CREATE TABLE db.events (`appname` String, `hostname` String, `message` String, `procid` UInt32, `timestamp` DateTime) ENGINE = MergeTree() PARTITION BY toYYYYMM(timestamp) ORDER BY timestamp;

- теперь открываем в браузере http://dash.tabix.io. Tabix предоставляет простой веб-интерфейс для ClickHouse, позже можно прикрутить Grafana, Telescope или Metabase. Вводим название подключения, адрес нашего сервера и учетные данные для входа и делаем SELECT к нашей новой таблице и получаем следующий результат.

Наша таблица в ClickHouse
Наша таблица в ClickHouse

Отлично! У нас готово хранилище для наших данных. В следующих постах расскажу, как и что мы будем в него записывать, stay tuned ♫

Также можно подписаться в Telegram: @mirkib