Kubernetes Hardening
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubescape は、リスク分析、セキュリティコンプライアンス、RBACビジュアライザー、イメージ脆弱性スキャンを含むマルチクラウドK8sのシングルペインオブグラスを提供するK8sオープンソースツールです。KubescapeはK8sクラスター、YAMLファイル、HELMチャートをスキャンし、複数のフレームワーク(例えば、NSA-CISA 、MITRE ATT&CK®)に従って誤設定、ソフトウェアの脆弱性、RBAC(ロールベースアクセス制御)違反をCI/CDパイプラインの初期段階で検出し、リスクスコアを瞬時に計算し、時間の経過に伴うリスクの傾向を表示します。
ツール kube-bench は、CIS Kubernetes Benchmark に記載されたチェックを実行することによって、Kubernetes が安全にデプロイされているかどうかを確認するツールです。 次の方法を選択できます:
コンテナ内から kube-bench を実行する(ホストと PID 名前空間を共有)
ホストに kube-bench をインストールするコンテナを実行し、その後ホスト上で直接 kube-bench を実行する
Releases page から最新のバイナリをインストールする
ソースからコンパイルする
ツール kubeaudit は、さまざまなセキュリティ上の懸念に対して Kubernetes クラスターを監査 するためのコマンドラインツールおよび Go パッケージです。
Kubeaudit は、クラスター内のコンテナ内で実行されているかどうかを検出できます。もしそうであれば、そのクラスター内のすべての Kubernetes リソースを監査しようとします:
このツールには、検出された問題を自動的に修正するための引数autofix
もあります。
ツールkube-hunterは、Kubernetesクラスターのセキュリティの弱点を探します。このツールは、Kubernetes環境におけるセキュリティ問題への意識と可視性を高めるために開発されました。
Kubei は、ユーザーが自分の Kubernetes クラスターの正確で即時のリスク評価を得ることを可能にする脆弱性スキャンおよび CIS Docker ベンチマークツールです。Kubei は、アプリケーションポッドおよびシステムポッドのイメージを含む、Kubernetes クラスターで使用されているすべてのイメージをスキャンします。
KubiScan は、Kubernetes のロールベースアクセス制御 (RBAC) 認可モデルにおけるリスクのある権限をスキャンするためのツールです。
Mkat は、他のツールと比較して高リスクチェックの他のタイプをテストするために構築されたツールです。主に 3 つの異なるモードがあります:
find-role-relationships
: どの AWS ロールがどのポッドで実行されているかを見つけます
find-secrets
: Pods、ConfigMaps、Secrets などの K8s リソース内の秘密を特定しようとします。
test-imds-access
: ポッドを実行し、メタデータ v1 および v2 にアクセスしようとします。警告:これはクラスター内でポッドを実行しますので、注意してください。これを行いたくないかもしれません!
Popeye は、ライブ Kubernetes クラスターをスキャンし、デプロイされたリソースと構成に関する潜在的な問題を報告するユーティリティです。ディスク上にあるものではなく、デプロイされたものに基づいてクラスターをサニタイズします。クラスターをスキャンすることで、誤った構成を検出し、ベストプラクティスが確立されていることを確認するのに役立ち、将来の頭痛を防ぎます。Kubernetes クラスターを運用する際の認知的負荷を軽減することを目指しています。さらに、クラスターがメトリックサーバーを使用している場合、リソースの過剰/不足割り当てを報告し、クラスターが容量不足になる場合に警告を試みます。
KICS は、以下の Infrastructure as Code ソリューション における セキュリティ脆弱性、コンプライアンスの問題、およびインフラストラクチャの誤設定を見つけます:Terraform、Kubernetes、Docker、AWS CloudFormation、Ansible、Helm、Microsoft ARM、および OpenAPI 3.0 仕様
Checkov は、インフラストラクチャ・アズ・コードのための静的コード分析ツールです。
Terraform、Terraform プラン、Cloudformation、AWS SAM、Kubernetes、Dockerfile、Serverless または ARM テンプレート を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスの誤設定を検出します。
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
Pod のセキュリティコンテキスト (PodSecurityContext) と実行される コンテナ のセキュリティコンテキスト (SecurityContext) を構成できます。詳細については、次をお読みください:
Kubernetes SecurityContext(s)Kubernetes Api Server へのアクセスを保護することは非常に重要です。十分な権限を持つ悪意のあるアクターがそれを悪用し、環境に多くの方法で損害を与える可能性があります。 アクセス(API サーバーにアクセスするためのオリジンをホワイトリストし、他の接続を拒否する)と 認証(最小限の権限の原則に従う)を確保することが重要です。そして、決して 匿名 リクエストを許可しないことが重要です。
一般的なリクエストプロセス: ユーザーまたは K8s ServiceAccount –> 認証 –> 認可 –> 受け入れ制御。
ヒント:
ポートを閉じる。
匿名アクセスを避ける。
NodeRestriction; 特定のノードから API へのアクセスを制限する。
基本的に、kubelet が node-restriction.kubernetes.io/ プレフィックスを持つラベルを追加/削除/更新するのを防ぎます。このラベルプレフィックスは、管理者がワークロードの分離目的でノードオブジェクトにラベルを付けるために予約されており、kubelet はそのプレフィックスを持つラベルを変更することは許可されません。
また、kubelet がこれらのラベルおよびラベルプレフィックスを追加/削除/更新することを許可します。
ラベルを使用して安全なワークロードの分離を確保します。
特定のポッドが API アクセスを避けるようにします。
ApiServer をインターネットにさらすのを避けます。
認可されていないアクセス RBAC を避けます。
ファイアウォールと IP ホワイトリストを使用した ApiServer ポート。
デフォルトでは、他のユーザーが指定されていない場合、ポッドが開始されると root ユーザーが使用されます。次のようなテンプレートを使用して、より安全なコンテキスト内でアプリケーションを実行できます:
Kubernetes 環境は、次のことを確実にするために必要に応じて頻繁に更新するべきです:
依存関係を最新の状態に保つ。
バグとセキュリティパッチ。
リリースサイクル: 3ヶ月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(メジャー).20(マイナー).3(パッチ)
Kubernetes クラスターを更新する最良の方法は (こちらから) こちらです:
次の順序でマスターノードコンポーネントをアップグレードします:
etcd (すべてのインスタンス)。
kube-apiserver (すべてのコントロールプレーンホスト)。
kube-controller-manager。
kube-scheduler。
クラウドコントローラーマネージャー(使用している場合)。
kube-proxy、kubelet などのワーカーノードコンポーネントをアップグレードします。
AWS ハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCP ハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)