5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSのEC2でDNSに関するログを取得する方法

Last updated at Posted at 2023-01-06

はじめに

本記事はAWSのEC2使用時に、DNSに関するログを取得する方法について記載しています。

セキュリティインシデント発生時に、調査を行うために重要になってくるのが証跡です。
例えばインシデント対応で、DNSのクエリが行われたかどうかについて確認したい場合、リアルタイムならEC2インスタンスにログインして、tcpdumpコマンドなどを用いて通信をキャプチャすることは容易です。

しかし、事後検証の場合はOS及びMWでログを取得していない限り、立証が難しくなります。

本記事では、AWSで利用可能なDNSに関するログを取得する方法と、留意点についてまとめています。

VPCフローログ

VPCフローログは、VPCのネットワークインターフェイス間のIPトラフィックに関する情報をキャプチャすることができるVPCの機能です。

VPC、サブネット、またはネットワークインターフェイス毎にフローログを作成することができます。
また取得したVPCフローログをCloudWatch Logsに送信することもできます。

留意点としては、フローログに関する全てのIPトラフィックはキャプチャされません。
公式ドキュメントより、以下の通信はフローログの制限事項となっています。

フローログですべての IP トラフィックはキャプチャされません。以下のトラフィックの種類は記録されません。

  • Amazon DNS サーバーに接続したときにインスタンスによって生成されるトラフィック。独自の DNS サーバーを使用する場合は、その DNS サーバーへのすべてのトラフィックが記録されます。
  • Amazon Windows ライセンスのアクティベーション用に Windows インスタンスによって生成されたトラフィック。
  • インスタンスメタデータ用に 169.254.169.254 との間を行き来するトラフィック。
  • Amazon Time Sync Service の 169.254.169.123 との間でやり取りされるトラフィック。
  • DHCP トラフィック。
  • ミラートラフィック。
  • デフォルト VPC ルーターの予約済み IP アドレスへのトラフィック。
  • エンドポイントのネットワークインターフェイスと Network Load Balancer のネットワークインターフェイスの間のトラフィック。

従ってDNSクライアントにAWSのDNSサーバを用いて名前解決を行う場合は、記録されません。
Google Public DNS8.8.8.8などに対するDNSサーバの通信は記録できます。

VPCフローログの設定

取得対象のEC2インスタンスが起動していることを前提に、VPCフローログ(ネットワークインターフェース)の設定方法を以下に記載します。

マネジメントコンソールから作業する場合は以下の手順で実施します。
詳細はCloudWatch Logs へのフローログの発行をご参照ください。

  1. ロール及びポリシーの作成
  2. CloudWatch logsのロググループの作成
  3. VPCフローログの作成

ロール及びポリシーの作成

CloudWatch Logsに、フローログを発行するためには、適切なアクセス権が必要です。
IAMロールにアタッチするIAMポリシーには、少なくとも以下のアクセス許可が含まれている必要があります。

  • 許可ポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": "*"
        }
    ]
}

またロールに対して、以下の信頼ポリシーを設定します。

  • 信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "Service": "vpc-flow-logs.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

CloudWatch logsのロググループの作成

CloudWatchからロググループを選択し、任意のロググループを作成します。

VPCフローログの作成

ネットワークインターフェースのフローログを取得する場合は、以下の設定を行います。

EC2の「ネットワークインターフェース」ペインから、取得するEC2インスタンスのネットワークインターフェースの「フローログ」のタブを選択し、「フローログの作成」を押します。

スクリーンショット 2022-12-27 17.19.19.png

「フローログの作成」画面に遷移します。
「フローログの設定」の「Name」を入力します。

スクリーンショット 2022-12-27 16.55.33.png

上記で作成したロググループとIAMロールを選択し、「フローログの作成」を押します。
その他の設定は便宜上、デフォルトとしています。

スクリーンショット 2022-12-27 16.56.08.png

しばらくすると、ステータスが「アクティブ」に変わったことが確認できます。

スクリーンショット 2022-12-27 16.38.10.png

ロールに適切な権限がない場合、ステータスはエラーになります。

フローログ動作確認

EC2インスタンスのOSイメージは、Amazon Linuxです。

デフォルトの場合、クライアントのリゾルバは以下の設定です。
nameserverについては、公式ドキュメントのAmazon DNS サーバーから詳細が確認できます。

  • /etc/resolv.conf
options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
search ap-northeast-1.compute.internal
nameserver 10.0.0.2

上記設定の場合は、DNSに関する通信についてフローログでは記録できないため、設定を変更します。

options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
search ap-northeast-1.compute.internal
nameserver 8.8.8.8

EC2インスタンスから名前解決が行われた場合、ログイベントを参照すると、以下の通りに8.8.8.8は記録できることが確認できます。

スクリーンショット 2022-12-27 17.12.34.png

DNSクエリログ

DNSクエリログは、指定したVPCで発生するAWSのDNSサーバに対するDNSクエリを記録することができます。

設定はRoute 53から行います。

DNSクエリログでは、DNSクライアントに外部のDNSサーバを用いて名前解決を行う場合は、記録されません。
記録できるのはAWSのDNSサーバの通信のみです。

DNSクエリログの設定

「Route 53」の「クエリのログ記録」ペインから、「クエリログ記録の設定」を押します。

スクリーンショット 2022-12-27 17.23.08.png

「名前」と、「CloudWatch Logs のロググループ」を入力します。

スクリーンショット 2022-12-27 17.24.11.png

「VPCを追加」を押して、VPCを追加した後に、「クエリログの設定」を押します。

スクリーンショット 2022-12-27 17.30.22.png

「クエリログの設定」が完了しました。

スクリーンショット 2022-12-27 17.33.08.png

「クエリがログに記録される VPC」を見ると、ログ記録のステータスがACrtiveになっていることが確認できます。

スクリーンショット 2022-12-27 17.35.22.png

クエリログ動作確認

DNSリゾルバの設定は以下の通りに、デフォルトの状態(AWSのDNSサーバ)です。

  • /etc/resolv.conf
options timeout:2 attempts:5
; generated by /usr/sbin/dhclient-script
search ap-northeast-1.compute.internal
nameserver 10.0.0.2

EC2インスタンスから名前解決が行われた場合、ログイベントを参照すると、以下の通りにAWSのDNSサーバは記録できることが確認できます。

スクリーンショット 2022-12-27 17.41.43.png

またレコードをクリックすると、詳細についてJSON形式で確認することができます。

スクリーンショット 2022-12-27 17.41.59.png

おわりに

セキュリティインシデントに備えて、必要に応じて証跡を取得することは、クラウドを利用する場合も変わりません。

参考

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?