Обзор Luntry. Платформа для обнаружения аномалий в реальном времени для Kubernetes

Kate

Administrator
Команда форума
В современных реалиях информационная безопасность стала важнейшим аспектом в жизни IT-систем. Количество атак постоянно растет, появляются новые виды угроз. Постоянно происходят утечки информации. Одна из самых популярных платформ для оркестрации – Kubernetes – также подвержена всевозможным рискам. В связи с этим необходим инструмент, который сможет выявлять подозрительную активность, а также обеспечивать должный уровень безопасности не только кластера Kubernetes, но и приложений, которые запущены внутри него. Одним из таких решений является коммерческий продукт отечественного производства под названием Luntry.

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

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

С технической точки зрения, Luntry представляет собой набор контейнеров, оформленных в Kubernetes-ресурсы. Решение представляет из себя систему сенсоров, поставляемых в виде DaemonSet, которые работают на нодах кластера, собирают информацию и передают ее на бэкенд.

Сенсор не может навредить системе — Luntry является read-only системой. Это означает, что платформа не записывает, не создает и не вносит какие-либо изменения в конфигурацию кластера. Благодаря технологии eBPF платформа способна быстро и без вреда для системы снимать системные вызовы с нод и использовать их для обучения и формирования модели поведения внутри контейнера.

Установка Luntry​

Установить Luntry можно несколькими способами:

  1. При помощи helm репозитория;
  2. Установить локально. Данный способ используется в случае, если невозможно использовать удаленный helm репозиторий.
В официальной документации описан каждый способ установки с необходимыми параметрами. Далее будет рассмотрен способ установки при помощи helm репозитория и использования внутренней СУБД PostgreSQL. Если установка планируется на production среду, то необходимо использовать внешнюю СУБД.

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

helm repo add luntry --username %USER% --password @PASSWORD@
5006f662a8a6238a94ba46b108fdb64a.png

%USER% — пользователь для доступа к репозиторию.
%PASSWORD% — пароль пользователя для доступа к репозиторию.

Пользователь и пароль от репозитория предоставляет вендор.

После того как репозиторий будет подключен можно приступать к установке Luntry. Для этого используется следующая команда:

helm install luntry luntry/luntry -n luntry-new --create-namespace \
--set database.enabled=true \
--set admin.user="luntry" \
--set admin.password="luntry_pass"
-n luntry-new – luntry будет установлен в namespace с названием luntry-new.

--set database.enabled – данный параметр со значением true означает что будет использоваться внутренняя СУБД.

--set admin.user="luntry" – данный параметр задает имя пользователя, которое будет использоваться для входа в веб-интерфейс. В данном случае имя пользователя будет задано как luntry.

--set admin.password="luntry_pass" – данный параметр задает пароль пользователю, который будет использоваться для входа в веб-интерфейс. В данном случае имя пользователя будет задано как luntry.

После того как у всех компонентов системы появится статус ready (в среднем данная процедура занимает от 2-3 минут до 7 минут) можно перейти в веб-интерфейс Luntry.

Отслеживать статус подов можно при помощи команды:

kubectl get po -n luntry-new
5a4555c473f0762d3db8175ec6446e1c.png

Для доступа к веб-интерфейсу необходимо получить IP-адрес компонента luntry-visualizer (компонент веб-интерфейса) при помощи команды:

kubectl get svc luntry-visualizer -n luntry-new
9b203c8f61c426b79c7abf9b283410d9.png

Далее перейти по адресу и порту, указанному в выводе. В данном случае веб-интерфейс luntry расположен по адресу 10.107.214.110 и слушает порт 32235.

При первом входе отобразится главная страница с аутентификацией. Логин и пароль от веб-интерфейса необходимо использовать те, которые были заданы в момент установки при помощи helm чарта (параметры set admin.user и set admin.password):

480eb413b904e6e8aee8bb32b3a6232b.png

Обзор программы​

Luntry позволяет работать с системой в следующих режимах:

Cluster Mode — работа с системой на уровне кластера;
Microservice Mode — работа с системой на уровне микросервисов.

При входе в программу открывается главный раздел – Dashboard, который отображает основную информацию о кластере, а также информацию о политиках кластера и аномалиях (подробнее о том, что такое аномалия будет описано далее). В разделе System отображается количество кластеров, нод, установленных сенсоров, количество namespace, workloads и количество образов.

Далее рассмотрим основные разделы Luntry:

  • Policies
  • Anomalies
  • Infrastructure
  • Kubernetes Map
  • Kubernetes network
  • Runtime Policy
  • Anomalies
  • RBAC
Policies отображает количество политик, которые в данный момент проходят обучение, количество активных, неактивных и архивированных политик.

374d63b9e387ccca1724f10cb5c2aba4.png

Anomalies отображает матрицу аномалий.

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

Аномалия — это действие, которое контейнер на совершал во время обучения\валидации политики.


Матрица аномалий показывает количество аномалий каждого типа:

Process — аномалии, связанные с процессами;
File — аномалии, связанные с файловыми операциями;
Network — аномалии, связанные с сетевым взаимодействием.

Infrastructure отображает более подробную информацию о кластере Kubernetes и нодах кластера:

abda00698a90ab6c4c5cf36459eac2f9.png

Kubernetes Map отображает сетевое взаимодействие между Workloads компонентами.

d8807507fe882b5187f4851d53de63b3.png

При открытии данного раздела появляется меню с фильтрами, в котором можно выбрать namespace, временной промежуток, за который необходимо отобразить события, а также выбрать links – типы связей. Связи делятся на следующие категории:

• All — все типы связей;

• Internet — связи с сущностями в сети Internet;

• Aliases — связи с сущностями, заданными в системе администратором;

• Namespaces — связи с сущностями из других namespaces, не выбранных в фильтре;

• Localhost — взаимодействие по localhost;

Kubernetes network отображает сетевое взаимодействие между различными компонентами кластера.

8523cdd34dbb5c7b2e88996e2262aa56.png

Каждый компонент оформлен соответствующим образом. Прямоугольные блоки — это Namespaces. Каждый узел — это определённый Kubernetes ресурс со своей соответствующей иконкой. При этом показывается родитель Pod’ов, а не они сами (Pods может быть 10-100).

Связи между узлами — это либо фактическое хождение трафика (сплошная линия), либо логическая связь между ресурсами (пунктирная линия).

Runtime Policy отображает список политик для образов контейнеров в соответствующих Kubernetes ресурсах с учетом их разновидности.

0bccffbf0d2d0660fe3c02882d3d2fa6.png

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

e81768f47897338bdda0751c394d60d1.png

Если открыть аномалию, то отобразится вся подробная информация о выбранной аномалии, включая ее график, на котором отображаются действия, выполненные на хосте (набор команд), а также дата и время выполнения действий, которые привели к созданию аномалии:

5f0f5e4ab8d46615a9f395a628928acc.png

В разделе RBAC (расшифровывается как Role-based access control и представляет собой систему распределения прав доступа к различным объектам в кластере Kubernetes) происходит работа с субъектами (Service Accounts, Users, Groups), правами и ролями RBAC.

722df667ac02c8af89e702ffaaa1aa10.png

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

Переключатель Only Used Images позволяет отображать в списке только активные образы (образы, которые сейчас используются тем или иным контейнером).

d50becf260b8a68542316207fc0527de.png

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


 
Сверху