こんばんは。小寺です。
IMDSv2への移行を簡単に実現できるインスタンス メタデータ サービス (IMDS) パケット アナライザーが発表されました。
https://aws.amazon.com/about-aws/whats-new/2023/06/imds-packet-analyzer-simplifies-migration-imdsv2/
IMDSv2とは
Amazon EC2のインスタンス メタデータ サービス (IMDS) により、インスタンス内 (OS上) からインスタンスに関する様々な情報を取得できます。
v2はバージョン2を意味していて、現在はデフォルトバージョンはIMDSv2です。
v1との違いは攻撃者からインスタンスメタデータを悪用されないよう、セキュリティ強化がされた点がポイントです。
・インスタンスメタデータサービスバージョン 1 (IMDSv1) – リクエスト/レスポンスメソッド
・インスタンスメタデータサービスバージョン 2 (IMDSv2) – セッション志向メソッド
・インスタンスメタデータサービスバージョン 1 (IMDSv1)
インスタンスメタデータはEC2内部からHTTPリクエストを送ることで、データの取得ができていました。そのため、リクエスト、レスポンスメソッドと分類できます。
・インスタンスメタデータサービスバージョン 1 (IMDSv2)
バージョン2からはセキュリティが強化されています。
一つ目にセッショントークン(期限付き。パスワードのような扱い)を取得し、PUTリクエストでないとトークン取得ができなくなりました。セッショントークンの期限は最大6時間 (1 秒~6 時間)です。
セッショントークンヘッダーを使って、「TOKEN」と呼ばれる変数に値を保管します。その後、トークンを使ってデータの取得を行います。トークンを作成した後は、設定した期限が切れるまでは、再使用することができます。
アップデート内容
現状はSDKではデフォルトで IMDSv2設定になっています。IMDSv2のメリットであるセキュアなアクセスを最大限に活用するには、EC2 インスタンスで IMDSv1 を無効にする必要があります。
これには、IMDSv1を使っている独自のソフトウェアとサードパーティ アプリケーションがある場合、IMDSv2 互換になるように更新する必要があります。
IMDSv1からIMDSv2へアップデートを簡単に行うことができる、IMDSパケット アナライザーが発表されました。
IMDSパケット アナライザーを使えば、IMDS の呼び出し方法に関連するプロセスと詳細が把握できます。 IMDS パケット アナライザーは、CLIから実行することも、インスタンスのブート フェーズからの IMDSv1 呼び出しを識別してログに記録するサービスとしてインストールできるオープンソース ツールです。
実際にIMDSパケットアナライザーを使ってみるには
こちらから確認ができます。
AWS ImdsPacketAnalyzer は、EC2 インスタンス メタデータ サービス (IMDS) との TCP の応答をトラッキングします。トラッキングにより、ホスト上で IMDSv1 呼び出しを行っているプロセスを判別することができます。
ImdsPacketAnalyzer は BCC (BPF Compiler Collection) を利用します。アナライザーを正常に実行するには、BCCに依存する関連パッケージのインストールを行っておきましょう。
Amazon Linux 2023
Install BCC
sudo dnf install bcc-tools
Amazon Linux 2
Install BCC (BPF Compiler Collection):
sudo amazon-linux-extras enable BCC
sudo yum install kernel-devel-$(uname -r)
sudo yum install bcc
BCC では、アナライザーを root 権限で実行する必要があります。以下のスクリプトを実行すると、デフォルトで IMDS 呼び出しがコンソールとログ ファイルに記録されます。
sudo python3 src/imds_snoop.py