Kubernetes
Данная инструкция описывает настройку сбора событий c узла Kubernetes и их отправки в систему R-Vision SIEM.
Настройка Kubernetes
Приведенные консольные команды выполняются на РЕД ОС. Если вы используете другой дистрибутив Linux, рекомендуется обратиться к официальной документации вашего дистрибутива. |
Настройка сервиса Vector
Чтобы настроить сбор логов, выполните следующие шаги:
-
Подключитесь по ssh к мастер-машине вашего кластера.
-
Запросите список всех нод вашего кластера с помощью команды
kubectl get nodes
. -
Установите на каждом узле Kubernetes сервис Vector командой:
sudo dnf install epel-release sudo dnf install vector
-
Замените команду запуска в файле
/usr/lib/systemd/system/vector.service
на следующую:[Unit] Description=Vector Documentation=https://vector.dev After=network-online.target Requires=network-online.target [Service] User=<user> Group=<user> ExecStartPre=/usr/bin/vector validate ExecStart=/usr/bin/vector -c /etc/vector/vector.toml ExecReload=/usr/bin/vector validate ExecReload=/bin/kill -HUP $MAINPID Restart=always AmbientCapabilities=CAP_NET_BIND_SERVICE EnvironmentFile=-/etc/default/vector #Since systemd 229, should be in Unit but in order to support systemd <229, #it is also supported to have it here. StartLimitInterval=10 StartLimitBurst=5 [Install] WantedBy=multi-user.target
Здесь
<user>
— имя пользователя, от имени которого будет работать сервис.Убедитесь, что учетная запись пользователя <user> имеет права на чтение (Read) и запись (Write) для следующих директорий:
-
Конфигурационные директории:
/etc/vector/
,/etc/kubernetes/
. -
Директории хранения файлов и логов:
/var/log/kubernetes/
. -
Директории исполняемых файлов:
/usr/sbin/
,/usr/bin/
.По умолчанию данные права доступны только для записи root.
-
-
Перезагрузите конфигурацию командой:
sudo systemctl daemon-reload
-
Создайте файл
/etc/vector/vector.toml
. -
Добавьте в созданный файл конфигурацию следующего вида:
# Источник событий kubernetes-hardware [sources.kubernetes_logs] type = "kubernetes_logs" self_node_name = "<node_name>" # Источник событий kube-api [sources.audit_policy_log] type = "file" include = [ "/var/log/kubernetes/audit.log" ] # Цель для отправки логов [sinks.vector_siem] type = "vector" inputs = ["kubernetes_logs", "audit_policy_log"] address = "<address>:<port>"
Здесь:
-
<node_name>
— имя узла Kubernetes. -
<address>
— IP-адрес сервера SIEM. -
<port>
— порт, на который будут отправляться события.
-
-
Включите новый сервис командой:
sudo systemctl enable vector --now
-
Проверьте отсутствие ошибок в сервисе Vector командой:
sudo systemctl status vector.service
-
Проверьте правильность конфигурации следующей командой:
vector validate
В случае успешного выполнения система выведет сообщение следующего вида:
√ Loaded ["/etc/vector/vector.toml"] √ Component configuration √ Health check "<vector_siem>" ---------------------------------- Validated
Настройка KubeApi
Для настройки и контроля событий, собираемых сервисом Kubernetes, выполните следующие шаги:
-
Загрузите политику мониторинга kubernetes по ссылке.
-
Разместите ее в директории
/etc/kubernetes/audit-policy.yaml
. -
Откройте файл
/etc/kubernetes/manifests/kube-apiserver.yaml
для редактирования.-
Добавьте в секцию
spec.containers.command
следующие строки:- --audit-log-path=/var/log/kubernetes/audit.log - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
Конфигурационный файл примет вид:
spec: containers: - command: - kube-apiserver - --advertise-address=<your-master-node-ip> - --allow-privileged=true - --anonymous-auth=True ...
Здесь
<your-master-node-ip>
— адрес доступной мастер-ноды вашего кластера. -
Добавьте два дополнительных пространства в секцию
spec.containers.volumeMounts
:volumeMounts: - mountPath: /etc/kubernetes/audit-policy.yaml name: audit-policy readOnly: true - mountPath: /var/log/kube-audit name: audit-logs readOnly: false ...
-
Добавьте два дополнительных пространства в секцию
spec.containers.volumes
:- hostPath: path: /etc/kubernetes/audit-policy.yaml type: File name: audit-policy - hostPath: path: /var/log/kube-audit type: DirectoryOrCreate name: audit-logs
-
-
Перезагрузите сервис kubelet на вашей ноде. Для этого используйте команду:
systemctl restart kubelet
Это необязательное действие, однако kubernetes не поддерживает функции проверки конфигурации для своих kube-api подов. -
После перезагрузки сервисов выполните команду
kubectl get nodes
. В случае успешного применения политики вы увидите список ваших нод. В случае наличия ошибок будут выведены ошибки видаTimeout exceeded
.
При использовании версий kubernetes 1.26.3—1.28.1 необходимо, чтобы у пользователя root были следующие права:
|
Настройка в R-Vision SIEM
Для настройки сбора и нормализации событий источника в R-Vision SIEM выполните следующие шаги:
-
В интерфейсе R-Vision SIEM создайте новый конвейер в коллекторе.
-
Добавьте на конвейер элемент Точка входа со следующими параметрами:
-
Название: введите название точки входа.
-
Тип точки входа: выберите вариант Vector.
-
Порт точки входа: введите значение, указанное в конфигурации сервиса Vector.
-
-
Добавьте VRL-трансформацию:
.dproduct = "kubernetes"
-
Соедините добавленную точку входа и VRL-трансформацию.
-
Добавьте на конвейер элемент Нормализатор с правилами Kubernetes (идентификатор правила: RV-N-53) и Kubernetes (идентификатор правила: RV-N-54).
-
Соедините нормализатор с VRL-трансформацией.
-
Добавьте на конвейер элемент Конечная точка типа Хранилище событий.
-
Если необходимо отправить события на другой конвейер для дальнейшей обработки, добавьте в коллектор шину, настроенную на получение.
-
Соедините конечную точку и шину с нормализатором.
-
Сохраните и установите конфигурацию конвейера.
Пример конфигурации конвейера:
После настройки передачи событий, если настройка выполнена корректно, в хранилище начнут поступать события Kubernetes.
Найти события Kubernetes в хранилище можно по следующему фильтру:
|