Amazon Web Services ブログ
CNAME チェーンでの困難を解決する: Route 53 Resolver DNS Firewall による管理の簡素化
5月1日より、解決チェーン (CNAME
、DNAME
、または Alias
チェーンなど) 内のすべてのドメインを自動的に信頼するように DNS Firewall を設定できるようになりました。
DNS に詳しくない人のために、専門用語なしでこれを見てみましょう。
DNS Firewall を使用すべき理由
DNS Firewall は、クラウド内のプライベートネットワーク (Amazon Virtual Private Cloud (Amazon VPC)) からのアウトバウンド DNS リクエストを保護します。これらのリクエストは、ドメイン名解決のために Amazon Route 53 Resolver を通じてルーティングされます。ファイアウォール管理者は、アウトバウンド DNS トラフィックをフィルタリングおよび規制するルールを設定できます。
DNS Firewall は、複数のセキュリティリスクからの保護に役立ちます。
悪意のある攻撃者が、いずれかの仮想プライベートクラウド (VPC) の内部で実行されている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたはコンテナに何らかのコードをインストールして実行することができた場合を想像してみましょう。悪意のあるコードは、発信ネットワーク接続を開始する可能性が高いです。これは、コマンドサーバーに接続し、マシン上で実行するコマンドを受信するために行われるかもしれません。あるいは、協調分散型サービス拒否 (DDoS) 攻撃でサードパーティーのサービスへの接続を開始するかもしれません。また、お客様のネットワーク上で収集することができたデータの抽出を試みようとする可能性もあります。
幸いなことに、お客様のネットワークとセキュリティグループは正しく設定されています。これらは、お客様のアプリケーションによって使用される既知の API エンドポイントへのトラフィックを除くすべての発信トラフィックをブロックします。これまでのところは問題ありませんね。悪意のあるコードは、通常の TCP または UDP 接続を使用してホームにダイヤルバックすることはできません。
しかし、DNS トラフィックはどうでしょうか。 悪意のあるコードは、コントロールコマンドまたはエンコードされたデータを送信するために制御する権威 DNS サーバーに DNS リクエストを送信し、応答でデータを受信する可能性があります。次の図にプロセスを示しました。
これらのシナリオを防ぐために、DNS Firewall を使用して、アプリケーションがクエリできるドメインをモニタリングおよび制御できます。ドメインに対するアクセスのうち、不正であることがわかっているアクセスを拒否し、他のすべてのクエリの通過を許可できます。あるいは、明示的に信頼するドメインを除くすべてのドメインに対するアクセスを拒否することもできます。
CNAME、DNAME、Alias レコードに関する課題
特定の既知のドメインに対する DNS クエリのみを許可し、その他はすべてブロックするように DNS Firewall を設定したと想像してください。アプリケーションは alexa.amazon.com
と通信するため、DNS トラフィックがそのホスト名を解決することを許可するルールを作成しました。
しかし、DNS システムには複数のタイプのレコードがあります。この記事で興味深いものは次のとおりです。
- DNS 名を IP アドレスにマッピングする
A
レコード - 他の DNS 名の同義語である
CNAME
レコード - DNS 名ツリーのある部分から DNS 名ツリーの別の部分へのリダイレクトを提供する
DNAME
レコード - DNS 機能に Route 53 固有の拡張機能を提供する
Alias
レコードエイリアスレコードを使用すると、Amazon CloudFront ディストリビューションや Amazon S3 バケットなど、選択した AWS リソースにトラフィックをルーティングできます。
alexa.amazon.com
に対してクエリを実行すると、pitangui.amazon.com
をポイントする CNAME
レコードが表示されます。pitangui.amazon.com は tp.5fd53c725-frontier.amazon.com
をポイントする別の CNAME
レコードであり、tp.5fd53c725-frontier.amazon.com は d1wg1w6p5q8555.cloudfront.net
に対する CNAME
です。最後の名前 (d1wg1w6p5q8555.cloudfront.net
) にのみ、IP アドレス 3.162.42.28
に関連付けられた A
レコードがあります。IP アドレスは異なる可能性があります。これは、最も近い Amazon CloudFront エッジロケーションをポイントします。私の場合は、おそらくパリ (CDG52
) のエッジロケーションとなります。
DNAME
または Alias
レコードを解決する際にも、同様のリダイレクトメカニズムが発生します。
このような CNAME
チェーンの完全な解決を許可するために、amazon.com ですべての名前を許可するように DNS Firewall ルールを設定したくなるかもしれませんが (*.amazon.com
)、これでは cloudfront.net
をポイントする最後の CNAME
を解決できません。
最悪の場合、DNS CNAME チェーンはアプリケーションが接続するサービスによって制御されます。チェーンはいつでも変更される可能性があるため、DNS Firewall ルール内のルールと認可されたドメインのリストを手動で管理する必要があります。
DNS Firewall リダイレクトチェーン認可の概要
この説明に基づいて、5月1日にリリースされる新しい機能をご理解いただく準備が整ったのではないかと思います。CNAME
、DNAME
、または Alias
チェーン内のすべてのドメインに従い、これらを自動的に信頼するように DNS Firewall を設定できるよう、UpdateFirewallRule API にパラメータを追加しました (AWS コマンドラインインターフェイス (AWS CLI) および AWS マネジメントコンソールでも使用可能)。
このパラメータを使用すると、ファイアウォール管理者はアプリケーションがクエリするドメインのみを許可できます。ファイアウォールは、IP アドレスを持つ A
レコードに到達するまで、チェーン内のすべての中間ドメインを自動的に信頼します。
実際の動作
まず、ドメイン alexa.amazon.com
についてのクエリを許可する、ドメインリスト、ルールグループ、およびルールが既に設定されている DNS Firewall から始めます。ルールグループは、EC2 インスタンスが起動されている VPC にアタッチされています。
その EC2 インスタンスに接続し、alexa.amazon.com
を解決するために DNS クエリを発行すると、ドメインチェーン内の最初の名前 (pitangui.amazon.com
) のみが返され、そこで止まります。pitangui.amazon.com
の解決が認可されていないため、これは想定内のことです。
これを解決するには、リダイレクトチェーン全体を信頼するようにファイアウォールルールを更新します。AWS CLI を使用して、新しいパラメータである firewall-domain-redirection-action
を TRUST_REDIRECTION_DOMAIN
に設定して、update-firewall-rule
API を呼び出します。
次の図は、この段階の設定を示しています。
EC2 インスタンスに戻り、DNS クエリを再試行します。今回はうまくいきました。これは、IP アドレスに至るまでのリダイレクションチェーン全体を解決します🎉。
信頼されたチェーンリダイレクトのおかげで、ネットワーク管理者は、CNAME
、DNAME
、または Alias
チェーンを気にすることなく、DNS Firewall ですべてのドメインをブロックし、既知のドメインのみを認可する戦略を簡単に実装できるようになりました。
この機能は、すべての AWS リージョンで追加料金なしでご利用いただけます。今すぐお試しください!
原文はこちらです。