Kubernetes Hardening

HackTricksをサポートして特典を得る!

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

Kubescape

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

kubescape scan --verbose

Kube-bench

kube-benchというツールは、CIS Kubernetes Benchmarkに記載されているチェックを実行して、Kubernetesが安全にデプロイされているかどうかを確認するツールです。 次の方法で実行できます:

  • ホストとPID名前空間を共有するコンテナ内からkube-benchを実行する

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

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

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

Kubeaudit

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

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

kubeaudit all

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

Kube-hunter

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

kube-hunter --remote some.node.com

Kubei

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

KubiScan

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

IaCコードの監査

Popeye

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

Kicks

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

Checkov

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

Terraform、Terraformプラン、Cloudformation、AWS SAM、Kubernetes、Dockerfile、Serverless、またはARMテンプレートを使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスの誤構成を検出します。

Kube-score

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

ヒント

Falcoによるモニタリング

Kubernetes PodSecurityContextとSecurityContext

Podのセキュリティコンテキスト(_PodSecurityContext_を使用)および実行されるコンテナセキュリティコンテキスト(_SecurityContext_を使用)を設定できます。詳細については、次を参照してください:

pageKubernetes SecurityContext(s)

Kubernetes APIのハードニング

悪意のあるアクターが十分な特権を持っている場合、Kubernetes APIサーバーへのアクセスを保護することは非常に重要です。これにより、環境がさまざまな方法で悪影響を受ける可能性があります。 アクセス(APIサーバーへのアクセス元をホワイトリストに登録し、他の接続を拒否する)と認証最小特権の原則に従う)の両方を確保することが重要です。そして、決して****匿名のリクエストを許可しないでください。

一般的なリクエストプロセス: ユーザーまたはK8s ServiceAccount –> 認証 –> 認可 –> 入場制御。

ヒント

  • ポートを閉じる。

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

  • NodeRestriction:特定のノードからAPIへのアクセスを許可しない。

  • 基本的には、kubeletがノードオブジェクトをワークロードの分離目的でラベル付けするために予約されているnode-restriction.kubernetes.io/接頭辞を持つラベルの追加/削除/更新をkubeletが許可しないようにします。

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

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

  • 特定のポッドがAPIへのアクセスを許可されないようにする。

  • ApiServerをインターネットに公開しない。

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

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

SecurityContextのハードニング

デフォルトでは、指定されていない場合、Podが起動されるときには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

Kubernetes NetworkPolicies

一般的なハードニング

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

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

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

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

Kubernetesクラスタを更新する最良の方法は(こちら):

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

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

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

  • kube-controller-manager。

  • kube-scheduler。

  • 使用している場合は、クラウドコントローラーマネージャーもアップグレードする。

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

Support HackTricks and get benefits!

最終更新