Open1

DNS勉強メモ

88888888_kota88888888_kota

メモ

1,2章

  • ツリー構造で一意生を担保
  • DNS
    • hostファイルによる管理ではない
    • それぞれの階層の管理者から必要な情報を入手してドメイン名の階層構造をたどり最終的な答えであるIPアドレスを得る。
    • jp→example.jp→www.example.jpと名前解決していく
  • ネームサーバーが管理すべき情報
    • 自身のゾーン情報(ドメイン名、IPアドレス)
    • 委任先情報
  • レジストリ
    • 例外的に一元管理(ドメイン名、IPアドレス)
    • 各TKDごとに存在
    • レジストラがユーザーと仲介してくれる
  • サイバースクワッティング
  • ドメイン名登録→公開の手順
    • レジストラサービスを利用してドメイン名を登録
    • ネームサーバーに取得したドメイン名とIPアドレスの対応を設定
    • ネームサーバー情報をレジストリDBに登録
  • レジストリをまたがる形で管理されている
    • インターネットガバナンス
    • ICANN

3章

  • 名前解決
    • iterative resolution
  • ゾーン
    • 委任によって管理を任された範囲
  • リソースレコード
    • 権威サーバが持っているゾーンの設定内容
  • フルリゾルバー
    • DNSキャッシュサーバ
    • 負荷と時間、トラフィックの軽減
    • ネガティブキャッシュ
    • 存在しないという結果をキャッシュ
  • 権威サーバ
    • 複数台で冗長構成。負荷分散、可用性。
  • DNSには逆引き機能もある(IPアドレス→ドメイン名)

4,5章

  • 特になし

6章

  • DNS NOTIFY
  • リソースレコード
    • SOAリソースレコード
      • ゾーン管理に関する情報
      • ゾーンの頂点に設定
    • NSリソースレコード
      • 委任に関する情報
    • CNAMEリソースレコード
      • ドメイン名の置換

7章

  • DNSリフレクター攻撃
    • DNSに送信元を偽造したリクエストを送信し、DNS→送信元IPアドレスのレスポンスを大量に発生させる。
    • フルリゾルバーはネットワークを制限し、特定の端末からしたリクエストを受けないようにしている
  • Public DNS

Public DNS | Google Developers

Quad9 | A public and free DNS service for a better security and privacy

1.1.1.1 - The free app that makes your Internet faster.

