Kubestriker выполняет многочисленные углубленные проверки инфраструктуры Kubernetes, чтобы выявить неправильные конфигурации безопасности и проблемы, с которыми инженеры/разработчики DevOps могут столкнуться при использовании Kubernetes, особенно в производственной среде и в больших масштабах.

kubestriker не зависит от платформы и одинаково хорошо работает на многих платформах, таких как автономные k8s, Amazon EKS, Azure AKS, Google GKE и т.д.

Установка Kubestriker

Чтобы установить этот инструмент или клонировать и запустить это приложение, на вашем компьютере должны быть установлены Git, python3 и pip. Рекомендуется установить этот инструмент в виртуальной среде.

Создать виртуальную среду Python

1
$ python3 -m venv env

Активировать виртуальную среду Python

1
$ source env/bin/activate

Клонировать этот репозиторий

1
$ git clone https://github.com/vchinnipilli/kubestriker.git

Зайти в репозиторий

1
$ cd kubestriker

Установить зависимости

1
$ pip install -r requirements.txt

В случае появления ошибок в быстром наборе инструментов или в меню выбора

1
2
$ pip install prompt-toolkit==1.0.15 
$ pip install -r requirements.txt

Готовимся к Kubestriker

1
$ python -m kubestriker

Результат будет сгенерирован в текущем рабочем каталоге с именем цели

Установить с помощью pip

Чтобы установить и запустить это приложение, на вашем компьютере должен быть установлен pip.

Создать виртуальную среду Python

1
$ python3 -m venv env

Активировать виртуальную среду Python

1
$ source env/bin/activate

Установить с помощью pip

1
$ pip install kubestriker

В случае появления ошибок в быстром наборе инструментов или в меню выбора

1
2
$ pip install prompt-toolkit==1.0.15 
$ pip install kubestriker

Готовимся к Kubestriker

1
$ python -m kubestriker

Результат будет сгенерирован в текущем рабочем каталоге с именем цели

Как раскрутить контейнер kubestriker

Используйте эту ссылку, чтобы просмотреть последние выпуски контейнера Kubestriker

Вращение контейнера kubestriker

1
$ docker run -it --rm -v /Users/vasantchinnipilli/.kube/config:/root/.kube/config -v "$(pwd)":/kubestriker --name kubestriker cloudsecguy/kubestriker:v1.0.1

Замените пользователя vasantchinnipilli выше на свое имя пользователя или абсолютный путь к файлу конфигурации kube.

1
$ docker run -it --rm -v /Users/<yourusername>/.kube/config:/root/.kube/config -v "$(pwd)":/kubestriker --name kubestriker cloudsecguy/kubestriker:v1.0.1

Готовимся к Kubestriker

1
$ python -m kubestriker

Результат будет сгенерирован в текущем рабочем каталоге с именем цели

Текущие возможности

  • Сканирует инфраструктуру Kubernetes, управляемую автономным и облачным провайдером
  • На этапе разведки проверяется наличие различных сервисов или открытых портов
  • Выполняет автоматическое сканирование, если включены небезопасные службы, службы чтения-записи или только для чтения.
  • Выполняет как сканирование с аутентификацией, так и сканирование без аутентификации
  • Сканирует широкий спектр неверных конфигураций IAM в кластере
  • Сканирует широкий спектр неправильно настроенных контейнеров
  • Сканирует на наличие множества неправильно настроенных политик безопасности подов
  • Выполняет сканирование на наличие широкого спектра неверно настроенных сетевых политик
  • Сканирует привилегии субъекта в кластере
  • Запускает команды в контейнерах и передает обратно вывод
  • Предоставляет конечные точки неправильно настроенных служб
  • Предоставляет сведения о возможном повышении привилегий
  • Предоставляет подробный отчет с подробным объяснением

Будущие улучшения

  • Автоматизированная эксплуатация на основе выявленных проблем
  • удобство автоматизации api и cicd
  • Достойный интерфейс, облегчающий жизнь

Типы сканирования

Аутентифицированное сканирование

Такая проверка предполагает, что пользователь будет иметь как минимум права только для чтения и предоставит токен во время сканирования.

Сканирование без аутентификации

Сканирование без аутентификации будет успешным, если в целевом кластере разрешен анонимный доступ.

Выявление открытого небезопасного порта на главной ноде Kubernetes

Определение рабочего узла с открытыми портами kubelet для чтения и записи и только для чтения