Kubernetes Hardening
Reading time: 9 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Інструменти для аналізу кластера
**Steampipe - Kubernetes Compliance
Це декілька перевірок відповідності для кластера Kubernetes. Він включає підтримку CIS, Національного агентства безпеки (NSA) та Технічного звіту з кібербезпеки Агентства з кібербезпеки та інфраструктурної безпеки (CISA) для посилення безпеки Kubernetes.
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes
# Start the service
steampipe service start
# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance
# Run the module
powerpipe server
Kubescape
Kubescape - це інструмент з відкритим кодом для K8s, який надає єдину панель управління для багатохмарного K8s, включаючи аналіз ризиків, відповідність безпеці, візуалізацію RBAC та сканування вразливостей зображень. Kubescape сканує кластери K8s, файли YAML та HELM-діаграми, виявляючи неправильні налаштування відповідно до кількох фреймворків (таких як NSA-CISA, MITRE ATT&CK®), вразливості програмного забезпечення та порушення RBAC (контроль доступу на основі ролей) на ранніх етапах CI/CD, миттєво розраховує бал ризику та показує тенденції ризику з часом.
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
Popeye
Popeye - це утиліта, яка сканує живий кластер Kubernetes і повідомляє про потенційні проблеми з розгорнутими ресурсами та конфігураціями. Вона очищає ваш кластер на основі того, що розгорнуто, а не на основі того, що знаходиться на диску. Скануючи ваш кластер, вона виявляє неправильні конфігурації та допомагає вам забезпечити дотримання найкращих практик, запобігаючи майбутнім проблемам. Вона спрямована на зменшення когнітивного _over_load, з яким стикаються при управлінні кластером Kubernetes у реальних умовах. Крім того, якщо ваш кластер використовує metric-server, він повідомляє про потенційні перевищення/недостатнє виділення ресурсів і намагається попередити вас, якщо ваш кластер вичерпає потужності.
Kube-bench
Інструмент kube-bench - це інструмент, який перевіряє, чи безпечно розгорнуто Kubernetes, виконуючи перевірки, задокументовані в CIS Kubernetes Benchmark.
Ви можете вибрати:
- запустити kube-bench зсередини контейнера (ділячи простір PID з хостом)
- запустити контейнер, який встановлює kube-bench на хост, а потім запустити kube-bench безпосередньо на хості
- встановити останні бінарні файли з Releases page,
- скомпілювати його з виходу.
Kubeaudit
[DEPRECATED] Інструмент kubeaudit - це інструмент командного рядка та пакет Go для аудиту кластерів Kubernetes з різних питань безпеки.
Kubeaudit може виявити, чи працює він у контейнері в кластері. Якщо так, він спробує провести аудит усіх ресурсів Kubernetes у цьому кластері:
kubeaudit all
Цей інструмент також має аргумент autofix
для автоматичного виправлення виявлених проблем.
Kube-hunter
[DEPRECATED] Інструмент kube-hunter шукає вразливості в безпеці в кластерах Kubernetes. Інструмент був розроблений для підвищення обізнаності та видимості проблем безпеки в середовищах Kubernetes.
kube-hunter --remote some.node.com
Trivy
Trivy має сканери, які шукають проблеми безпеки, та цілі, де можна знайти ці проблеми:
- Контейнерний образ
- Файлова система
- Git репозиторій (віддалений)
- Образ віртуальної машини
- Kubernetes
Kubei
[Схоже, що не підтримується]
Kubei — це інструмент для сканування вразливостей та CIS Docker benchmark, який дозволяє користувачам отримати точну та миттєву оцінку ризиків їхніх кластерів kubernetes. Kubei сканує всі образи, які використовуються в кластері Kubernetes, включаючи образи додатків та системних подів.
KubiScan
KubiScan — це інструмент для сканування кластера Kubernetes на наявність ризикованих дозволів у моделі авторизації на основі ролей (RBAC) Kubernetes.
Managed Kubernetes Auditing Toolkit
Mkat — це інструмент, створений для тестування інших типів перевірок високого ризику в порівнянні з іншими інструментами. Він має 3 різні режими:
find-role-relationships
: Який знайде, які ролі AWS працюють в яких подахfind-secrets
: Який намагається виявити секрети в ресурсах K8s, таких як Pods, ConfigMaps та Secrets.test-imds-access
: Який спробує запустити поди та спробувати отримати доступ до метаданих v1 та v2. УВАГА: Це запустить под у кластері, будьте дуже обережні, оскільки ви, можливо, не хочете цього робити!
Аудит IaC коду
KICS
KICS знаходить вразливості безпеки, проблеми відповідності та неправильні конфігурації інфраструктури в наступних рішеннях Інфраструктури як Код: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM та специфікації OpenAPI 3.0
Checkov
Checkov — це інструмент статичного аналізу коду для інфраструктури як коду.
Він сканує хмарну інфраструктуру, що надається за допомогою Terraform, плану Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless або ARM Templates та виявляє проблеми з безпекою та відповідністю, використовуючи графове сканування.
Kube-score
kube-score — це інструмент, який виконує статичний аналіз коду ваших визначень об'єктів Kubernetes.
Щоб встановити:
Дистрибуція | Команда / Посилання |
---|---|
Попередньо зібрані бінарні файли для macOS, Linux та Windows | GitHub releases |
Docker | docker pull zegl/kube-score (Docker Hub) |
Homebrew (macOS та Linux) | brew install kube-score |
Krew (macOS та Linux) | kubectl krew install score |
Поради
Kubernetes PodSecurityContext та SecurityContext
Ви можете налаштувати контекст безпеки подів (з PodSecurityContext) та контекст безпеки контейнерів, які будуть запущені (з SecurityContext). Для отримання додаткової інформації читайте:
Ускладнення API Kubernetes
Дуже важливо захистити доступ до Kubernetes Api Server, оскільки зловмисник з достатніми привілеями може зловживати ним і завдати шкоди середовищу різними способами.
Важливо забезпечити як доступ (білі списки джерел для доступу до API Server та заборонити будь-яке інше з'єднання), так і автентифікацію (дотримуючись принципу найменших привілеїв). І, безумовно, ніколи не дозволяйте анонімні запити.
Загальний процес запиту:
Користувач або K8s ServiceAccount –> Автентифікація –> Авторизація –> Контроль доступу.
Поради:
- Закрийте порти.
- Уникайте анонімного доступу.
- NodeRestriction; Немає доступу з певних вузлів до API.
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
- В основному забороняє kubelet додавати/видаляти/оновлювати мітки з префіксом node-restriction.kubernetes.io/. Цей префікс мітки зарезервований для адміністраторів для маркування своїх об'єктів Node для цілей ізоляції навантаження, і kubelet не буде дозволено змінювати мітки з цим префіксом.
- А також дозволяє kubelet додавати/видаляти/оновлювати ці мітки та префікси міток.
- Забезпечте з мітками безпечну ізоляцію навантаження.
- Уникайте доступу до API для певних подів.
- Уникайте експозиції ApiServer в Інтернеті.
- Уникайте несанкціонованого доступу RBAC.
- Порт ApiServer з брандмауером та білим списком IP.
Ускладнення SecurityContext
За замовчуванням користувач root буде використовуватися, коли под запускається, якщо не вказано іншого користувача. Ви можете запустити свій додаток у більш безпечному контексті, використовуючи шаблон, подібний до наступного:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- https://kubernetes.io/docs/concepts/policy/pod-security-policy/
Загальне зміцнення
Вам слід оновлювати ваше середовище Kubernetes так часто, як це необхідно, щоб мати:
- Актуальні залежності.
- Виправлення помилок та безпеки.
Цикли випуску: Кожні 3 місяці виходить новий незначний випуск -- 1.20.3 = 1(Основний).20(Неважливий).3(патч)
Найкращий спосіб оновити кластер Kubernetes це (з тут):
- Оновіть компоненти Master Node, дотримуючись цієї послідовності:
- etcd (всі екземпляри).
- kube-apiserver (всі хости контрольної площини).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, якщо ви його використовуєте.
- Оновіть компоненти Worker Node, такі як kube-proxy, kubelet.
Моніторинг та безпека Kubernetes:
- Kyverno Policy Engine
- Cilium Tetragon - eBPF-базована безпека, спостереження та виконання в реальному часі
- Політики мережевої безпеки
- Falco - Моніторинг та виявлення безпеки в реальному часі
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.