この記事では、EC2 メタデータとそれが重要な理由について説明します。また、SSRF などの攻撃から身を守るためにメタデータを無効にする方法も学習します。
アマゾン ウェブ サービス (AWS) には、スケーラブルな処理機能を提供する Amazon Elastic Compute Cloud (Amazon EC2) サービスがあります。 Amazon EC2 を使用すると、ハードウェアの先行投資を行わずに、より迅速にアプリを開発およびデプロイできます。
ニーズに応じて、同じ数または少ない数の仮想サーバーを起動します。 Amazon EC2 を使用して、ネットワークとセキュリティの設定をセットアップし、ストレージを制御します。
EC2メタデータ
実行中のインスタンスでカスタマイズまたは管理できるインスタンスに関する情報は、インスタンス メタデータと呼ばれます。インスタンスのメタデータ カテゴリには、ホスト名、イベント、セキュリティ グループが含まれます。さらに、インスタンスのメタデータを使用して、インスタンスの起動時に指定したユーザー データにアクセスできます。
インスタンスの構成時に短いスクリプトを含めたり、パラメーターを指定したりできます。ユーザー データを使用して、汎用 AMI を作成し、起動時の構成ファイルを変更できます。
インスタンスのメタデータ オプションを使用して、新しいインスタンスまたは既存のインスタンスをセットアップして、次のタスクを実行できます。
- インスタンス メタデータ リクエストを IMDSv2 経由で送信する必要がある
- PUT 応答のホップ制限を入力します。
- インスタンスのメタデータへのアクセスをロックダウンする
次のいずれかの手法を使用して、アクティブな EC2 インスタンスからメタデータにアクセスできます:
IMDSv1\sIMDSv2
インスタンス メタデータ サービスは IMDS として知られています。ご想像のとおり、方法論は少し異なります。 IMDSv1 はリクエスト/レスポンス方式を採用していますが、IMDSv2 はセッション指向です。
AWS では、推奨される方法である IMDSv2 を使用することをお勧めします。デフォルトでは、 AWS SDK は IMDSv2 呼び出しを使用します。また、IAM ポリシーの IAM 条件キーを使用して、IMDSv2 を有効にして新しい EC2 を設定するようユーザーに要求できます。
実行中のインスタンスからすべてのタイプのインスタンス メタデータを表示するには、次の IPv4 または IPv6 URI を使用します。
IPv4
curl http://169.254.169.254/latest/meta-data/
IPv6
curl http://[fd00:ec2::254]/latest/meta-data/
IP アドレスはリンクローカル アドレスであり、インスタンスからのみ有効です。
インスタンスのメタデータを表示するには、リンクローカル アドレス
169.254.169.254
のみを使用できます。 URI を介したメタデータへのリクエストは無料であるため、AWS からの追加料金は発生しません。
メタデータを無効にする必要性
AWS セットアップでは、 SSRF 攻撃が頻繁に発生しており、誰もがよく知っています。脆弱性スキャンを自動化し、公的にアクセス可能なオンライン アプリケーションから IAM 認証情報を収集する攻撃者が、Mandiant (サイバー セキュリティ会社) によって発見されました。
すべての EC2 インスタンスに IMDSv2 を実装すると、追加のセキュリティ上の利点が得られ、企業にとってこれらのリスクが軽減されます。 IMDSv2 では、敵が SSRF 経由で IAM 認証情報を盗む可能性が大幅に減少します。
サーバーサイド リクエスト フォージェリ (SSRF) を使用して EC2 メタデータ サービスにアクセスすることは、AWS 悪用のテクニックとして最も頻繁に教えられる手法の 1 つです。
メタデータ サービスは、ほとんどの EC2 インスタンス
169.254.169.254
) にアクセスできます。これには、IP アドレス、セキュリティ グループ名など、インスタンスに関する有益な情報が含まれます。
IAM ロールが EC2 インスタンスにアタッチされている場合、メタデータ サービスには、このロールとして認証するための IAM 認証情報も含まれます。使用している IMDS のバージョンと SSRF の機能に応じて、これらの認証情報を盗むことができます。
EC2 インスタンスへのシェル アクセスを持つ敵がこれらの認証情報を取得する可能性があることも考慮する価値があります。
この例では、Web サーバーは EC2 インスタンスのポート 80 で実行されます。この Web サーバーには単純な SSRF 脆弱性があり、任意のアドレスに GET リクエストを送信できます。これは、
http://169.254.169.254.
メタデータを無効にするには
インスタンス メタデータ サービスの HTTP エンドポイントをブロックすると、使用しているインスタンス メタデータ サービスのバージョンに関係なく、インスタンス メタデータへのアクセスを防ぐことができます。
HTTP エンドポイントを有効にすることで、いつでもこの変更を元に戻すことができます。インスタンスのメタデータを無効にするには、modify-instance-metadata-options CLI コマンドを使用し、http-endpoint パラメーターを無効に設定します。
メタデータを無効にするには、次のコマンドを実行します 。
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint disabled
メタデータを無効にした後、アクセスしようとすると FORBIDDEN メッセージが表示されることがわかります。
メタデータを再度有効にする場合は、次のコマンドを実行します 。
aws ec2 modify-instance-metadata-options --instance-id i-0558ea153450674 --http-endpoint enabled
結論
メタデータは、大規模なデータ ストアから情報を抽出するのに役立ちます。ただし、本人の知識や同意なしに、その人の位置や身元を知るために悪用される可能性もあります。削除やコメントを含むすべての変更が記録されるため、他の人に見られたくない情報が含まれている可能性があることに注意する必要があります。そのため、メタデータを削除することは、オンラインのプライバシーと匿名性を維持するために非常に重要です。
AWS の学習を進めるために、いくつかの AWS の主要な用語を調べることもできます。






![2021 年に Raspberry Pi Web サーバーをセットアップする方法 [ガイド]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)





