DNS のバックアップソース(No.16)

#author("2023-02-01T23:04:32+09:00","default:k1rou","k1rou")
*DNS とは [#c64f0da4]
**名称 [#bbb83867]
-Domain Name System

**概要 [#h4a8bdbf]
-[[IPアドレス]]と[[ドメイン]]名(ホスト名)の対応表を管理して、利用者から提示されるドメイン名に対応するIPアドレスを応答する仕組み

*DNSの利用 [#e511464f]
-[[Web]]における[[URL]]
-[[電子メール]]における[[メールアドレス]]

*DNSの仕様 [#fd355dd5]
**通信プロトコル(トランスポート層) [#m056cc65]
-[[UDP]]
--一般的なDNSサーバへの接続はUDPが使われている。
--最大512B
--1往復

-[[TCP]]
--TCPフォールバック
---[[UDP]]のサイズ(512B)に収まらない場合に限り、TCP fallbackされる仕様(RFC1123)
--3往復(3 say handshake)

-EDNS0
--Extension mechanism for DNS version 0
--DNSの拡張機構
--UDPのパケットサイズを最大65,535Bまで拡張することを可能とする
--OPTリソースレコードでUDPパケットサイズを識別する

**[[ポート番号]] [#ic737a54]
-53/UDP ※サイズが512B以下の場合、またはサイズが512Bを超過してEDNS0を使う場合
-53/TCP ※サイズが512Bを超過してTCPフォールバックを使う場合

**DNSリクエストの暗号化方式(クライアントとフルリゾルバ間) [#ic4fdbc7]
-[[UDP]]の代わりに[[HTTPS]]または[[TLS]]を使う。
--[[DoH]] -DNS over HTTPS
--[[DoT]] -DNS over TLS

-ソフトウェア
--[[DNSCrypt]]~
https://www.dnscrypt.org/

**DNSリクエストの暗号化方式(フルリゾルバと権威リゾルバ間) [#ycd44488]
-[[DNSSEC]]

*DNSの構成要素 [#k32dd356]
**リゾルバ [#i780864f]
-Resolver
-名前解決を行う
--ホスト名とIPアドレスを紐づけ、ホスト名をIPアドレスに変換する機能。
--メールアドレスとメールサーバを紐づける機能。
-リゾルバには、スタブリゾルバとフルサービスリゾルバの2種類ある。

***スタブリゾルバ [#s1950542]
-Stub Resolver
-別称
--DNSクライアント
-パソコンやスマホなどの端末上に搭載されている機能
-フルサービスリゾルバに対して名前解決を要求する(再帰的要求)

***フルサービスリゾルバ [#a479a968]
-Full-Service Resolver
-別称
--フルリゾルバ
--キャッシュサーバ、DNSキャッシュサーバ、キャッシュDNSサーバ
--参照サーバ
--ネームサーバ、DNSサーバ
-スタブリゾルバからの名前解決要求(再起的要求)を受けて、権威サーバに対して名前解決の為の問い合わせ(非再帰的要求)を行う
--権威サーバへの問い合わせはルートサーバから始まり、名前解決するまで権威サーバの階層をたどって問い合わせを行う
--ルートサーバのIPアドレスが記載された一覧(ヒントファイル)を保持する
--ヒントファイルの情報を使ってルートサーバから最新のルートサーバのIPアドレスを得る仕組み(プライミング)
-名前解決した内容は[[キャッシュ]]に保存し、次回の同じ名前解決要求があった場合は、キャッシュに保存されている内容を応答する
--名前解決の結果、目的の[[リソースレコード]]が見つからなかった場合は、見つからなかったことをキャッシュに保存する(ネガティブキャッシュ)
-個人と企業
--個人の場合は、契約している[[ISP]]が管理しているフルサービスリゾルバを利用する。
--企業の場合は、情報システム部門が管理しているフルサービスリゾルバを利用する。
-フルリゾルバの設定(Linux)
--/etc/resolv.conf の「nameserver」で指定する。

***(補足) フォワーダ [#dfa167e2]
-スタブリゾルバとフルサービスリゾルバの間に配置される
-スタブリゾルバからの名前解決要求を受けて、フルサービスリゾルバに転送する
-家庭用のルータなどが備えている機能

**権威サーバ [#k6057b24]
-別称
--権威DNSサーバ
--ゾーンサーバ
--コンテンツサーバ、DNSコンテンツサーバ
--ネームサーバ、DNSサーバ
-権威サーバは、ルートサーバを頂点とした階層構造で構成される。
-自身が委任を受けたゾーンの情報と、自身が委任しているゾーンの委任情報を保持する。
-フルサービスリゾルバからの名前解決要求を受けて(非再帰的要求)、保持している情報を応答する。
-ゾーンの情報(ゾーンデータ)は、[[リソースレコード]]という形式で保持する。

***ルートサーバ [#w97944f9]
-別称
--ルートネームサーバ、DNSルートサーバ
-ドメイン名空間の頂点([[TLS]])に位置するサーバ。
-ドメイン名の名前解決において、[[TLD]]の名前解決を行う。

***可用性の向上 [#o284165e]
-プライマリとセカンダリ
-権威サーバはプライマリとセカンダリの2台構成で運用する必要がある。
--プライマリサーバ(プライマリDNSサーバ)
--セカンダリサーバ(セカンダリDNSサーバ)

-ゾーンデータを持つ権威サーバ(プライマリサーバ)のゾーンデータは、ゾーンデータを持たない権威サーバ(セカンダリサーバ)にコピーされる(ゾーン転送)
-一般的に、自社の権威サーバをプライマリサーバ、上位プロバイダの権威サーバをセカンダリサーバにする

-ゾーン転送
--権威サーバのプライマリとセカンダリが登録情報を同期させるために行う登録情報の転送機能のこと
--ゾーン転送要求は、セカンダリサーバからプライマリサーバに対して行われる。
---53ポート/TCPで行われる
--転送方法の種類
---AXFR(Authoritative Transfer):ゾーンの全ての情報を転送する
---IXFR(Incremental Transfer):差分の情報を転送する
--DNS NOTIFY
---プライマリサーバでゾーンデータに更新があったことをセカンダリサーバに通知する仕組み

*DNSサーバ [#h868c09d]
**オープンリゾルバ [#secd2072]
-問い合わせ元のアドレスや、問い合わせ対象のドメインに制限なく名前解決の要求に応じるフルサービスリゾルバ
-[[DNSキャッシュポイズニング]]や[[DNSリフレクション攻撃]]に対して脆弱。
-[[Public DNS]](パブリックDNS)

*名前解決について [#t80c42fe]
**名前解決の手順 [#ea7457ce]
+クライアントは自ドメインのDNSサーバに問い合わせをする。
+自ドメインのDNSサーバは、ルートサーバから下位のDNSサーバに向かって問い合わせを繰り返す。
+自ドメインのDNSサーバは、目的のホスト名のDNSサーバからIPアドレスを取得し、クライアントに応答する。

**再帰的問い合わせと非再帰的問い合わせ [#pa10c826]
***再帰的問い合わせ [#t627afb9]
-recursive query
-スタブリゾルバからフルサービスリゾルバに対して行われる問い合わせ
-再帰的問い合わせを受けたフルサービスリゾルバは、名前解決が完結するまで権威サーバをたどって問い合わせをした結果を応答する

***非再帰的問い合わせ [#gf919ce8]
-non-recursive query
-反復問い合わせ (iterative query)
-フルサービスリゾルバから権威サーバに対して行われる問い合わせ
-非再帰的問い合わせを受けたフルサービスリゾルバは、自身が応答できる情報のみを応答する(他のDNSサーバへの問い合わせは行わない)

**正引きと逆引き [#j1181aa8]
-正引き
--ドメイン名に対応するIPアドレスを検索すること
-逆引き
--IPアドレスに対応するドメイン名を検索すること

*ゾーン [#s21a6d21]
-委任により管理を任された範囲のこと

-ゾーンデータ
--対象のゾーンに設定されている情報のこと

-ゾーンファイル
--ゾーンデータを記述するファイル。プライマリサーバに設定される
--RFC1035

*リソースレコード [#r358e523]
-権威サーバに登録するゾーンの情報のこと
-「[[リソースレコード]]」参照

**グルーレコード [#v0051a0b]
-DNSサーバのドメイン名に対応するIPアドレスを、問い合わせ対象のドメインの上位のDNSサーバに登録することで、上位のDNSサーバから問い合わせ対象のDNSサーバに繋がるようにすることで、名前解決できるようにすること。




*DNSメッセージ [#ne84aa11]
**DNSメッセージの構造 [#m6f3d892]
-問い合わせと応答のメッセージは構造が同じ
-応答のメッセージには問い合わせのメッセージの内容がコピーして作成される
-応答情報の各セクションのデータがない場合はセクション自体が作成されない
-メッセージ内のドメイン名の表現
--<ラベルの長さ(16進数)><ラベル(16進数)>...<"00"(16進数)>

***制御情報 [#l4b739c2]
-Header セクション
--0〜15bit
---ID(16) ※トランザクションID(応答は問い合わせと同じ)
--16〜31bit
---QR(1) ※メッセージの種類[0:問い合わせ、1:応答]
---OPCODE(4) ※問い合わせの種類[0:通常、4:NOTIFY、5:UPDATE]
---AA(1)
---TC(1)
---RD(1) ※問い合わせ先[0:権威サーバ、1:フルサービスリゾルバ]
---RA(1) ※名前解決の可否[0:非サポート、1:サポート]
---Z(1) ※予備("0")
---AD(1)
---CD(1)
---RCODE(4) ※応答コード
--32〜47bit
---QDCOUNT(16) ※Question セクションの数("1")
--48〜63bit
---ANCOUNT(16) ※Answer セクションのリソースレコード数
--64〜79bit
---NSCOUNT(16) ※Authority セクションのリソースレコード数
--80〜95bit
---ARCOUNT(16) ※Additional セクションのリソースレコード数

***問い合わせ情報 [#d4cf2d97]
-Question セクション

***応答情報 [#jb5bfd9d]
-Anser セクション
-Authority セクション
-Additional セクション

*DNSのサービス [#gf5e9cf5]
-Route53 -[[AWS]]([[Amazon]])

*DNSサーバソフトウェア [#jfb1eba1]
-[[BIND]]
-[[Unbound]]

-OpenDNS
-OpenNIC

-Knot DNS~
https://www.knot-dns.cz/

*DNS関連の攻撃手法 [#he56c771]
**DNSを狙った攻撃 [#p21c65f1]
-[[DNS水責め攻撃]]

**DNSの仕組みを悪用した他者への攻撃 [#p8014031]
-[[DNSキャッシュポイズニング]]

-カミンスキー型攻撃
--「[[DNSキャッシュポイズニング]]」参照

-[[DNS Changer]]
--DNS設定を書き換えるマルウェア

-DNSリフレクション攻撃
--「[[DDoS攻撃]]」参照

-[[サブドメインテイクオーバー]]

**その他 [#n1b29cd9]
-[[DNSトンネリング]]

-[[タイポスクワッティング]]

-NXNSAttack~
https://cyber-security-group.cs.tau.ac.il/ ~
https://www.nxnsattack.com/shafir2020-nxnsattack-paper.pdf

-[[ランダムサブドメイン攻撃]]

*DNSリクエストの暗号化 [#x95dd0d9]
**暗号化アプリ [#ma24284c]
-[[Intra]] - Google

*DNS関連のコマンド [#ca27563e]
-[[Linuxコマンド]]
--[[dig]]
--drill
--kdig
--nslookup
--[[whois]]

**bind-util [#id0715d0]
-yum -y install bind-utils

**kdig [#g98f8c47]
-https://www.knot-dns.cz/docs/2.6/html/man_kdig.html
-Advance DNS lookup utility

*mDNS [#g2c19a5f]
-マルチキャストDNS



*関連サイト [#maeb5813]
-DNS Record Types - Nslookup.io~
https://www.nslookup.io/learning/dns-record-types/

-(緊急)米国国土安全保障省によるDNS設定の改ざんに関する緊急指令の公開について(2019.1.28)
--https://jprs.jp/tech/security/2019-01-28-cisa-emergency-directive.html

-ハッカーによる「DNSハイジャック」の急増が、インターネットの信頼性を破壊する (2019.4.18)
--https://wired.jp/2019/04/18/sea-turtle-dns-hijacking/

-root-servers.org~
https://root-servers.org/

-最新のヒントファイル~
https://www.internic.net/domain/named.root

-オープンリゾルバー確認サイト - JPCERT/CC~
https://www.v2.openresolver.jp/

-DNS Benchmark~
https://www.grc.com/dns/benchmark.htm

-DNS設定チェックツール~
https://dnscheck.jp/

-SecurityTrails~
https://securitytrails.com/

-mess with dns~
https://messwithdns.net/

-Zonemaster~
https://www.zonemaster.net/

-DNSViz~
https://dnsviz.net/

-dnscheck.jp - [[JPRS]]~
https://dnscheck.jp/

-DSC - DNS-OARC~
https://www.dns-oarc.net/tools/dsc

-「512の壁」を越える ~EDNS0の概要と運用上の注意~ - JPRS~
https://jprs.jp/related-info/guide/topics-column/no8.html

-「DNSの浸透待ち」は回避できる――ウェブ担当者のためのDNS基礎知識 (2012.2.27) -Impress~
https://internet.watch.impress.co.jp/docs/special/514853.html

*関連用語(DNS) [#yd4ef153]
-ゾーンカット
-ゾーン頂点
-ネームサーバ

*関連用語 [#yd4ef153]
-[[DKIM]]
-[[DNSBL]] -DNS BlackList
-[[DNS Rebinding]]
-[[DNSSEC]]
-[[DNSハイジャック]]
-[[DNSラウンドロビン]]
-[[FQDN]] -Fully Qualified Domain Name
-[[GSLB]] -Global Server Load Balancing
-[[SIP]]
-[[SPF]]
-[[TLD]] -Top Level Domain
-[[Whois]]
-[[DNDPerf]] -DNSストレスツール
-[[ディレクトリサービス]]
-[[ダイナミックDNS]]
-[[データベース]]
-[[ソースポートランダマイゼーション]]