8章

  • インシデント:アクシデントの一歩手前。

  • アクシデント:事件、事故

  • digコマンド

    • DNSの動作確認コマンド

      DNSサーバー(フルリゾルバー)の確認

      dig @8.8.8.8 www.google.com IN A
      
      ; <<>> DiG 9.10.6 <<>> @8.8.8.8 www.google.com IN A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38870
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 512
      ;; QUESTION SECTION:
      ;www.google.com.			IN	A
      
      ;; ANSWER SECTION:
      www.google.com.		253	IN	A	142.250.206.196
      
      ;; Query time: 19 msec
      ;; SERVER: 8.8.8.8#53(8.8.8.8)
      ;; WHEN: Sat Nov 19 21:48:01 JST 2022
      ;; MSG SIZE  rcvd: 59
      
      • status, flagが重要
        • flag
          • rd(recursion desired)
          • ra(recursion available): フルリゾルバー
      • 権威サーバの確認
      dig +norec @202.11.16.49 jprs.co.jp A
      
      ; <<>> DiG 9.10.6 <<>> +norec @202.11.16.49 jprs.co.jp A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3327
      ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1232
      ;; QUESTION SECTION:
      ;jprs.co.jp.			IN	A
      
      ;; ANSWER SECTION:
      jprs.co.jp.		300	IN	A	117.104.133.165
      
      ;; AUTHORITY SECTION:
      jprs.co.jp.		86400	IN	NS	ns3.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns1.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns2.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns4.jprs.co.jp.
      
      ;; ADDITIONAL SECTION:
      ns1.jprs.co.jp.		86400	IN	A	202.11.16.49
      ns2.jprs.co.jp.		86400	IN	A	202.11.16.59
      ns3.jprs.co.jp.		86400	IN	A	203.105.65.178
      ns4.jprs.co.jp.		86400	IN	A	203.105.65.181
      ns1.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a153
      ns2.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a253
      ns3.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a153
      ns4.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a253
      
      ;; Query time: 25 msec
      ;; SERVER: 202.11.16.49#53(202.11.16.49)
      ;; WHEN: Sat Nov 19 22:16:33 JST 2022
      ;; MSG SIZE  rcvd: 303
      
      • サーバー(202.11.16.49)で管理していないドメイン名(www.google.com)を指定すると名前解決されないので、フルリゾルバーとして機能していないことがわかる
      
      dig @202.11.16.49 www.google.com A
      
      ; <<>> DiG 9.10.6 <<>> @202.11.16.49 www.google.com A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 54022
      ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
      ;; WARNING: recursion requested but not available
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1232
      ;; QUESTION SECTION:
      ;www.google.com.			IN	A
      
      ;; Query time: 24 msec
      ;; SERVER: 202.11.16.49#53(202.11.16.49)
      ;; WHEN: Sat Nov 19 22:22:04 JST 2022
      ;; MSG SIZE  rcvd: 43
      
      • フルリゾルバーの動作確認(norecを指定しないでシステムに設定してあるフルリゾルバーに対して確認を行なっている)

        dig www.youtube.com
        
        ; <<>> DiG 9.10.6 <<>> www.youtube.com
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48583
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1
        
        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 4096
        ;; QUESTION SECTION:
        ;www.youtube.com.		IN	A
        
        ;; ANSWER SECTION:
        www.youtube.com.	75768	IN	CNAME	youtube-ui.l.google.com.
        youtube-ui.l.google.com. 104	IN	A	142.250.206.206
        youtube-ui.l.google.com. 104	IN	A	172.217.161.238
        youtube-ui.l.google.com. 104	IN	A	142.250.206.238
        youtube-ui.l.google.com. 104	IN	A	142.250.207.110
        youtube-ui.l.google.com. 104	IN	A	172.217.25.174
        youtube-ui.l.google.com. 104	IN	A	172.217.161.206
        youtube-ui.l.google.com. 104	IN	A	142.250.76.142
        
        ;; Query time: 21 msec
        ;; SERVER: 122.197.254.137#53(122.197.254.137)
        ;; WHEN: Sat Nov 19 22:27:09 JST 2022
        ;; MSG SIZE  rcvd: 190
        
  • digコマンドの応用(フルリゾリバーの処理を模倣)

    • ルートサーバからhitファイル取得

      • 今回はa.root-servers.netのhintファイル取得

      • https://www.rootusers.com/12-dig-command-examples-to-query-dns-in-linux/

        dig +noall +answer +add +bufsize=4096 @a.root-servers.net . NS | sort
        .			518400	IN	NS	a.root-servers.net.
        .			518400	IN	NS	b.root-servers.net.
        .			518400	IN	NS	c.root-servers.net.
        .			518400	IN	NS	d.root-servers.net.
        .			518400	IN	NS	e.root-servers.net.
        .			518400	IN	NS	f.root-servers.net.
        .			518400	IN	NS	g.root-servers.net.
        .			518400	IN	NS	h.root-servers.net.
        .			518400	IN	NS	i.root-servers.net.
        .			518400	IN	NS	j.root-servers.net.
        .			518400	IN	NS	k.root-servers.net.
        .			518400	IN	NS	l.root-servers.net.
        .			518400	IN	NS	m.root-servers.net.
        a.root-servers.net.	518400	IN	A	198.41.0.4
        a.root-servers.net.	518400	IN	AAAA	2001:503:ba3e::2:30
        b.root-servers.net.	518400	IN	A	199.9.14.201
        b.root-servers.net.	518400	IN	AAAA	2001:500:200::b
        c.root-servers.net.	518400	IN	A	192.33.4.12
        c.root-servers.net.	518400	IN	AAAA	2001:500:2::c
        d.root-servers.net.	518400	IN	A	199.7.91.13
        d.root-servers.net.	518400	IN	AAAA	2001:500:2d::d
        e.root-servers.net.	518400	IN	A	192.203.230.10
        e.root-servers.net.	518400	IN	AAAA	2001:500:a8::e
        f.root-servers.net.	518400	IN	A	192.5.5.241
        f.root-servers.net.	518400	IN	AAAA	2001:500:2f::f
        g.root-servers.net.	518400	IN	A	192.112.36.4
        g.root-servers.net.	518400	IN	AAAA	2001:500:12::d0d
        h.root-servers.net.	518400	IN	A	198.97.190.53
        h.root-servers.net.	518400	IN	AAAA	2001:500:1::53
        i.root-servers.net.	518400	IN	A	192.36.148.17
        i.root-servers.net.	518400	IN	AAAA	2001:7fe::53
        j.root-servers.net.	518400	IN	A	192.58.128.30
        j.root-servers.net.	518400	IN	AAAA	2001:503:c27::2:30
        k.root-servers.net.	518400	IN	A	193.0.14.129
        k.root-servers.net.	518400	IN	AAAA	2001:7fd::1
        l.root-servers.net.	518400	IN	A	199.7.83.42
        l.root-servers.net.	518400	IN	AAAA	2001:500:9f::42
        m.root-servers.net.	518400	IN	A	202.12.27.33
        m.root-servers.net.	518400	IN	AAAA	2001:dc3::35
        
      • a.root-servers.netのIPアドレス198.41.0.4を確認できる

    • ルートサーバへwww.jprs.co.jpを問い合わせ

      dig +norec @198.41.0.4 www.jprs.co.jp A
      
      ; <<>> DiG 9.10.6 <<>> +norec @198.41.0.4 www.jprs.co.jp A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13175
      ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 16
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1472
      ;; QUESTION SECTION:
      ;www.jprs.co.jp.			IN	A
      
      ;; AUTHORITY SECTION:
      jp.			172800	IN	NS	a.dns.jp.
      jp.			172800	IN	NS	b.dns.jp.
      jp.			172800	IN	NS	c.dns.jp.
      jp.			172800	IN	NS	d.dns.jp.
      jp.			172800	IN	NS	e.dns.jp.
      jp.			172800	IN	NS	f.dns.jp.
      jp.			172800	IN	NS	g.dns.jp.
      jp.			172800	IN	NS	h.dns.jp.
      
      ;; ADDITIONAL SECTION:
      a.dns.jp.		172800	IN	A	203.119.1.1
      b.dns.jp.		172800	IN	A	202.12.30.131
      c.dns.jp.		172800	IN	A	156.154.100.5
      d.dns.jp.		172800	IN	A	210.138.175.244
      e.dns.jp.		172800	IN	A	192.50.43.53
      f.dns.jp.		172800	IN	A	150.100.6.8
      g.dns.jp.		172800	IN	A	203.119.40.1
      h.dns.jp.		172800	IN	A	161.232.72.25
      a.dns.jp.		172800	IN	AAAA	2001:dc4::1
      b.dns.jp.		172800	IN	AAAA	2001:dc2::1
      c.dns.jp.		172800	IN	AAAA	2001:502:ad09::5
      d.dns.jp.		172800	IN	AAAA	2001:240::53
      e.dns.jp.		172800	IN	AAAA	2001:200:c000::35
      f.dns.jp.		172800	IN	AAAA	2001:2f8:0:100::153
      h.dns.jp.		172800	IN	AAAA	2a01:8840:1bc::25
      
      ;; Query time: 132 msec
      ;; SERVER: 198.41.0.4#53(198.41.0.4)
      ;; WHEN: Sat Nov 19 23:05:21 JST 2022
      ;; MSG SIZE  rcvd: 499
      
      • AUTHORITY SECTIONから委任情報(jpへの委任)を確認できる
    • 次はjpの権威サーバのどれか(今回はb.dns.jpのIPv4)に問い合わせ

      dig +norec @202.12.30.131 www.jprs.co.jp A
      
      ; <<>> DiG 9.10.6 <<>> +norec @202.12.30.131 www.jprs.co.jp A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9966
      ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1232
      ;; QUESTION SECTION:
      ;www.jprs.co.jp.			IN	A
      
      ;; AUTHORITY SECTION:
      jprs.co.jp.		86400	IN	NS	ns1.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns2.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns3.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns4.jprs.co.jp.
      
      ;; ADDITIONAL SECTION:
      ns4.jprs.co.jp.		86400	IN	A	203.105.65.181
      ns3.jprs.co.jp.		86400	IN	A	203.105.65.178
      ns2.jprs.co.jp.		86400	IN	A	202.11.16.59
      ns1.jprs.co.jp.		86400	IN	A	202.11.16.49
      ns4.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a253
      ns3.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a153
      ns2.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a253
      ns1.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a153
      
      ;; Query time: 25 msec
      ;; SERVER: 202.12.30.131#53(202.12.30.131)
      ;; WHEN: Sat Nov 19 23:10:12 JST 2022
      ;; MSG SIZE  rcvd: 291
      
      • AUTHORITY SECTIONから委任情報(jprs.co.jpへの委任)を確認できる
    • 次はjprs.co.jpの権威サーバのどれか(今回はns4.jprs.co.jpのIPv4)に問い合わせ(IPv6だと何故かできなかった)

      dig +norec @203.105.65.181 www.jprs.co.jp A
      
      ; <<>> DiG 9.10.6 <<>> +norec @203.105.65.181 www.jprs.co.jp A
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29985
      ;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1232
      ;; QUESTION SECTION:
      ;www.jprs.co.jp.			IN	A
      
      ;; ANSWER SECTION:
      www.jprs.co.jp.		300	IN	A	117.104.133.165
      
      ;; AUTHORITY SECTION:
      jprs.co.jp.		86400	IN	NS	ns2.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns1.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns4.jprs.co.jp.
      jprs.co.jp.		86400	IN	NS	ns3.jprs.co.jp.
      
      ;; ADDITIONAL SECTION:
      ns1.jprs.co.jp.		86400	IN	A	202.11.16.49
      ns2.jprs.co.jp.		86400	IN	A	202.11.16.59
      ns3.jprs.co.jp.		86400	IN	A	203.105.65.178
      ns4.jprs.co.jp.		86400	IN	A	203.105.65.181
      ns1.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a153
      ns2.jprs.co.jp.		86400	IN	AAAA	2001:df0:8::a253
      ns3.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a153
      ns4.jprs.co.jp.		86400	IN	AAAA	2001:218:3001::a253
      
      ;; Query time: 20 msec
      ;; SERVER: 203.105.65.181#53(203.105.65.181)
      ;; WHEN: Sat Nov 19 23:16:51 JST 2022
      ;; MSG SIZE  rcvd: 307
      
      • ANSWER SECTIONよりwww.jprs.co.jpのIPアドレスが117.104.133.165だとわかる
  • 便利なサイト(DNSの動作確認)

    Zonemaster

    DNSViz | A DNS visualization tool

    DNSの設定チェック

  • サーバーの監視

    • サーバー監視ツール

    Nagios - The Industry Standard In IT Infrastructure Monitoring

    • トラフィック解析ツール

    Home | DNS-OARC

    MRTG - The Multi Router Traffic Grapher

