From a3d7f807f43432733b00bac490cd955dea99dfe9 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 17 Nov 2025 12:19:29 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/kubernetes-security/kubernetes-har --- .../kubernetes-hardening/README.md | 176 +++++++++++------- 1 file changed, 111 insertions(+), 65 deletions(-) diff --git a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md index 1e3b232f5..d36f2bee5 100644 --- a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md +++ b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/README.md @@ -4,9 +4,9 @@ ## Інструменти для аналізу кластера -### [**Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance) +### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance) -Це **декілька перевірок відповідності для кластера Kubernetes**. Він включає підтримку CIS, Національного агентства безпеки (NSA) та Технічного звіту з кібербезпеки Агентства з кібербезпеки та інфраструктурної безпеки (CISA) для посилення безпеки Kubernetes. +Він виконує **кілька перевірок відповідності у кластері Kubernetes**. Включає підтримку для CIS, National Security Agency (NSA) та Cybersecurity and Infrastructure Security Agency (CISA) — технічного звіту з кібербезпеки для зміцнення безпеки Kubernetes. ```bash # Install Steampipe brew install turbot/tap/powerpipe @@ -27,130 +27,176 @@ powerpipe server ``` ### [**Kubescape**](https://github.com/armosec/kubescape) -[**Kubescape**](https://github.com/armosec/kubescape) - це інструмент з відкритим кодом для K8s, який надає єдину панель управління для багатохмарного K8s, включаючи аналіз ризиків, відповідність безпеці, візуалізацію RBAC та сканування вразливостей зображень. Kubescape сканує кластери K8s, файли YAML та HELM-діаграми, виявляючи неправильні налаштування відповідно до кількох фреймворків (таких як [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo), [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), вразливості програмного забезпечення та порушення RBAC (контроль доступу на основі ролей) на ранніх етапах CI/CD, миттєво розраховує бал ризику та показує тенденції ризику з часом. +[**Kubescape**](https://github.com/armosec/kubescape) — це інструмент з відкритим кодом для K8s, який надає єдину панель керування для multi-cloud K8s, включаючи аналіз ризиків, перевірку відповідності вимогам безпеки, візуалізатор RBAC та сканування вразливостей образів. Kubescape сканує K8s кластери, YAML файли та HELM charts, виявляє неправильні конфігурації відповідно до кількох фреймворків (such as the [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), вразливості програмного забезпечення та порушення RBAC (role-based-access-control) на ранніх етапах конвеєра CI/CD, миттєво обчислює оцінку ризику та показує тенденції ризику з часом. ```bash curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash kubescape scan --verbose ``` ### [**Popeye**](https://github.com/derailed/popeye) -[**Popeye**](https://github.com/derailed/popeye) - це утиліта, яка сканує живий кластер Kubernetes і **повідомляє про потенційні проблеми з розгорнутими ресурсами та конфігураціями**. Вона очищає ваш кластер на основі того, що розгорнуто, а не на основі того, що знаходиться на диску. Скануючи ваш кластер, вона виявляє неправильні конфігурації та допомагає вам забезпечити дотримання найкращих практик, запобігаючи майбутнім проблемам. Вона спрямована на зменшення когнітивного \_over_load, з яким стикаються при управлінні кластером Kubernetes у реальних умовах. Крім того, якщо ваш кластер використовує metric-server, він повідомляє про потенційні перевищення/недостатнє виділення ресурсів і намагається попередити вас, якщо ваш кластер вичерпає потужності. +[**Popeye**](https://github.com/derailed/popeye) — утиліта, яка сканує живий Kubernetes cluster і **повідомляє про потенційні проблеми з розгорнутими ресурсами та конфігураціями**. Вона очищує ваш кластер, орієнтуючись на те, що розгорнуто, а не на те, що лежить на диску. Скануючи кластер, вона виявляє некоректні налаштування і допомагає забезпечити дотримання найкращих практик, запобігаючи майбутнім проблемам. Мета — зменшити когнітивне \_over_load, з яким стикаються при роботі з Kubernetes у реальному середовищі. Крім того, якщо ваш кластер використовує metric-server, вона повідомляє про можливе over/under виділення ресурсів і намагається попередити вас, якщо в кластері закінчується capacity. ### [**Kube-bench**](https://github.com/aquasecurity/kube-bench) -Інструмент [**kube-bench**](https://github.com/aquasecurity/kube-bench) - це інструмент, який перевіряє, чи безпечно розгорнуто Kubernetes, виконуючи перевірки, задокументовані в [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/).\ -Ви можете вибрати: +The tool [**kube-bench**](https://github.com/aquasecurity/kube-bench) is a tool that checks whether Kubernetes is deployed securely by running the checks documented in the [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/).\ +You can choose to: -- запустити kube-bench зсередини контейнера (ділячи простір PID з хостом) -- запустити контейнер, який встановлює kube-bench на хост, а потім запустити kube-bench безпосередньо на хості -- встановити останні бінарні файли з [Releases page](https://github.com/aquasecurity/kube-bench/releases), -- скомпілювати його з виходу. +- run kube-bench from inside a container (sharing PID namespace with the host) +- run a container that installs kube-bench on the host, and then run kube-bench directly on the host +- install the latest binaries from the [Releases page](https://github.com/aquasecurity/kube-bench/releases), +- compile it from source. ### [**Kubeaudit**](https://github.com/Shopify/kubeaudit) -**[DEPRECATED]** Інструмент [**kubeaudit**](https://github.com/Shopify/kubeaudit) - це інструмент командного рядка та пакет Go для **аудиту кластерів Kubernetes** з різних питань безпеки. +**[DEPRECATED]** The tool [**kubeaudit**](https://github.com/Shopify/kubeaudit) is a command line tool and a Go package to **audit Kubernetes clusters** for various different security concerns. -Kubeaudit може виявити, чи працює він у контейнері в кластері. Якщо так, він спробує провести аудит усіх ресурсів Kubernetes у цьому кластері: +Kubeaudit can detect if it is running within a container in a cluster. If so, it will try to audit all Kubernetes resources in that cluster: ``` kubeaudit all ``` -Цей інструмент також має аргумент `autofix` для **автоматичного виправлення виявлених проблем.** +Цей інструмент також має аргумент `autofix`, щоб **автоматично виправляти виявлені проблеми.** ### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter) -**[DEPRECATED]** Інструмент [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) шукає вразливості в безпеці в кластерах Kubernetes. Інструмент був розроблений для підвищення обізнаності та видимості проблем безпеки в середовищах Kubernetes. +**[DEPRECATED]** Інструмент [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) виявляє вразливості безпеки в кластерах Kubernetes. Інструмент був розроблений, щоб підвищити обізнаність та видимість проблем безпеки в середовищах Kubernetes. ```bash kube-hunter --remote some.node.com ``` ### [Trivy](https://github.com/aquasecurity/trivy) -[Trivy](https://github.com/aquasecurity/trivy) має сканери, які шукають проблеми безпеки, та цілі, де можна знайти ці проблеми: +[Trivy](https://github.com/aquasecurity/trivy) має сканери, які шукають проблеми з безпекою, та цілі, у яких вони можуть знайти ці проблеми: -- Контейнерний образ -- Файлова система -- Git репозиторій (віддалений) -- Образ віртуальної машини +- образ контейнера +- файлова система +- Git Repository (remote) +- образ віртуальної машини - Kubernetes ### [**Kubei**](https://github.com/Erezf-p/kubei) -**[Схоже, що не підтримується]** +**[Схоже, не підтримується]** -[**Kubei**](https://github.com/Erezf-p/kubei) — це інструмент для сканування вразливостей та CIS Docker benchmark, який дозволяє користувачам отримати точну та миттєву оцінку ризиків їхніх кластерів kubernetes. Kubei сканує всі образи, які використовуються в кластері Kubernetes, включаючи образи додатків та системних подів. +[**Kubei**](https://github.com/Erezf-p/kubei) — інструмент сканування вразливостей і для перевірки за CIS Docker benchmark, який дозволяє користувачам отримати точну та негайну оцінку ризику їхніх Kubernetes кластерів. Kubei сканує всі образи, які використовуються в Kubernetes кластері, включно з образами application pods і system pods. ### [**KubiScan**](https://github.com/cyberark/KubiScan) -[**KubiScan**](https://github.com/cyberark/KubiScan) — це інструмент для сканування кластера Kubernetes на наявність ризикованих дозволів у моделі авторизації на основі ролей (RBAC) Kubernetes. +[**KubiScan**](https://github.com/cyberark/KubiScan) — інструмент для сканування Kubernetes кластера на наявність ризикових дозволів у моделі авторизації Role-based access control (RBAC). ### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) -[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) — це інструмент, створений для тестування інших типів перевірок високого ризику в порівнянні з іншими інструментами. Він має 3 різні режими: +[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) — інструмент, створений для виконання інших типів високоризикових перевірок порівняно з іншими інструментами. Він має 3 основні режими: -- **`find-role-relationships`**: Який знайде, які ролі AWS працюють в яких подах -- **`find-secrets`**: Який намагається виявити секрети в ресурсах K8s, таких як Pods, ConfigMaps та Secrets. -- **`test-imds-access`**: Який спробує запустити поди та спробувати отримати доступ до метаданих v1 та v2. УВАГА: Це запустить под у кластері, будьте дуже обережні, оскільки ви, можливо, не хочете цього робити! +- **`find-role-relationships`**: який знайде, які AWS ролі виконуються в яких подах +- **`find-secrets`**: який намагається ідентифікувати секрети в K8s ресурсах, таких як Pods, ConfigMaps та Secrets. +- **`test-imds-access`**: який спробує запустити поди й отримати доступ до metadata v1 та v2. УВАГА: це запустить под у кластері, будьте дуже обережні, бо можливо ви не захочете цього робити! -## **Аудит IaC коду** +## **Audit IaC Code** ### [**KICS**](https://github.com/Checkmarx/kics) -[**KICS**](https://github.com/Checkmarx/kics) знаходить **вразливості безпеки**, проблеми відповідності та неправильні конфігурації інфраструктури в наступних **рішеннях Інфраструктури як Код**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM та специфікації OpenAPI 3.0 +[**KICS**](https://github.com/Checkmarx/kics) знаходить **вразливості безпеки**, проблеми відповідності та невірні налаштування інфраструктури у наступних **Infrastructure as Code рішеннях**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM та OpenAPI 3.0 specifications ### [**Checkov**](https://github.com/bridgecrewio/checkov) -[**Checkov**](https://github.com/bridgecrewio/checkov) — це інструмент статичного аналізу коду для інфраструктури як коду. +[**Checkov**](https://github.com/bridgecrewio/checkov) — інструмент статичного аналізу коду для infrastructure-as-code. -Він сканує хмарну інфраструктуру, що надається за допомогою [Terraform](https://terraform.io), плану Terraform, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) або [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) та виявляє проблеми з безпекою та відповідністю, використовуючи графове сканування. +Він сканує хмарну інфраструктуру, забезпечену за допомогою [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) або [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) і виявляє проблеми безпеки та відповідності, використовуючи граф-орієнтоване сканування. ### [**Kube-score**](https://github.com/zegl/kube-score) -[**kube-score**](https://github.com/zegl/kube-score) — це інструмент, який виконує статичний аналіз коду ваших визначень об'єктів Kubernetes. +[**kube-score**](https://github.com/zegl/kube-score) — інструмент, який виконує статичний аналіз ваших Kubernetes object definitions. -Щоб встановити: +To install: -| Дистрибуція | Команда / Посилання | -| --------------------------------------------------- | --------------------------------------------------------------------------------------- | -| Попередньо зібрані бінарні файли для macOS, Linux та Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) | -| Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) | -| Homebrew (macOS та Linux) | `brew install kube-score` | -| [Krew](https://krew.sigs.k8s.io/) (macOS та Linux) | `kubectl krew install score` | +| Розподіл | Команда / Посилання | +| -------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| Pre-built binaries for macOS, Linux, and Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) | +| Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) | +| Homebrew (macOS and Linux) | `brew install kube-score` | +| [Krew](https://krew.sigs.k8s.io/) (macOS and Linux) | `kubectl krew install score` | +## Tools to analyze YAML files & Helm Charts + +### [**Kube-linter**](https://github.com/stackrox/kube-linter) +```bash +# Install Kube-linter +brew install kube-linter + +# Run Kube-linter +## lint ./path/to/yaml/or/chart +``` +### [Checkov](https://github.com/bridgecrewio/checkov) +```bash +# Install Checkov +pip install checkov + +# Run Checkov +checkov -d ./path/to/yaml/or/chart +``` +### [kube‑score](https://github.com/zegl/kube-score) +```bash +# Install kube-score +brew install kube-score + +# Run kube-score +kube-score score ./path/to/yaml +# or +helm template chart /path/to/chart | kube-score score - +# or if the chart needs some values +helm template chart /path/to/chart \ +--set 'config.urls[0]=https://dummy.backend.internal' \ +| kube-score score - +``` +### [Kubesec](https://github.com/controlplaneio/kubesec) +```bash +# Install Kubesec +## Download from https://github.com/controlplaneio/kubesec/releases + +# Run Kubesec in a yaml +kubesec scan ./path/to/yaml +# or +helm template chart /path/to/chart | kubesec scan - +# or if the chart needs some values +helm template chart /path/to/chart \ +--set 'config.urls[0]=https://dummy.backend.internal' \ +| kubesec scan - +``` ## Поради -### Kubernetes PodSecurityContext та SecurityContext +### Kubernetes PodSecurityContext and SecurityContext -Ви можете налаштувати **контекст безпеки подів** (з _PodSecurityContext_) та **контекст безпеки** контейнерів, які будуть запущені (з _SecurityContext_). Для отримання додаткової інформації читайте: +Ви можете налаштувати **контекст безпеки Pods** (через _PodSecurityContext_) та **контекст безпеки контейнерів**, які будуть запускатися (через _SecurityContext_). Для додаткової інформації прочитайте: {{#ref}} kubernetes-securitycontext-s.md {{#endref}} -### Ускладнення API Kubernetes +### Kubernetes API Hardening -Дуже важливо **захистити доступ до Kubernetes Api Server**, оскільки зловмисник з достатніми привілеями може зловживати ним і завдати шкоди середовищу різними способами.\ -Важливо забезпечити як **доступ** (**білі списки** джерел для доступу до API Server та заборонити будь-яке інше з'єднання), так і [**автентифікацію**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (дотримуючись принципу **найменших** **привілеїв**). І, безумовно, **ніколи** **не** **дозволяйте** **анонімні** **запити**. +Дуже важливо **захищати доступ до Kubernetes Api Server**, оскільки зловмисник з достатніми привілеями може зловживати ним і завдати значної шкоди середовищу.\ +Важливо захистити як **доступ** (**whitelist** origins для доступу до API Server і відхиляти будь-які інші з’єднання), так і [**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (дотримуючись принципу **найменших** **привілеїв**). І однозначно **ніколи** **не** **дозволяйте** **anonymous** **requests**. **Загальний процес запиту:**\ -Користувач або K8s ServiceAccount –> Автентифікація –> Авторизація –> Контроль доступу. +Користувач або K8s ServiceAccount –> Аутентифікація –> Авторизація –> Admission Control. **Поради**: - Закрийте порти. -- Уникайте анонімного доступу. -- NodeRestriction; Немає доступу з певних вузлів до API. +- Уникати анонімного доступу. +- NodeRestriction; Заборона доступу з певних вузлів до API. - [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction) -- В основному забороняє kubelet додавати/видаляти/оновлювати мітки з префіксом node-restriction.kubernetes.io/. Цей префікс мітки зарезервований для адміністраторів для маркування своїх об'єктів Node для цілей ізоляції навантаження, і kubelet не буде дозволено змінювати мітки з цим префіксом. -- А також дозволяє kubelet додавати/видаляти/оновлювати ці мітки та префікси міток. -- Забезпечте з мітками безпечну ізоляцію навантаження. -- Уникайте доступу до API для певних подів. -- Уникайте експозиції ApiServer в Інтернеті. -- Уникайте несанкціонованого доступу RBAC. -- Порт ApiServer з брандмауером та білим списком IP. +- По суті, забороняє kubelets додавати/видаляти/оновлювати мітки з префіксом node-restriction.kubernetes.io/. Цей префікс міток резервується для адміністраторів для маркування їхніх об'єктів Node з метою ізоляції робочих навантажень, і kubelets не матимуть права змінювати мітки з цим префіксом. +- А також дозволяє kubelets додавати/видаляти/оновлювати ці мітки та префікси міток. +- Забезпечте безпечну ізоляцію робочих навантажень за допомогою міток. +- Запобігайте доступу певних Pod до API. +- Уникайте виставлення ApiServer в інтернет. +- Уникайте неавторизованого доступу через RBAC. +- Захистіть порт ApiServer за допомогою firewall та IP whitelisting. -### Ускладнення SecurityContext +### SecurityContext Hardening -За замовчуванням користувач root буде використовуватися, коли под запускається, якщо не вказано іншого користувача. Ви можете запустити свій додаток у більш безпечному контексті, використовуючи шаблон, подібний до наступного: +За замовчуванням при запуску Pod буде використовуватись користувач root, якщо не вказано іншого користувача. Ви можете запускати ваш додаток у більш безпечному контексті, використовуючи шаблон, подібний до наступного: ```yaml apiVersion: v1 kind: Pod @@ -179,20 +225,20 @@ allowPrivilegeEscalation: true - [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) - [https://kubernetes.io/docs/concepts/policy/pod-security-policy/](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) -### Загальне зміцнення +### Загальне підсилення безпеки -Вам слід оновлювати ваше середовище Kubernetes так часто, як це необхідно, щоб мати: +Ви повинні оновлювати ваше середовище Kubernetes так часто, як необхідно, щоб мати: -- Актуальні залежності. -- Виправлення помилок та безпеки. +- Оновлені залежності. +- Виправлення помилок та патчі безпеки. -[**Цикли випуску**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Кожні 3 місяці виходить новий незначний випуск -- 1.20.3 = 1(Основний).20(Неважливий).3(патч) +[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Кожні 3 місяці виходить новий мінорний реліз -- 1.20.3 = 1(Major).20(Minor).3(patch) -**Найкращий спосіб оновити кластер Kubernetes це (з** [**тут**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):** +**Найкращий спосіб оновити кластер Kubernetes (з** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):** -- Оновіть компоненти Master Node, дотримуючись цієї послідовності: +- Оновіть компоненти Master Node у такій послідовності: - etcd (всі екземпляри). -- kube-apiserver (всі хости контрольної площини). +- kube-apiserver (усі хости control plane). - kube-controller-manager. - kube-scheduler. - cloud controller manager, якщо ви його використовуєте. @@ -201,8 +247,8 @@ allowPrivilegeEscalation: true ## Моніторинг та безпека Kubernetes: - Kyverno Policy Engine -- Cilium Tetragon - eBPF-базована безпека, спостереження та виконання в реальному часі +- Cilium Tetragon - спостережливість безпеки та runtime-забезпечення на базі eBPF - Політики мережевої безпеки -- Falco - Моніторинг та виявлення безпеки в реальному часі +- Falco - моніторинг безпеки в runtime та виявлення {{#include ../../../banners/hacktricks-training.md}}