В современных реалиях информационная безопасность стала важнейшим аспектом в жизни IT-систем. Количество атак постоянно растет, появляются новые виды угроз. Постоянно происходят утечки информации. Одна из самых популярных платформ для оркестрации – Kubernetes – также подвержена всевозможным рискам. В связи с этим необходим инструмент, который сможет выявлять подозрительную активность, а также обеспечивать должный уровень безопасности не только кластера Kubernetes, но и приложений, которые запущены внутри него. Одним из таких решений является коммерческий продукт отечественного производства под названием Luntry.
Luntry относится к классу Observability решений. Под Observability подразумевается показатель того, насколько эффективно можно определить внутреннее состояние системы по ее выходным данным.
Основная цель Luntry заключается в повышении видимости происходящего в приложениях, запущенных в кластере Kubernetes. Благодаря предоставляемой информации появляется возможность отслеживать бесперебойную работу своих сервисов и управлять их безопасностью, не замедляя производственный цикл.
С технической точки зрения, Luntry представляет собой набор контейнеров, оформленных в Kubernetes-ресурсы. Решение представляет из себя систему сенсоров, поставляемых в виде DaemonSet, которые работают на нодах кластера, собирают информацию и передают ее на бэкенд.
Сенсор не может навредить системе — Luntry является read-only системой. Это означает, что платформа не записывает, не создает и не вносит какие-либо изменения в конфигурацию кластера. Благодаря технологии eBPF платформа способна быстро и без вреда для системы снимать системные вызовы с нод и использовать их для обучения и формирования модели поведения внутри контейнера.
Для начала необходимо подключить helm репозиторий. Команда для подключения репозитория Luntry выглядит следующим образом:
helm repo add luntry --username %USER% --password @PASSWORD@
%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
Для доступа к веб-интерфейсу необходимо получить IP-адрес компонента luntry-visualizer (компонент веб-интерфейса) при помощи команды:
kubectl get svc luntry-visualizer -n luntry-new
Далее перейти по адресу и порту, указанному в выводе. В данном случае веб-интерфейс luntry расположен по адресу 10.107.214.110 и слушает порт 32235.
При первом входе отобразится главная страница с аутентификацией. Логин и пароль от веб-интерфейса необходимо использовать те, которые были заданы в момент установки при помощи helm чарта (параметры set admin.user и set admin.password):
Cluster Mode — работа с системой на уровне кластера;
Microservice Mode — работа с системой на уровне микросервисов.
При входе в программу открывается главный раздел – Dashboard, который отображает основную информацию о кластере, а также информацию о политиках кластера и аномалиях (подробнее о том, что такое аномалия будет описано далее). В разделе System отображается количество кластеров, нод, установленных сенсоров, количество namespace, workloads и количество образов.
Далее рассмотрим основные разделы Luntry:
Anomalies отображает матрицу аномалий.
Luntry позволяет создавать автоматически обученные политики, с помощью которых можно находить аномалии, связанные с процессами, работой с файлами и сетью.
Аномалия — это действие, которое контейнер на совершал во время обучения\валидации политики.
Матрица аномалий показывает количество аномалий каждого типа:
Process — аномалии, связанные с процессами;
File — аномалии, связанные с файловыми операциями;
Network — аномалии, связанные с сетевым взаимодействием.
Infrastructure отображает более подробную информацию о кластере Kubernetes и нодах кластера:
Kubernetes Map отображает сетевое взаимодействие между Workloads компонентами.
При открытии данного раздела появляется меню с фильтрами, в котором можно выбрать namespace, временной промежуток, за который необходимо отобразить события, а также выбрать links – типы связей. Связи делятся на следующие категории:
• All — все типы связей;
• Internet — связи с сущностями в сети Internet;
• Aliases — связи с сущностями, заданными в системе администратором;
• Namespaces — связи с сущностями из других namespaces, не выбранных в фильтре;
• Localhost — взаимодействие по localhost;
Kubernetes network отображает сетевое взаимодействие между различными компонентами кластера.
Каждый компонент оформлен соответствующим образом. Прямоугольные блоки — это Namespaces. Каждый узел — это определённый Kubernetes ресурс со своей соответствующей иконкой. При этом показывается родитель Pod’ов, а не они сами (Pods может быть 10-100).
Связи между узлами — это либо фактическое хождение трафика (сплошная линия), либо логическая связь между ресурсами (пунктирная линия).
Runtime Policy отображает список политик для образов контейнеров в соответствующих Kubernetes ресурсах с учетом их разновидности.
Anomalies отображает список аномалий, обнаруженных в кластере.
Если открыть аномалию, то отобразится вся подробная информация о выбранной аномалии, включая ее график, на котором отображаются действия, выполненные на хосте (набор команд), а также дата и время выполнения действий, которые привели к созданию аномалии:
В разделе RBAC (расшифровывается как Role-based access control и представляет собой систему распределения прав доступа к различным объектам в кластере Kubernetes) происходит работа с субъектами (Service Accounts, Users, Groups), правами и ролями RBAC.
В разделе Images отображается список образов контейнеров. Число рядом с именем образа обозначает, в каком количестве данный образ в текущий момент времени используется. С помощью раскрывающихся элементов можно просмотреть детали для каждого образа.
Переключатель Only Used Images позволяет отображать в списке только активные образы (образы, которые сейчас используются тем или иным контейнером).
Подводя итоги, можно сказать что Luntry отлично подойдет в качестве решения для обеспечения безопасности кластеров Kubernetes, а также микросервисов. Благодаря обширному набору функций, Luntry также можно использовать как систему мониторинга за кластером Kubernetes. Кроме того, одним из главных преимуществ Luntry является отечественная разработка, что важно в текущих реалиях импортозамещения.
habr.com
Luntry относится к классу Observability решений. Под Observability подразумевается показатель того, насколько эффективно можно определить внутреннее состояние системы по ее выходным данным.
Основная цель Luntry заключается в повышении видимости происходящего в приложениях, запущенных в кластере Kubernetes. Благодаря предоставляемой информации появляется возможность отслеживать бесперебойную работу своих сервисов и управлять их безопасностью, не замедляя производственный цикл.
С технической точки зрения, Luntry представляет собой набор контейнеров, оформленных в Kubernetes-ресурсы. Решение представляет из себя систему сенсоров, поставляемых в виде DaemonSet, которые работают на нодах кластера, собирают информацию и передают ее на бэкенд.
Сенсор не может навредить системе — Luntry является read-only системой. Это означает, что платформа не записывает, не создает и не вносит какие-либо изменения в конфигурацию кластера. Благодаря технологии eBPF платформа способна быстро и без вреда для системы снимать системные вызовы с нод и использовать их для обучения и формирования модели поведения внутри контейнера.
Установка Luntry
Установить Luntry можно несколькими способами:- При помощи helm репозитория;
- Установить локально. Данный способ используется в случае, если невозможно использовать удаленный helm репозиторий.
Для начала необходимо подключить helm репозиторий. Команда для подключения репозитория Luntry выглядит следующим образом:
helm repo add luntry --username %USER% --password @PASSWORD@

