Amazon Route 53とはDNSおよびトラフィックルーティングのサービスです。Amazon Route 53のDNSクエリログを有効化することで、どのドメインがどれだけの頻度で問い合わせられているか、また不正なアクセスや異常なパターンがないか、などを監視することが可能です。
問い合わせ元もログに記録されるので、Amazon Route 53のレコードを削除する際も、影響が出ないかどうかを確認することが可能です。
本記事では、Amazon Route 53のDNSクエリログ取得方法とログの見方を紹介します。
パブリックDNSクエリのログとは
Amazon Route 53が受信した、パブリックホストゾーンのレコードに対するDNSクエリの情報を記録することが可能です。
クエリログを設定すると、Amazon Route 53 はログを CloudWatch ログに送信します。
DNSクエリログの活用
クエリは主に以下の活用方法があります。
- セキュリティ監視:不審なドメインへの問い合わせを検出
- パフォーマンス分析:使用頻度の高いドメインへの応答時間の最適化
- トラブルシューティング:解決されないDNSクエリの原因究明
DNSクエリログ取得手順
事前準備として、CloudWatch Logsのロググループを「バージニア北部*1」に作成しておく必要があります。
※クエリログ作成画面でロググループ作成することも可能ですが、保持期間など詳細設定はCloudWatch Logs画面での操作が必要です。
1.AWSマネジメントコンソールの左上の検索欄に[Route53]と入力して、サービスに表示される[Route 53]を選択する
2.左ペインより[ホストゾーン]を選択して、クエリログを取得したいホストゾーンの[ホストゾーン名]をクリックする
3.対象ホストゾーン画面の右上[クエリログの設定]を選択する
4.クエリログの設定画面で事前に作成したCloudWatch Logsの[ロググループ]を選択する
※ロググループが表示されない場合は、ロググループが[バージニア北部]に作成されているか確認する
5.Route53からCloudWatch Logsにログを出力するためのアクセス許可を付与するため、[アクセス許可の付与]を選択する
6.画面上に「Route 53へのアクセス許可が正常に付与されました。」が表示されていることを確認し、[作成]を選択する
7.対象ホストゾーン画面上に[クエリログ記録設定が正常に作成されました。]と表示されることと、画面右の[クエリログの設定]から[クエリログ記録の設定を表示]に代わっていることを確認する
以上でクエリログ設定は完了となります。
DNSクエリログの確認
DNSクエリログ作成時に選択したCloudWatch Logsから、DNSクエリログを確認することが可能です。
指定されたホストゾーンのDNSクエリに応答するAmazon Route 53エッジロケーション*2ごとに1つCloudWatch Logsログストリームを作成します。各ログストリームの名前の形式はhosted-zone-id/edge-location-IDです。
例)Z1D633PJN98FT9/DFW3
ログの例は以下となります。
1.0 2017-12-13T08:16:02.130Z Z123412341234 example.com A NOERROR UDP Region 192.168.1.1 - |
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP Region 192.168.3.1 192.168.222.0/24 |
1.0 2017-12-13T08:16:03.983Z Z123412341234 example.com ANY NOERROR UDP Region 2001:db8::1234 2001:db8:abcd::/48 |
ログの出力内容は以下となります。
ログ項目 | 説明 |
ログ形式バージョン | クエリログのバージョン番号。 |
クエリのタイムスタンプ | Amazon Route 53がリクエストに応答した日時。 |
ホストゾーン ID | ログ内のすべてのDNSクエリに関連付けられているホストゾーンのID |
クエリ名 | リクエストで指定されたドメインまたはサブドメイン |
クエリタイプ | リクエストで指定されたDNSレコードタイプ、またはANY。 |
Response Code (レスポンスコード) |
Amazon Route 53がDNSクエリに応答して返したレスポンスDNSコード。 |
レイヤー 4 プロトコル | クエリの送信に使用されたプロトコル(TCP または UDP)。 |
Route 53エッジロケーション | クエリに応答したAmazon Route 53エッジロケーション。 |
リゾルバー IP アドレス | Amazon Route 53にリクエストを送信したDNSリゾルバーの IP アドレス。 |
EDNS クライアントサブネット |
DNSリゾルバーから利用可能な場合、リクエスト元のクライアントの部分 IP アドレス。 |
おわりに
Amazon Route 53のDNSクエリログを有効化することで、アクセス頻度や監視が可能です。
設定自体は難しくないので、運用の一つとして視野に入れて頂ければと思います。
*1:Amazon Route 53はグローバルサービスのため、グローバルリージョンであるバージニア北部にロググループを作成する必要があります。
*2:各エッジロケーションは、例えばDFW3など3 文字のコードと任意に割り当てられた番号によって識別されます。通常、この3文字コードは、エッジロケーションの近くにある空港の、国際航空運送協会の空港コードに対応します。