9章

  • IP AnyCast
    • IPアドレスを複数ホストで共有
      • 負荷分散、時短、攻撃の影響範囲を減らす
  • DNSリフレクター攻撃(DNSアンプ攻撃)
    • 送信元IPアドレスを偽ってDNSへ大量にリクエストし、偽ったIPアドレス宛にレスポンスを返すようにする。
    • 対策:フルリゾルバー側でアクセスコントロールをする(どのIPアドレスからのアクセスを許容するか設定しておく)
      • 権威サーバーに関してはIPアドレスベースの制御は難しいのでRRL(Response Rate Limiting)を導入。ある宛先への同じ内容のresponseが一定回数を超えた場合、responseを制限する。
  • ランダムサブドメイン攻撃
    • キャッシュサーバーのキャッシュをネガティブキャッシュで埋めて、キャッシュ機能を無効化し、権威サーバーへアクセスさせる。
    • 対策: オープンリゾルバーにIP53Bを実施など
  • BINDの脆弱性をついたDos攻撃
    • 対策:ソフトを最新版にアップデートする
  • キャッシュポイズニング
    • キャッシュの内容(ドメイン名に対応するIPアドレス)を書き換え、悪意のあるサーバーへ誘導する
    • 対策:ソースポートランダマイゼーション
      • 多数のポート番号をランダムに使うようにする

10章

TODO

  • hostファイル確認
  • Whoisコマンド実行
  • リソースレコード整理
  • ヒントファイル調べる