![](https://habrastorage.org/getpro/habr/upload_files/f9d/78d/823/f9d78d82368972fa2e3d77dc46f77de5.jpg)
В современных реалиях информационная безопасность стала важнейшим аспектом в жизни IT-систем. Количество атак постоянно растет, появляются новые виды угроз. Постоянно происходят утечки информации. Одна из самых популярных платформ для оркестрации – Kubernetes – также подвержена всевозможным рискам. В связи с этим необходим инструмент, который сможет выявлять подозрительную активность, а также обеспечивать должный уровень безопасности не только кластера Kubernetes, но и приложений, которые запущены внутри него. Одним из таких решений является коммерческий продукт отечественного производства под названием Luntry.
Luntry относится к классу Observability решений. Под Observability подразумевается показатель того, насколько эффективно можно определить внутреннее состояние системы по ее выходным данным.
Основная цель Luntry заключается в повышении видимости происходящего в приложениях, запущенных в кластере Kubernetes. Благодаря предоставляемой информации появляется возможность отслеживать бесперебойную работу своих сервисов и управлять их безопасностью, не замедляя производственный цикл.
С технической точки зрения, Luntry представляет собой набор контейнеров, оформленных в Kubernetes-ресурсы. Решение представляет из себя систему сенсоров, поставляемых в виде DaemonSet, которые работают на нодах кластера, собирают информацию и передают ее на бэкенд.
Сенсор не может навредить системе — Luntry является read-only системой. Это означает, что платформа не записывает, не создает и не вносит какие-либо изменения в конфигурацию кластера. Благодаря технологии eBPF платформа способна быстро и без вреда для системы снимать системные вызовы с нод и использовать их для обучения и формирования модели поведения внутри контейнера.
Установка Luntry
Установить Luntry можно несколькими способами:
При помощи helm репозитория;
Установить локально. Данный способ используется в случае, если невозможно использовать удаленный helm репозиторий.
В официальной документации описан каждый способ установки с необходимыми параметрами. Далее будет рассмотрен способ установки при помощи helm репозитория и использования внутренней СУБД PostgreSQL. Если установка планируется на production среду, то необходимо использовать внешнюю СУБД.
Для начала необходимо подключить helm репозиторий. Команда для подключения репозитория Luntry выглядит следующим образом:
helm repo add luntry --username %USER% --password @PASSWORD@
https://registry.luntry.com/chartrepo/luntry/
![](https://habrastorage.org/getpro/habr/upload_files/500/6f6/62a/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
![](https://habrastorage.org/getpro/habr/upload_files/5a4/555/c47/5a4555c473f0762d3db8175ec6446e1c.png)
Для доступа к веб-интерфейсу необходимо получить IP-адрес компонента luntry-visualizer (компонент веб-интерфейса) при помощи команды:
kubectl get svc luntry-visualizer -n luntry-new
![](https://habrastorage.org/getpro/habr/upload_files/9b2/03c/8f6/9b203c8f61c426b79c7abf9b283410d9.png)
Далее перейти по адресу и порту, указанному в выводе. В данном случае веб-интерфейс luntry расположен по адресу 10.107.214.110 и слушает порт 32235.
При первом входе отобразится главная страница с аутентификацией. Логин и пароль от веб-интерфейса необходимо использовать те, которые были заданы в момент установки при помощи helm чарта (параметры set admin.user и set admin.password):
![](https://habrastorage.org/getpro/habr/upload_files/480/eb4/13b/480eb413b904e6e8aee8bb32b3a6232b.png)
Обзор программы
Luntry позволяет работать с системой в следующих режимах:
Cluster Mode — работа с системой на уровне кластера;
Microservice Mode — работа с системой на уровне микросервисов.
При входе в программу открывается главный раздел – Dashboard, который отображает основную информацию о кластере, а также информацию о политиках кластера и аномалиях (подробнее о том, что такое аномалия будет описано далее). В разделе System отображается количество кластеров, нод, установленных сенсоров, количество namespace, workloads и количество образов.
Далее рассмотрим основные разделы Luntry:
Policies
Anomalies
Infrastructure
Kubernetes Map
Kubernetes network
Runtime Policy
Anomalies
RBAC
Policies отображает количество политик, которые в данный момент проходят обучение, количество активных, неактивных и архивированных политик.
![](https://habrastorage.org/getpro/habr/upload_files/374/d63/b9e/374d63b9e387ccca1724f10cb5c2aba4.png)
Anomalies отображает матрицу аномалий.
Luntry позволяет создавать автоматически обученные политики, с помощью которых можно находить аномалии, связанные с процессами, работой с файлами и сетью.
Аномалия — это действие, которое контейнер на совершал во время обучения\валидации политики.
Матрица аномалий показывает количество аномалий каждого типа:
Process — аномалии, связанные с процессами;
File — аномалии, связанные с файловыми операциями;
Network — аномалии, связанные с сетевым взаимодействием.
Infrastructure отображает более подробную информацию о кластере Kubernetes и нодах кластера:
![](https://habrastorage.org/getpro/habr/upload_files/abd/a00/698/abda00698a90ab6c4c5cf36459eac2f9.png)
Kubernetes Map отображает сетевое взаимодействие между Workloads компонентами.
![](https://habrastorage.org/getpro/habr/upload_files/d88/075/07f/d8807507fe882b5187f4851d53de63b3.png)
При открытии данного раздела появляется меню с фильтрами, в котором можно выбрать namespace, временной промежуток, за который необходимо отобразить события, а также выбрать links – типы связей. Связи делятся на следующие категории:
All — все типы связей;
Internet — связи с сущностями в сети Internet;
Aliases — связи с сущностями, заданными в системе администратором;
Namespaces — связи с сущностями из других namespaces, не выбранных в фильтре;
Localhost — взаимодействие по localhost;
Kubernetes network отображает сетевое взаимодействие между различными компонентами кластера.
![](https://habrastorage.org/getpro/habr/upload_files/852/3cd/d34/8523cdd34dbb5c7b2e88996e2262aa56.png)
Каждый компонент оформлен соответствующим образом. Прямоугольные блоки — это Namespaces. Каждый узел — это определённый Kubernetes ресурс со своей соответствующей иконкой. При этом показывается родитель Pod’ов, а не они сами (Pods может быть 10-100).
Связи между узлами — это либо фактическое хождение трафика (сплошная линия), либо логическая связь между ресурсами (пунктирная линия).
Runtime Policy отображает список политик для образов контейнеров в соответствующих Kubernetes ресурсах с учетом их разновидности.
![](https://habrastorage.org/getpro/habr/upload_files/0bc/cff/bf0/0bccffbf0d2d0660fe3c02882d3d2fa6.png)
Anomalies отображает список аномалий, обнаруженных в кластере.
![](https://habrastorage.org/getpro/habr/upload_files/e81/768/f47/e81768f47897338bdda0751c394d60d1.png)
Если открыть аномалию, то отобразится вся подробная информация о выбранной аномалии, включая ее график, на котором отображаются действия, выполненные на хосте (набор команд), а также дата и время выполнения действий, которые привели к созданию аномалии:
![](https://habrastorage.org/getpro/habr/upload_files/5f0/f5e/4ab/5f0f5e4ab8d46615a9f395a628928acc.png)
В разделе RBAC (расшифровывается как Role-based access control и представляет собой систему распределения прав доступа к различным объектам в кластере Kubernetes) происходит работа с субъектами (Service Accounts, Users, Groups), правами и ролями RBAC.
![](https://habrastorage.org/getpro/habr/upload_files/722/df6/67a/722df667ac02c8af89e702ffaaa1aa10.png)
В разделе Images отображается список образов контейнеров. Число рядом с именем образа обозначает, в каком количестве данный образ в текущий момент времени используется. С помощью раскрывающихся элементов можно просмотреть детали для каждого образа.
Переключатель Only Used Images позволяет отображать в списке только активные образы (образы, которые сейчас используются тем или иным контейнером).
![](https://habrastorage.org/getpro/habr/upload_files/d50/bec/f26/d50becf260b8a68542316207fc0527de.png)
Подводя итоги, можно сказать что Luntry отлично подойдет в качестве решения для обеспечения безопасности кластеров Kubernetes, а также микросервисов. Благодаря обширному набору функций, Luntry также можно использовать как систему мониторинга за кластером Kubernetes. Кроме того, одним из главных преимуществ Luntry является отечественная разработка, что важно в текущих реалиях импортозамещения.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.