Route 53 Resolver DNS Firewallとは?
AWS VPCに標準で備わっているDNSサーバであるRoute 53 ResolverでDNSクエリ(名前解決)を制御する機能です。
この機能を使用すると任意のドメイン名に対する名前解決を不可にして許可されたサイト以外へのアクセスを禁止するといったことが可能となります。
設定項目
Route 53 Resolver DNS Firewallの設定項目としてはざっくり以下となります。
・ドメインリスト
名前解決を許可、または拒否したいドメイン名のリストです。
www.hogehoge.com
のようなFQDNでの指定や *.hogehoge.com
のようにワイルドカードの使用も可能。
AWS独自調査による危険ドメインがリスト化されているマネージドのドメインリストも利用可能ですがこのドメインリスト内の具体的なドメイン名はユーザ側では確認できません。
・ルールグループ
制御内容の設定となります。
ドメインリストで指定したドメイン名に対するDNSクエリにどのような制御を行うかを設定します。
アクションという設定項目で以下3つの何れかを指定して制御を有効にします。
ALLOW・・・DNSクエリを許可。通常の名前解決の動作と同じ動き。
ALERT・・・DNSクエリを許可。通常の名前解決の動作と同じ動きをするがログにアラートが記録されます。
BLOCK・・・DNSクエリをブロックしてDNSクライアントに特定のレスポンスを返します。
BLOCKを指定した場合、Route 53 ResolverがDNSクライアントに返すレスポンスを以下の3つから選択できます。
NODATA・・・DNSクエリに対する有効なレスポンスが無いという結果を返す。
NXDOMAIN・・・ドメインが存在しないという結果を返す。
OVERRIDE・・・DNSシンクホールの機能。任意のレスポンスをDNSクライアントに返す。
BLOCKの挙動確認
Route 53 Resolver DNS Firewallを設定したVPC内のEC2から検証用ドメインの www.skawamura.link
に対するクエリがBLOCKされた場合のレスポンスを確認してみました。
DNSクライアントにはnslookupコマンドを使用。
ドメインリストは以下画面キャプチャの通りに設定。
・BLOCK無しの場合
通常の名前解決の挙動と同じく www.skawamura.link
に対応するIPアドレスがレスポンスとして返ってきます。
・NODATAの場合
レスポンスにNODATAを指定します。
nslookup実行結果は「No answer」となりました。
・NXDOMAINの場合
レスポンスにNXDOMAINを指定します。
nslookup実行結果は「NXDOMAIN」となりました。
・OVERRIDEの場合
「アクション」でOVERRIDEを指定してレスポンスに www.google.com
を設定します。
nslookup実行結果に www.google.com
に対応するIPアドレスが返ってきました。
まとめ
インターネット上の特定のサイトへのアクセスを制御したいというような要件がある場合、Route 53 Resolver DNS Firewallを使用すれば簡単にアクセス制御を行うことが可能です。
但しこの機能の制御対象はあくまでRoute53 Resolverを利用している場合のDNSクエリなのでRoute53 Resolver以外のDNSサーバを使用していたりIPアドレス指定で通信している場合はアクセス制御はできません。
IPアドレスやプロトコルでの制御が必要な場合はセキュリティグループやネットワークACL、Network Firewallの利用を御検討下さい。