DNS のバックアップの現在との差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2021-12-03T10:36:43+09:00","default:k1rou","k1rou")
#author("2023-07-30T22:07:36+09:00","default:k1rou","k1rou")
*DNS とは [#c64f0da4]
**名称 [#bbb83867]
-Domain Name System

**概要 [#h4a8bdbf]
-[[IPアドレス]]と[[ドメイン]]名(ホスト名)を紐づけることで、ドメイン名で目的のホストに接続できるようにする仕組み
-ポート番号:
--53/UDP ※サイズが512B以下の場合、またはサイズが512Bを超過してEDNS0を使う場合
--53/TCP ※サイズが512Bを超過してTCPフォールバックを使う場合
-[[IPアドレス]]と[[ドメイン]]名(ホスト名)の対応表を管理して、利用者から提示されるドメイン名に対応するIPアドレスを応答する仕組み

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

*DNSの仕様 [#fd355dd5]
**通信プロトコル(トランスポート層) [#m056cc65]
-[[UDP]]
--一般的なDNSサーバへの接続はUDPが使われている。
--最大512B
--1往復
--EDNS0
---Extension mechanism for DNS version 0
---DNSの拡張機構
---UDPのパケットサイズを最大65,535Bまで拡張することを可能とする
---1220, 4096 が指定されることが多い
---OPT[[リソースレコード]]でUDPパケットサイズを識別する

-[[TCP]]
--TCPフォールバック
---[[UDP]]のサイズ(512B)に収まらない場合に限り、TCP fallbackされる仕様(RFC1123)
--3往復(3 say handshake)
--ゾーン転送要求は53/[[TCP]]で行われる
--3 way handshake

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

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

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

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

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

**ゾーン転送 [#o14f9e54]
-権威DNSサーバのプライマリとセカンダリが登録情報を同期させるために行う登録情報の転送機能のこと。
-ゾーン転送要求
--セカンダリからプライマリに対して行われる。
--TCP(53ポート)で行われる。

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

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

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

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

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

*DNSサーバ [#h868c09d]
-DNSサーバには、コンテンツ機能とキャッシュ機能がある。
***オープンリゾルバ [#secd2072]
-問い合わせ元のアドレスや、問い合わせ対象のドメインに制限なく名前解決の要求に応じるフルリゾルバ
-オープンリゾルバを悪用した攻撃
--[[DNSキャッシュポイズニング]]
--[[DNSリフレクション攻撃]]
--[[DNS水責め攻撃]]
-[[Public DNS]](パブリックDNS)

-機能ごとにサーバを分けた場合、各機能ごとのサーバの呼称は下記の通り(いろいろある)
--コンテンツ機能
---コンテンツサーバ
---DNSコンテンツサーバ
---権威サーバ
---権威DNSサーバ
---ネームサーバ
---ゾーンサーバ
***(補足) フォワーダ [#dfa167e2]
-スタブリゾルバとフルリゾルバの間に配置される
-スタブリゾルバからの名前解決要求を受けて、フルリゾルバに転送する
-家庭用のルータなどが備えている機能

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

*DNSサーバ:コンテンツサーバ [#zed9c458]
-当該サーバが管理するドメイン(ゾーン)の情報を登録し、リゾルバからの非再帰的な名前解決の要求に応答する。
-[[IPアドレス]]と[[ドメイン]]名の紐づけ情報を保持する。

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

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

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

*DNSサーバ:キャッシュサーバ(フルサービスリゾルバ) [#f2af3e75]
-リゾルバからの再帰的な名前解決の要求に対して、他のDNSサーバに問い合わせをして取得した結果([[IPアドレス]])を応答する。
-調べた[[ドメイン]]名と[[IPアドレス]]の紐付け情報は、一定期間[[キャッシュ]]される。
-ゾーン転送
--権威サーバのプライマリとセカンダリが登録情報を同期させるために行う登録情報の転送機能のこと
--ゾーン転送要求は、セカンダリサーバからプライマリサーバに対して行われる。
---53ポート/TCPで行われる
--転送方法の種類
---AXFR(Authoritative Transfer):ゾーンの全ての情報を転送する
---IXFR(Incremental Transfer):差分の情報を転送する
--DNS NOTIFY
---プライマリサーバでゾーンデータに更新があったことをセカンダリサーバに通知する仕組み

-[[Webブラウザ]]はフルサービスリゾルバに対して問い合わせをする。
*名前解決 [#t80c42fe]
**名前解決の手順 [#ea7457ce]
+クライアント(スタブリゾルバ)は自ドメインのDNSサーバ(フルリゾルバ)に名前解決要求をする。
+自ドメインのフルリゾルバは、ルートサーバから下位の権威サーバに向かって問い合わせを繰り返す。
+自ドメインのフルリゾルバは、目的のホスト名の権威サーバからIPアドレスを取得し、スタブリゾルバに名前解決応答をする。

-個人と企業
--個人の場合は、契約している[[ISP]]が管理しているフルサービスリゾルバを利用する。
--企業の場合は、情報システム部門が管理しているフルサービスリゾルバを利用する。
**再帰的問い合わせと非再帰的問い合わせ [#pa10c826]
***再帰的問い合わせ [#t627afb9]
-recursive query
-スタブリゾルバからフルリゾルバに対して行われる問い合わせ
-再帰的問い合わせを受けたフルリゾルバは、名前解決が完結するまで権威サーバをたどって問い合わせをした結果を応答する

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

-オープンリゾルバ
--問い合わせ元のアドレスや、問い合わせ対象のドメインに制限なく名前解決の要求に応じるDNSサーバ
--[[DNSキャッシュポイズニング]]や[[DNSリフレクション攻撃]]に対して脆弱。
--[[Public DNS]](パブリックDNS)
**正引きと逆引き [#j1181aa8]
-正引き
--ドメイン名に対応するIPアドレスを検索すること
-逆引き
--IPアドレスに対応するドメイン名を検索すること
--アクセスを受けた側がアクセス元を調べる際に使われる

*名前解決の手順 [#ea7457ce]
+クライアントは自ドメインのDNSサーバに問い合わせをする。
+自ドメインのDNSサーバは、ルートサーバから下位のDNSサーバに向かって問い合わせを繰り返す。
+自ドメインのDNSサーバは、目的のホスト名のDNSサーバからIPアドレスを取得し、クライアントに応答する。
*ゾーン [#s21a6d21]
-委任により管理を任された範囲のこと

*リソースレコード [#r358e523]
-DNSサーバに登録する情報のこと
-ゾーンデータ
--対象のゾーンに設定されている情報のこと

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

**リソースレコードの種類 [#x0b9f8c5]
-NS
--DNSサーバのホスト名。ドメインのゾーンを管理するネームサーバを指定するレコード。
--[[Zone Apex]]に必ず設定する。
*リソースレコード [#r358e523]
-権威サーバに登録するゾーンの情報のこと
-「[[リソースレコード]]」参照

-SOA
--プライマリDNSサーバのホスト名。
--権威ドメイン。ゾーン権限を持っているDNSサーバを指定するレコード。
--[[Zone Apex]]に必ず設定する。
**グルーレコード [#v0051a0b]
-DNSサーバのドメイン名に対応するIPアドレスを、問い合わせ対象のドメインの上位のDNSサーバに登録することで、上位のDNSサーバから問い合わせ対象のDNSサーバに繋がるようにすることで、名前解決できるようにすること。

-A
--ホスト名に対応するIPアドレス([[IPv4]])
--ドメイン名とIPアドレス([[IPv4]])を紐づけるレコード。
--1つのドメイン名に対して複数のIPアドレスを指定することができる。 

-AAAA
--ホスト名に対応するIPアドレス([[IPv6]])
--ドメイン名とIPアドレス([[IPv6]])を紐づけるレコード。
--1つのドメイン名に対して複数のIPアドレスを指定することができる。 

-MX
--Mail Exchange
--メールサーバのホスト名
--メールサーバ(メールアドレスで利用するドメイン名)を指定するレコード
--MXレコードが設定されていない場合、メールはAレコードで指定したIPアドレスに送られる。
--メールを明示的に受信しない(Null MX)ことを設定することができる。(プリファレンス値:0、メールサーバ名:.)

-TXT(SPF)
--ホスト名に対するテキスト情報。
--SPFレコードの記述にも使われる。
---メール送信元サーバを指定するレコード
*DNSメッセージ [#ne84aa11]
**DNSメッセージの構造 [#m6f3d892]
-問い合わせと応答のメッセージは構造が同じ
-応答のメッセージには問い合わせのメッセージの内容がコピーして作成される
-応答情報の各セクションのデータがない場合はセクション自体が作成されない
-メッセージ内のドメイン名の表現
--<ラベルの長さ(16進数)><ラベル(16進数)>...<"00"(16進数)>

-CNAME
--ホスト名の別名。別名に対する正式名を指定するレコード
--エイリアス
--他のリソースレコードと一緒に設定することができない。(設定した場合は動作保障されない)
--[[Zone Apex]]は、CNAMEを設定することができない。
***制御情報 [#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 セクションのリソースレコード数

-PTR
--Pointer record
--ホスト名の別名逆引き
--IPアドレスからドメイン名を逆引きするためのレコード。
--PTRレコードは、IPアドレスの所有者側のサーバに設定する。
***問い合わせ情報 [#d4cf2d97]
-Question セクション

-OPT
--EDNS0に関する情報など
***応答情報 [#jb5bfd9d]
-Anser セクション
-Authority セクション
-Additional セクション

-CAA
--[[サーバ証明書]]の発行を承認した認証局のコモンネームを指定するレコード
--第三者による不正な証明書の発行や誤発行を防止する

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

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

*DNSサーバソフトウェア [#jfb1eba1]
**権威サーバ [#d269e890]
-[[BIND]]
-[[NSD]]
-PowerDNS Authoritative Server
-Knot DNS~
https://www.knot-dns.cz/

**フルリゾルバ [#y6382fa0]
-[[BIND]]
-[[Unbound]]
-PowerDNS Recursor
-Knot Resolver

-OpenDNS
-OpenNIC
*DNS関連の攻撃手法 [#he56c771]
**DNSを狙った攻撃 [#p21c65f1]
-[[DNS水責め攻撃]](ランダムサブドメイン攻撃、サブドメインテイクオーバー)

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

*DNSサーバを使ったセキュリティ上の攻撃手法 [#he56c771]
**DNSの仕組みを悪用した他者への攻撃 [#p8014031]
-[[DNSキャッシュポイズニング]]

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

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

-DNSリフレクション攻撃
--「[[DDoS攻撃]]」参照
-[[DNSリフレクション攻撃]](DNS AMP攻撃、DNSリフレクター攻撃)

-[[DNS水責め攻撃]]
**その他 [#n1b29cd9]
-[[DNSトンネリング]]

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

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

-[[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]] 
--[[dig]]
--drill
--kdig
--nslookup
--[[whois]]
--nslookup

**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]
-RFC 8499 (日本語訳) - JPRS~
https://jprs.jp/tech/material/rfc/RFC8499-ja.txt

-RFC 8499~
https://www.rfc-editor.org/rfc/rfc8499

-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/

-Hidden Open Resolver Tester~
https://snoopy.e-ontap.com/tester.cgi

-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浸透の都市伝説を斬る ~ランチのおともにDNS~ - JPRS~
https://jprs.jp/tech/material/iw2011-lunch-L1-01.pdf

-「ghost domain names(幽霊ドメイン名)」脆弱性について - JPRS~
https://jprs.jp/tech/notice/2012-02-17-ghost-domain-names.html

*関連用語(DNS) [#yd4ef153]
-ゾーンカット
-ゾーン頂点
-ネームサーバ
-lame delegation
--権威サーバの登録の問題で、委託元の権威サーバが委託先の権威サーバとして動作していない状態のこと
-QNAME minimisation
--フルリゾルバから権威サーバに問い合わせる際の情報を最小限にする技術
--ルートサーバへの問い合わせは、問い合わせるドメインのTLD、NSリソースレコードのみ
--TLD権威サーバへの問い合わせは、問い合わせるドメインの2LD、NSリソースレコードのみ
--RFC 9156

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