%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

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

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

Обзор программы
Luntry позволяет работать с системой в следующих режимах:Cluster Mode — работа с системой на уровне кластера;
Microservice Mode — работа с системой на уровне микросервисов.
При входе в программу открывается главный раздел – Dashboard, который отображает основную информацию о кластере, а также информацию о политиках кластера и аномалиях (подробнее о том, что такое аномалия будет описано далее). В разделе System отображается количество кластеров, нод, установленных сенсоров, количество namespace, workloads и количество образов.
Далее рассмотрим основные разделы Luntry:
- Policies
- Anomalies
- Infrastructure
- Kubernetes Map
- Kubernetes network
- Runtime Policy
- Anomalies
- RBAC

Anomalies отображает матрицу аномалий.
Luntry позволяет создавать автоматически обученные политики, с помощью которых можно находить аномалии, связанные с процессами, работой с файлами и сетью.
Аномалия — это действие, которое контейнер на совершал во время обучения\валидации политики.
Матрица аномалий показывает количество аномалий каждого типа:
Process — аномалии, связанные с процессами;
File — аномалии, связанные с файловыми операциями;
Network — аномалии, связанные с сетевым взаимодействием.
Infrastructure отображает более подробную информацию о кластере Kubernetes и нодах кластера:

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

При открытии данного раздела появляется меню с фильтрами, в котором можно выбрать namespace, временной промежуток, за который необходимо отобразить события, а также выбрать links – типы связей. Связи делятся на следующие категории:
• All — все типы связей;
• Internet — связи с сущностями в сети Internet;
• Aliases — связи с сущностями, заданными в системе администратором;
• Namespaces — связи с сущностями из других namespaces, не выбранных в фильтре;
• Localhost — взаимодействие по localhost;
Kubernetes network отображает сетевое взаимодействие между различными компонентами кластера.

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

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

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

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

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

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

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