GCP - Add Custom SSH Metadata
GCP - カスタムSSHメタデータの追加
メタデータの変更
インスタンスのメタデータの変更は、攻撃者が必要な権限を取得した場合には、重大なセキュリティリスクにつながる可能性があります。
カスタムメタデータへのSSHキーの組み込み
GCPでは、LinuxシステムはしばしばGoogle Compute Engine用Python Linuxゲスト環境からスクリプトを実行します。これの重要なコンポーネントはアカウントデーモンで、これは定期的にインスタンスのメタデータエンドポイントをチェックして認証済みSSH公開キーの更新を行います。
したがって、攻撃者がカスタムメタデータを変更できれば、デーモンが新しい公開キーを見つけ、それが処理されてローカルシステムに統合されるようにすることができます。そのキーは既存のユーザーの~/.ssh/authorized_keys
ファイルに追加されるか、キーの形式に応じてsudo
権限を持つ新しいユーザーが作成される可能性があります。そして、攻撃者はホストを侵害できるようになります。
既存の特権ユーザーにSSHキーを追加する
インスタンス上の既存のSSHキーを調べる:
インスタンスとそのメタデータを説明するコマンドを実行して、既存のSSHキーを特定します。出力の関連セクションは
metadata
の下にあり、特にssh-keys
キーの下にあります。
SSHキーの形式に注意してください:ユーザー名はコロンで区切られたキーの前にあります。
SSHキーのメタデータ用のテキストファイルを準備する:
ユーザー名とそれに対応するSSHキーの詳細を
meta.txt
という名前のテキストファイルに保存します。これは新しいキーを追加する際に既存のキーを保持するために重要です。
ターゲットユーザー(
alice
を例として)の新しいSSHキーを生成する:
ssh-keygen
コマンドを使用して新しいSSHキーを生成し、コメントフィールド(-C
)がターゲットのユーザー名と一致することを確認します。
インスタンスのメタデータで見つかった形式と同様の形式で、新しい公開キーを
meta.txt
に追加します。
インスタンスのSSHキーのメタデータを更新する:
gcloud compute instances add-metadata
コマンドを使用して、更新されたSSHキーのメタデータをインスタンスに適用します。
新しいSSHキーを使用してインスタンスにアクセスする:
新しいキーを使用してSSHでインスタンスに接続し、ターゲットユーザー(
alice
を例として)のコンテキストでシェルにアクセスします。
新しい特権ユーザーを作成してSSHキーを追加する
興味深いユーザーが見つからない場合は、sudo
権限が付与される新しいユーザーを作成することが可能です。
プロジェクトレベルでのSSHキー
クラウド環境内の複数の仮想マシン(VM)へのSSHアクセス範囲を広げるために、プロジェクトレベルでSSHキーを適用することが可能です。このアプローチにより、プロジェクト内の任意のインスタンスにSSHアクセスできるようになります(プロジェクト全体のSSHキーが明示的にブロックされていない場合)。以下は要約したガイドです:
プロジェクトレベルでSSHキーを適用:
gcloud compute project-info add-metadata
コマンドを使用して、meta.txt
からSSHキーをプロジェクトのメタデータに追加します。この操作により、SSHキーがプロジェクト内のすべてのVMで認識されるようになります。ただし、VMが「プロジェクト全体のSSHキーをブロックする」オプションを有効にしていない限りです。
プロジェクト全体のキーを使用してインスタンスにSSHする:
プロジェクト全体のSSHキーが設定されている場合、プロジェクト内の任意のインスタンスにSSHできます。プロジェクト全体のキーをブロックしていないインスタンスはSSHキーを受け入れ、アクセスを許可します。
インスタンスに直接SSHする方法は、
gcloud compute ssh [INSTANCE]
コマンドを使用することです。このコマンドは現在のユーザー名とプロジェクトレベルで設定されたSSHキーを使用してアクセスを試みます。
参考文献
Last updated