Kubernetes Hardening
Reading time: 13 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Tools to analyse a cluster
**Steampipe - Kubernetes Compliance
Kubernetesクラスターに対していくつかのコンプライアンスチェックを行います。CIS、国家安全保障局(NSA)、およびサイバーセキュリティおよびインフラストラクチャセキュリティ局(CISA)のKubernetesハードニングに関するサイバーセキュリティ技術報告のサポートが含まれています。
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes
# Start the service
steampipe service start
# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance
# Run the module
powerpipe server
Kubescape
Kubescape は、リスク分析、セキュリティコンプライアンス、RBACビジュアライザー、イメージ脆弱性スキャンを含む、マルチクラウドK8sのシングルペインオブグラスを提供するK8sオープンソースツールです。KubescapeはK8sクラスター、YAMLファイル、HELMチャートをスキャンし、NSA-CISA や MITRE ATT&CK® などの複数のフレームワークに基づいて、誤設定、ソフトウェアの脆弱性、RBAC(ロールベースアクセス制御)違反をCI/CDパイプラインの初期段階で検出し、リスクスコアを即座に計算し、時間の経過に伴うリスクの傾向を表示します。
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
Popeye
Popeye は、ライブKubernetesクラスターをスキャンし、デプロイされたリソースと構成に関する潜在的な問題を報告するユーティリティです。ディスク上にあるものではなく、デプロイされているものに基づいてクラスターをサニタイズします。クラスターをスキャンすることで、誤った構成を検出し、ベストプラクティスが実施されていることを確認する手助けをし、将来の頭痛を防ぎます。Kubernetesクラスターを運用する際に直面する認知的_オーバーロードを軽減することを目指しています。さらに、クラスターがメトリックサーバーを使用している場合、リソースの過剰/不足割り当てを報告し、クラスターの容量が不足する場合には警告を試みます。
Kube-bench
ツールkube-benchは、CIS Kubernetes Benchmarkに文書化されたチェックを実行することで、Kubernetesが安全にデプロイされているかどうかを確認するツールです。
次のように選択できます:
- コンテナ内からkube-benchを実行する(ホストとPID名前空間を共有)
- ホストにkube-benchをインストールするコンテナを実行し、その後ホスト上でkube-benchを直接実行する
- Releases pageから最新のバイナリをインストールする
- ソースからコンパイルする。
Kubeaudit
[非推奨] ツールkubeauditは、さまざまなセキュリティ上の懸念に対してKubernetesクラスターを監査するコマンドラインツールおよびGoパッケージです。
Kubeauditは、クラスター内のコンテナ内で実行されているかどうかを検出できます。そうであれば、そのクラスター内のすべてのKubernetesリソースを監査しようとします:
kubeaudit all
このツールには、検出された問題を自動的に修正するための引数autofix
もあります。
Kube-hunter
[非推奨] ツールkube-hunterは、Kubernetesクラスターのセキュリティの弱点を探します。このツールは、Kubernetes環境におけるセキュリティ問題への認識と可視性を高めるために開発されました。
kube-hunter --remote some.node.com
Trivy
Trivy はセキュリティ問題を探すスキャナーを持ち、問題を見つけることができるターゲットがあります:
- コンテナイメージ
- ファイルシステム
- Gitリポジトリ(リモート)
- 仮想マシンイメージ
- Kubernetes
Kubei
[メンテナンスされていないようです]
Kubei は脆弱性スキャンとCIS Dockerベンチマークツールで、ユーザーがKubernetesクラスターの正確で即時のリスク評価を得ることを可能にします。Kubeiは、アプリケーションポッドとシステムポッドのイメージを含む、Kubernetesクラスターで使用されているすべてのイメージをスキャンします。
KubiScan
KubiScan は、Kubernetesのロールベースアクセス制御(RBAC)認可モデルにおけるリスクのある権限をスキャンするためのツールです。
Managed Kubernetes Auditing Toolkit
Mkat は、他のツールと比較して高リスクチェックの他のタイプをテストするために構築されたツールです。主に3つの異なるモードがあります:
find-role-relationships
: どのAWSロールがどのポッドで実行されているかを見つけますfind-secrets
: Pods、ConfigMaps、SecretsなどのK8sリソース内のシークレットを特定しようとします。test-imds-access
: ポッドを実行し、メタデータv1およびv2にアクセスしようとします。警告:これはクラスター内でポッドを実行しますので、注意してください。これを行いたくないかもしれません!
IaCコードの監査
KICS
KICS は、以下のInfrastructure as Codeソリューションにおけるセキュリティ脆弱性、コンプライアンス問題、およびインフラストラクチャの誤設定を見つけます:Terraform、Kubernetes、Docker、AWS CloudFormation、Ansible、Helm、Microsoft ARM、およびOpenAPI 3.0仕様
Checkov
Checkov は、インフラストラクチャ・アズ・コードのための静的コード分析ツールです。
Terraform、Terraformプラン、Cloudformation、AWS SAM、Kubernetes、Dockerfile、Serverless または ARM Templates を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティとコンプライアンスの誤設定を検出します。
Kube-score
kube-score は、Kubernetesオブジェクト定義の静的コード分析を行うツールです。
インストール方法:
ディストリビューション | コマンド / リンク |
---|---|
macOS、Linux、Windows用のプリビルドバイナリ | GitHubリリース |
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
Podのセキュリティコンテキスト(PodSecurityContext)と実行されるコンテナのセキュリティコンテキスト(SecurityContext)を構成できます。詳細については、次をお読みください:
Kubernetes APIの強化
Kubernetes Api Serverへのアクセスを保護することは非常に重要です。十分な権限を持つ悪意のある行為者がそれを悪用し、環境に多くの方法で損害を与える可能性があります。
アクセス(APIサーバーにアクセスするためのオリジンをホワイトリストし、他の接続を拒否する)と認証(最小限の権限の原則に従う)を確保することが重要です。そして、決して 匿名 リクエストを許可しないでください。
一般的なリクエストプロセス:
ユーザーまたはK8s ServiceAccount –> 認証 –> 認可 –> 受け入れ制御。
ヒント:
- ポートを閉じる。
- 匿名アクセスを避ける。
- NodeRestriction; 特定のノードからAPIへのアクセスを制限。
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
- 基本的に、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
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- https://kubernetes.io/docs/concepts/policy/pod-security-policy/
一般的なハードニング
Kubernetes 環境は、次のように必要に応じて頻繁に更新する必要があります。
- 依存関係を最新の状態に保つ。
- バグとセキュリティパッチ。
リリースサイクル: 3ヶ月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(メジャー).20(マイナー).3(パッチ)
Kubernetes クラスターを更新する最良の方法は (こちらから) こちら:
- マスターノードコンポーネントを次の順序でアップグレードします。
- etcd (すべてのインスタンス)。
- kube-apiserver (すべてのコントロールプレーンホスト)。
- kube-controller-manager。
- kube-scheduler。
- クラウドコントローラーマネージャー (使用している場合)。
- kube-proxy、kubelet などのワーカーノードコンポーネントをアップグレードします。
Kubernetes の監視とセキュリティ:
- Kyverno ポリシーエンジン
- Cilium Tetragon - eBPF ベースのセキュリティ可視化とランタイム強制
- ネットワークセキュリティポリシー
- Falco - ランタイムセキュリティ監視と検出
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。