1
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 3 years have passed since last update.

Amazon Route 53 Resolver DNS Firewall 検証

Last updated at Posted at 2021-06-22

 こんにちは。弁護士ドットコム SRE 室のテイです。
 今年(2021年)3 月にリリースされた Amazon Route 53 Resolver DNS Firewall を検証してみました。 

DNS Firewall とは

 DNS Firewall は VPC からのアウトバウンド DNS リクエストを保護するサービスです。保護方法は以下のとおりです。

  • 特定のドメイン名以外の名前解決をさせない
  • 不良と判別されているドメイン名の名前解決をさせない

作成手順

 Route 53 Resolver DNS Firewall という名前ですが、作成は Route53 ではなく、VPC のコンソールからです。

 VPC コンソール画面で「DNS FIREWALL」→「ルールグループ」→「ルールグループを作成」の順でクリックします。
image.png

 ルールグループの名前を記入して、「Next」をクリックします。
image.png

 「ルールを追加」をクリックします。
image.png

 ルール追加画面でルールの名前を記入します。

 ドメインリストで「独自のドメインリストを追加」と「AWS マネージドドメインリストを追加」を選択できます。
 今回は検証するため、「独自のドメインリストを追加」を選択します。
 「新しいドメインリストを作成」を選択して、ドメイン名を記入して、ブロックしたいドメイン名を記入します。検証のため、www.google.co.jp をリストに入れました。
 今回は対象ドメインをブロックするため、Action では BLOCK を選択します。

  • ALLOW:ドメインリストにあるドメインへのアクセスを許可する
  • BLOCK:ドメインリストにあるドメインに対する名前解決できないようブロックする
  • ALERT:アクセスを許可するけれど、DNS クエリログではアラートとして記録される

 ルールを追加した後、「Next」ではなく、「ルールを追加」ボタンをクリックします。間違って「Next」をクリックすると、設定したルールが追加されず、次の画面に行ってしまいます。
image.png

 ちなみに、以下の2つが AWS からマネージドドメインリストとして提供されています。

  • AWSManagedDomainsMalwareDomainList(既知のマルウェアの通信先ドメインのリスト)
  • AWSManagedDomainsBotnetCommandandControl(既知のボットネットの Command & Control サーバのドメインのリスト)

 どのようなドメインがこれらに含まれているか公表されてはいませんが、本番運用の時にマネージドドメインリストを利用するのが良いでしょう。

 上記の画面で「ルールを追加」ボタンをクリックして、設定されたルールが追加されました。この画面で「Next」ボタンをクリックします。
image.png

 複数ルールがある場合、優先度を設定し、「Next」をクリックします。
 最後、タグの設定画面と確認画面がありますが、省略します。
image.png

 ルールグループを作成した後、VPC と関連付けます。
 対象ルールグループを選択して、下にある「関連付けられた VPC」をクリックして、「VPC を関連付け」をクリックします。
image.png

 対象 VPC と関連付けた後、しばらくすると、ステータスが「完了」になりまして、DNS Firewall が動作し始めます。
スクリーンショット 2021-06-08 14.32.09.png

動作確認

 ルールグループと関連付けられた VPC 内で EC2 インスタンスを起動して、www.google.co.jp へアクセスしてみます。今回は curlnslookupコマンドでテストしてみました。

 「ルールを追加」画面で、BLOCK アクションを選択すると、NODATA、NXDOMAIN、OVERRIDE 3つからどのように応答するかが設定できます。それぞれをテストしてみます。

NODATA

 NODATA はクエリは成功したが、当該クエリについて利用可能な応答がないという結果になります。
 NODATA に設定すると、 curl によるアクセスは対象ドメイン名の名前解決ができず、ちゃんとブロックされました。また、nslookup では No answer が表示されました。

$ curl -v www.google.co.jp
* Rebuilt URL to: www.google.co.jp/
* Could not resolve host: www.google.co.jp
* Closing connection 0
curl: (6) Could not resolve host: www.google.co.jp

$ nslookup www.google.co.jp
Server:         10.50.0.2
Address:        10.50.0.2#53

Non-authoritative answer:
*** Can't find www.google.co.jp: No answer

NXDOMAIN

 NXDOMAIN はクエリ内のドメイン名が存在しないという結果になります。
 NXDOMAIN にする場合、curl の結果は同じになるのですが、nslookup を実行すると、NXDOMAIN が表示されることが分かります。

$ nslookup www.google.co.jp
Server:         10.50.0.2
Address:        10.50.0.2#53

** server can't find www.google.co.jp: NXDOMAIN

OVERRIDE

 OVERRIDE はクエリに対するカスタムオーバーライドの応答を提供します。
 ルールの編集画面で、「OVERRIDE」を選択して、当社が利用している情報共有サービス esa.io のドメインをオーバーライド用ドメインとして記入し、レコードタイプは CNAME を選択します。(CNAME しか選択できません)
スクリーンショット 2021-06-08 16.19.22.png

 curl を実行して、301 になりまして、リダイレクトされたことが分かります。

$ curl -v www.google.co.jp
* Rebuilt URL to: www.google.co.jp/
*   Trying 54.199.**.**...
* TCP_NODELAY set
* Connected to www.google.co.jp (54.199.**.**) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.co.jp
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: awselb/2.0
< Date: Tue, 08 Jun 2021 07:18:49 GMT
< Content-Type: text/html
< Content-Length: 134
< Connection: keep-alive
< Location: https://www.google.co.jp:443/
<
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>
* Connection #0 to host www.google.co.jp left intact

 nslookup コマンドでも確認してみます。 www.google.co.jp に対するクエリには [team 名].esa.io の Public IP が返ってきています。

$ nslookup www.google.co.jp
Server:         10.50.0.2
Address:        10.50.0.2#53

Non-authoritative answer:
www.google.co.jp        canonical name = [team 名].esa.io.
Name:   [team 名].esa.io
Address: 52.194.**.**
Name:   [team 名].esa.io
Address: 54.199.**.**

 以上、Amazon Route 53 Resolver DNS Firewall の検証でした。
 次回はブロック対象のドメインへアクセスすることが検知され、Slack へ通知する監視設定を紹介します。

1
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
1
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?