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 в хранилище можно по следующему фильтру:
|
Была ли полезна эта страница?
