Kubernetes Hardening

HackTricksをサポートする

クラスタを分析するためのツール

Kubescapeは、K8sのオープンソースツールで、リスク分析、セキュリティコンプライアンス、RBACビジュアライザー、およびイメージの脆弱性スキャンを提供するマルチクラウドK8sシングルペインオブグラスです。Kubescapeは、K8sクラスタ、YAMLファイル、HELMチャートをスキャンし、複数のフレームワーク(NSA-CISAMITRE ATT&CK®など)に従ってミス構成を検出し、ソフトウェアの脆弱性やRBAC(ロールベースアクセス制御)の違反をCI/CDパイプラインの初期段階で計算し、リスクスコアを即座に表示し、時間の経過とともにリスクトレンドを表示します。

kubescape scan --verbose

ツールkube-benchは、CIS Kubernetes Benchmarkで文書化されたチェックを実行して、Kubernetesがセキュアに展開されているかどうかを確認するツールです。 次の方法で実行できます:

  • ホストとPIDネームスペースを共有するコンテナ内からkube-benchを実行する

  • ホストにkube-benchをインストールするコンテナを実行し、その後ホストでkube-benchを直接実行する

  • リリースページから最新のバイナリをインストールする

  • ソースからコンパイルする。

ツールkubeauditは、さまざまなセキュリティ上の懸念事項に対してKubernetesクラスタを監査するためのコマンドラインツールおよびGoパッケージです。

Kubeauditは、クラスタ内のコンテナで実行されているかどうかを検出できます。その場合、そのクラスタ内のすべてのKubernetesリソースを監査しようとします。

kubeaudit all

このツールには、検出された問題を自動的に修正するための引数 autofix もあります。

ツール kube-hunter は、Kubernetes クラスター内のセキュリティ上の脆弱性を探します。このツールは、Kubernetes 環境におけるセキュリティ問題の認識と可視性を高めるために開発されました。

kube-hunter --remote some.node.com

Kubeiは、ユーザーがkubernetesクラスターの正確で即座のリスク評価を行うことを可能にする脆弱性スキャンおよびCIS Dockerベンチマークツールです。Kubeiは、Kubernetesクラスターで使用されているすべてのイメージをスキャンします。これには、アプリケーションポッドおよびシステムポッドのイメージが含まれます。

KubiScanは、Kubernetesクラスターをスキャンして、Kubernetesのロールベースアクセス制御(RBAC)認可モデルでのリスクのある権限を検出するツールです。

Mkatは、他の種類の高リスクチェックをテストするために構築されたツールです。主に3つの異なるモードがあります:

  • find-role-relationships: AWSロールがどのポッドで実行されているかを見つけます

  • find-secrets: ポッド、ConfigMaps、SecretsなどのK8sリソース内のシークレットを特定しようとします。

  • test-imds-access: ポッドを実行し、メタデータv1およびv2にアクセスしようとします。警告:これによりクラスター内でポッドが実行されるため、これを行いたくない場合があるため、非常に注意してください!

IaCコードの監査

Popeyeは、ライブKubernetesクラスターをスキャンし、デプロイされたリソースと構成に関する潜在的な問題を報告するユーティリティです。クラスターをスキャンすることで、ミス構成を検出し、ベストプラクティスが適用されていることを確認し、将来の問題を防ぎます。これにより、野生のKubernetesクラスターを操作する際に直面する認知負荷を軽減することを目指しています。さらに、クラスターがメトリックサーバーを使用している場合、潜在的なリソースの過剰/不足割り当てを報告し、クラスターが容量不足になると警告を試みます。

KICSは、次のインフラストラクチャコードソリューションセキュリティ脆弱性、コンプライアンスの問題、およびインフラストラクチャのミス構成を検出します:Terraform、Kubernetes、Docker、AWS CloudFormation、Ansible、Helm、Microsoft ARM、およびOpenAPI 3.0の仕様

Checkovは、インフラストラクチャコード用の静的コード解析ツールです。

Terraform、Terraform plan、CloudformationAWS SAMKubernetesDockerfileServerless、またはARM Templatesを使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスのミス構成を検出します。

kube-scoreは、Kubernetesオブジェクト定義の静的コード解析を実行するツールです。

インストール方法:

ディストリビューションコマンド/リンク

macOS、Linux、Windows用の事前ビルドバイナリ

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で実行されるコンテナのセキュリティコンテキストを構成できます。詳細については、次を参照してください:

Kubernetes SecurityContext(s)

Kubernetes APIのハードニング

Kubernetes Api Serverへのアクセスを保護することは非常に重要です。十分な権限を持つ悪意のあるアクターがそれを悪用し、環境を多くの方法で損傷させる可能性があるためです。 アクセス(API Serverへのアクセスのホワイトリスト化と他の接続を拒否する)と認証最小特権の原則に従う)を確保することが重要です。そして、決して 匿名 リクエスト許可しないことが重要です。

一般的なリクエストプロセス: ユーザーまたはK8s ServiceAccount –> 認証 –> 認可 –> アドミッションコントロール。

ヒント

  • ポートを閉じる。

  • 匿名アクセスを避ける。

  • NodeRestriction;特定のノードからAPIへのアクセスを拒否する。

  • これは、kubeletsがノードオブジェクトをワークロード分離の目的でラベル付けするために予約されたラベル接頭辞であるnode-restriction.kubernetes.io/接頭辞のラベルを追加/削除/更新することを許可しません。

  • また、kubeletsがこれらのラベルとラベル接頭辞を追加/削除/更新できるようにします。

  • ラベルを使用してセキュアなワークロード分離を確保します。

  • 特定のポッドがAPIアクセスを拒否します。

  • ApiServerのインターネットへの露出を避ける。

  • 不正なアクセスRBACを避ける。

  • ファイアウォールとIPホワイトリストを使用したApiServerポートの保護。

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

一般的なハードニング

必要に応じてKubernetes環境を以下のように頻繁に更新する必要があります:

  • 依存関係を最新の状態に保つ。

  • バグとセキュリティパッチを適用する。

リリースサイクル: 3ヶ月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(メジャー).20(マイナー).3(パッチ)

Kubernetesクラスタをアップデートする最良の方法は(こちら):

  • このシーケンスに従ってマスターノードコンポーネントをアップグレードする:

  • etcd(すべてのインスタンス)。

  • kube-apiserver(すべてのコントロールプレーンホスト)。

  • kube-controller-manager。

  • kube-scheduler。

  • クラウドコントローラーマネージャ(使用している場合)。

  • kube-proxy、kubeletなどのワーカーノードコンポーネントをアップグレードする。

HackTricksのサポート

Last updated