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

#author("2021-12-03T10:36:43+09:00","default:k1rou","k1rou")
*DNS とは [#c64f0da4]
**名称 [#bbb83867]
-Domain Name System

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

*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

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

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

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

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

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

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

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

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

**フルサービスリゾルバ [#a479a968]
-Full-Service Resolver
-キャッシュサーバのこと
-スタブリゾルバからの名前解決要求を受けて、権威DNSサーバに対して名前解決を要求し(非再帰的要求)、名前解決するまで他の権威DNSサーバをたどって問い合わせを行う
-名前解決した内容はキャッシュに保存し、次回の同じ名前解決要求があった場合は、キャッシュに保存されている内容を応答する

*DNSサーバ [#h868c09d]
-DNSサーバには、コンテンツ機能とキャッシュ機能がある。

-機能ごとにサーバを分けた場合、各機能ごとのサーバの呼称は下記の通り(いろいろある)
--コンテンツ機能
---コンテンツサーバ
---DNSコンテンツサーバ
---権威サーバ
---権威DNSサーバ
---ネームサーバ
---ゾーンサーバ

--キャッシュ機能
---キャッシュサーバ
---DNSキャッシュサーバ
---キャッシュDNSサーバ
---フルサービスリゾルバ
---フルリゾルバ
---参照サーバ

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

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

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

-自社のプライマリDNSサーバに対して、上位プロバイダのDNSサーバをセカンダリDNSサーバにするのが一般的。

*DNSサーバ:キャッシュサーバ(フルサービスリゾルバ) [#f2af3e75]
-リゾルバからの再帰的な名前解決の要求に対して、他のDNSサーバに問い合わせをして取得した結果([[IPアドレス]])を応答する。
-調べた[[ドメイン]]名と[[IPアドレス]]の紐付け情報は、一定期間[[キャッシュ]]される。

-[[Webブラウザ]]はフルサービスリゾルバに対して問い合わせをする。

-個人と企業
--個人の場合は、契約している[[ISP]]が管理しているフルサービスリゾルバを利用する。
--企業の場合は、情報システム部門が管理しているフルサービスリゾルバを利用する。

-フルリゾルバの設定(Linux)
--/etc/resolv.conf の「nameserver」で指定する。

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

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

*リソースレコード [#r358e523]
-DNSサーバに登録する情報のこと

-ゾーン
-委任

**リソースレコードの種類 [#x0b9f8c5]
-NS
--DNSサーバのホスト名。ドメインのゾーンを管理するネームサーバを指定するレコード。
--[[Zone Apex]]に必ず設定する。

-SOA
--プライマリDNSサーバのホスト名。
--権威ドメイン。ゾーン権限を持っているDNSサーバを指定するレコード。
--[[Zone Apex]]に必ず設定する。

-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レコードの記述にも使われる。
---メール送信元サーバを指定するレコード

-CNAME
--ホスト名の別名。別名に対する正式名を指定するレコード
--エイリアス
--他のリソースレコードと一緒に設定することができない。(設定した場合は動作保障されない)
--[[Zone Apex]]は、CNAMEを設定することができない。

-PTR
--Pointer record
--ホスト名の別名逆引き
--IPアドレスからドメイン名を逆引きするためのレコード。
--PTRレコードは、IPアドレスの所有者側のサーバに設定する。

-OPT
--EDNS0に関する情報など

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

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

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

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

-OpenDNS
-OpenNIC

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

*DNSサーバを使ったセキュリティ上の攻撃手法 [#he56c771]
-[[DNSキャッシュポイズニング]]

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

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

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

-[[DNS水責め攻撃]]

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

-[[DNSトンネリング]]

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

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

*DNS関連のコマンド [#ca27563e]
-[[Linuxコマンド]]
--[[dig]] 
--[[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]
-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/

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

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

*関連用語 [#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]]
-[[データベース]]
-[[ソースポートランダマイゼーション]]