DNS温泉番外編2016

March 26, 2016 @IIJ

鈴木常彦 @E-ONTAP.COM

プログラム

DNS 基礎講座 ~ 浸透いうな ~

キーワード (ホワイトボードで図解)

ゾーンとは

権威とは何か

ゾーン分割

ゾーンデータ

ゾーンの主たる4つの構成物

NS, SOA

グルー

再帰

RFC1034 より抜粋: これが書かれた時代にはキャッシュとコンテンツの分離がちゃんとなされていなかったことを考慮して理解する必要がある

鈴木の解釈: recursive は iterative あるいはローカルな情報を持つサーバに辿り着くまで多段となりうるから recursive

5種類の DNS 返答

Notes on the Domain Name System (D.J.Bernstein) - The five types of DNS responses (前野訳)

TTL

RFC 2181 講座 (ランキング)

RFC2181
5.4.1. Ranking data

Trustworthiness shall be, in order from most to least:

     + Data from a primary zone file, other than glue data,
     + Data from a zone transfer, other than glue,
     + The authoritative data included in the answer section of an
       authoritative reply.
     + Data from the authority section of an authoritative answer,
     + Glue from a primary zone, or glue from a zone transfer,
     + Data from the answer section of a non-authoritative answer, and
       non-authoritative data from the answer section of authoritative
       answers,
     + Additional information from an authoritative answer,
       Data from the authority section of a non-authoritative answer,
       Additional information from non-authoritative answers.

ランキング

RFC2181
5.4.1. Ranking data
  (snip)
   Unauthenticated RRs received and cached from the least trustworthy of
   those groupings, that is data from the additional data section, and
   data from the authority section of a non-authoritative answer, should
   not be cached in such a way that they would ever be returned as
   answers to a received query.  They may be returned as additional
   information where appropriate.  Ignoring this would allow the
   trustworthiness of relatively untrustworthy data to be increased
   without cause or excuse.

2008 年の BlackHat での Kaminsky の説明が間違っていた所以がここに...

キャッシュ上書き実験

root@server_unbound147:/ # dnsqr a www.wine.nom
1 www.wine.nom:
113 bytes, 1+1+2+2 records, response, noerror
query: 1 www.wine.nom
answer: www.wine.nom 1 A 192.168.11.11
authority: wine.nom 239 NS ns.wine.nom
authority: wine.nom 239 NS ns2.wine.nom
additional: ns.wine.nom 239 A 192.168.11.11
additional: ns2.wine.nom 239 A 192.168.11.12

root@server_unbound147:/ # dnsqr a www.wine.nom
1 www.wine.nom:
113 bytes, 1+1+2+2 records, response, noerror
query: 1 www.wine.nom
answer: www.wine.nom 30 A 192.168.11.11
authority: wine.nom 300 NS ns.wine.nom
authority: wine.nom 300 NS ns2.wine.nom
additional: ns.wine.nom 300 A 192.168.11.11
additional: ns2.wine.nom 300 A 192.168.11.12
* この動作は Unbound 1.4.8 , BIND 9.2.3 で修正されたが、、、

幽霊ドメイン名脆弱性

JPRS 重複文書: 「ghost domain names(幽霊ドメイン名)」脆弱性について
https://jprs.jp/tech/notice/2012-02-17-ghost-domain-names.html
に書かれている例

  www.example.jp.  46400 IN A  192.0.2.10
  example.jp.      46400 IN NS ns1.example.jp.
  ns1.example.jp.  46400 IN A  192.0.2.1

というキャッシュに対して、権威サーバ側で NS を ns2.example.jp に書き換え、それを問い合わせると、

  ;; ANSWER SECTION
  ns2.example.jp.  86400 IN A  192.0.2.1
  ;; AUTHORITY SECTION
  example.jp.      86400 IN NS ns2.example.jp.
  ;; ADDITIONAL SECTION
  ns2.example.jp.  86400 IN A  192.0.2.1

という応答が返り、脆弱性のあるキャッシュサーバは以下のようにキャッシュが上書きされる。

  www.example.jp.  46400 IN A  192.0.2.10
  example.jp.      86400 IN NS ns2.example.jp.
  ns1.example.jp.  46400 IN A  192.0.2.1
  ns2.example.jp.  86400 IN A  192.0.2.1

つまり NS が変化すると TTL ごと NS キャッシュが更新され、これが繰り返されると委譲元の NS が変わっても古いサーバにアクセスし続けることになる。

NS 移転において憂慮すべき点

適切な NS 移転の要点

委任/移転インジェクション

DNS温泉2補講スライド

「浸透」でごまかすことの弊害

(このページのパーマネントリンクはこちらをお願いします)

以上、ご理解頂けましたら、、、