Skip to main content
Loading...

Архитектура продукта

Используемая архитектура (не в подробностях) приведена на рисунке выше.

Ядро RuSIEM, веб интерфейс, бэкенд и сопутствующие компоненты разработаны полностью нашей командой. В разработке используются:

С++ 11 (stl, boost), c# (.net 3-4), java, php (bootstrap, laravel), bash, python, powershell (wmi), scala, maven, json, xml, html, C+, .Net, g++, gdb, gprof, cmake, binutils, Maven, Markdown, Scala, Java.

В RuSIEM используются следующие компоненты и базы данных:

  • Postgresql
  • Redis MQ
  • RuSIEM MQ
  • Apache Kafka
  • ElasticSearch
  • Neo4j
  • Yandex ClickHouse
  • Apache Storm

Продукт состоит из:

  1. серверной части
  2. агента для Windows

Агент для Windows используется как посредник для нативных транспортов с целью сбора с различных источников, отличных от syslog. Один агент может собирать как локально, так одновременно удаленно с множества источников безагентным методом. Канал связи между агентом и сервером зашифрован. Агент имеет встроенную базу данных для временного хранения событий при отсутствии подключения к серверу. Агент может работать только с RuSIEM/RvSIEM, не совместим с другими продуктами.

Syslog источники направляются напрямую на сервер.

Ядро (микросервисы) более чем на 80% написано на С++. Модуль аналитики, преимущественно, java.

MQ (message queue) применяются для связи микросервисов, обмена между микросервисами пулов данных, для обеспечения передачи событий без потерь в случае возникновения пиков событий, рестарте какого либо компонента. Применение MQ обусловлено тем, что потеря даже одного события может сказаться на обнаружении угрозы, сбоя и инцидента.

В рамках одного сервера (ноды) передача между микросервисами, преимущественно, производится по tcp протоколу, но с продюсером RuSIEM MQ, контролирующим очереди на всех микросервисах. При невозможности обработки событий на микросервисах (или пике производительности ноды), входная очередь буферизуется в RuSIEM MQ непосредственно на диск.

Ноды RuSIEM/RvSIEM могут быть подключены между собой различными методами:

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

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

Допускается подключение множества нод свободно распространяемого RvSIEM к нодам коммерческой версии RuSIEM.

Хранение событий в версиях RuSIEM/RvSIEM осуществляется в базе данных Elasticsearсh в формате json. При этом, по умолчанию, сохраняется как сырое (raw) событие, так и нормализованное. В каждом json содержится и raw событие и нормализованное. Сохранение raw событий можно отключить. В модуль аналитики передаются только нормализованные события, raw события не передаются. Модуль аналитики имеет свой набор баз данных и форматов хранения.

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

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