#author("2023-07-30T22:07:05+09:00","default:k1rou","k1rou") #author("2023-07-30T22:07:36+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往復 --EDNS0 ---Extension mechanism for DNS version 0 ---DNSの拡張機構 ---UDPのパケットサイズを最大65,535Bまで拡張することを可能とする ---1220, 4096 が指定されることが多い ---OPT[[リソースレコード]]でUDPパケットサイズを識別する -[[TCP]] --TCPフォールバック ---[[UDP]]のサイズ(512B)に収まらない場合に限り、TCP fallbackされる仕様(RFC1123) --ゾーン転送要求は53/[[TCP]]で行われる --3 way handshake **[[ポート番号]] [#ic737a54] -53/UDP ※サイズが512B以下の場合、またはサイズが512Bを超過してEDNS0を使う場合 -53/TCP ※サイズが512Bを超過してTCPフォールバックを使う場合 **DNSリクエストの暗号化方式 [#i68a8643] ***スタブリゾルバとフルリゾルバ間 [#ic4fdbc7] -[[Public DNS]]([[HTTPS]]または[[TLS]]を使う) --[[DoH]] -DNS over HTTPS --[[DoT]] -DNS over TLS -ソフトウェア --[[DNSCrypt]]~ https://www.dnscrypt.org/ ***フルリゾルバと権威リゾルバ間 [#ycd44488] -[[DNSSEC]] *DNSの構成要素 [#k32dd356] **リゾルバ [#i780864f] -Resolver -名前解決を行う --ホスト名とIPアドレスを紐づけ、ホスト名をIPアドレスに変換する機能。 --メールアドレスとメールサーバを紐づける機能。 -リゾルバには、スタブリゾルバとフルリゾルバの2種類ある。 ***スタブリゾルバ [#s1950542] -Stub Resolver -別称 --DNSクライアント -パソコンやスマホなどの端末上に搭載されている機能 -フルリゾルバに対して名前解決を要求する(再帰的要求) ***フルリゾルバ [#a479a968] -Full Resolver -別称 --フルサービスリゾルバ --キャッシュサーバ、DNSキャッシュサーバ、キャッシュDNSサーバ --参照サーバ --ネームサーバ、DNSサーバ -スタブリゾルバからの名前解決要求(再起的要求)を受けて、権威サーバに対して名前解決の為の問い合わせ(非再帰的要求)を行う --権威サーバへの問い合わせはルートサーバから始まり、名前解決するまで権威サーバの階層をたどって問い合わせを行う --ルートサーバのIPアドレスが記載された一覧(ヒントファイル)を保持する --ヒントファイルの情報を使ってルートサーバから最新のルートサーバのIPアドレスを得る仕組み(プライミング) -名前解決した内容は[[キャッシュ]]に保存し、次回の同じ名前解決要求があった場合は、キャッシュに保存されている内容を応答する --名前解決の結果、目的の[[リソースレコード]]が見つからなかった場合は、見つからなかったことをキャッシュに保存する(ネガティブキャッシュ) -個人と企業 --個人の場合は、契約している[[ISP]]が管理しているフルリゾルバを利用する。 --企業の場合は、情報システム部門が管理しているフルリゾルバを利用する。 -フルリゾルバの設定(Linux) --/etc/resolv.conf の「nameserver」で指定する。 ***オープンリゾルバ [#secd2072] -問い合わせ元のアドレスや、問い合わせ対象のドメインに制限なく名前解決の要求に応じるフルリゾルバ -オープンリゾルバを悪用した攻撃 --[[DNSキャッシュポイズニング]] --[[DNSリフレクション攻撃]] --[[DNS水責め攻撃]] -[[Public DNS]](パブリックDNS) ***(補足) フォワーダ [#dfa167e2] -スタブリゾルバとフルリゾルバの間に配置される -スタブリゾルバからの名前解決要求を受けて、フルリゾルバに転送する -家庭用のルータなどが備えている機能 **権威サーバ [#k6057b24] -別称 --権威DNSサーバ --ゾーンサーバ --コンテンツサーバ、DNSコンテンツサーバ --ネームサーバ、DNSサーバ -権威サーバは、ルートサーバを頂点とした階層構造で構成される。 -自身が委任を受けたゾーンの情報と、自身が委任しているゾーンの委任情報を保持する。 -フルリゾルバからの名前解決要求を受けて(非再帰的要求)、保持している情報を応答する。 -ゾーンの情報(ゾーンデータ)は、[[リソースレコード]]という形式で保持する。 ***ルートサーバ [#w97944f9] -別称 --ルートネームサーバ、DNSルートサーバ -ドメイン名空間の頂点([[TLS]])に位置するサーバ。 -ドメイン名の名前解決において、[[TLD]]の名前解決を行う。 ***可用性の向上 [#o284165e] -プライマリとセカンダリ -権威サーバはプライマリとセカンダリの2台構成で運用する必要がある。 --プライマリサーバ(プライマリDNSサーバ) --セカンダリサーバ(セカンダリDNSサーバ) -ゾーンデータを持つ権威サーバ(プライマリサーバ)のゾーンデータは、ゾーンデータを持たない権威サーバ(セカンダリサーバ)にコピーされる(ゾーン転送) -一般的に、自社の権威サーバをプライマリサーバ、上位プロバイダの権威サーバをセカンダリサーバにする -ゾーン転送 --権威サーバのプライマリとセカンダリが登録情報を同期させるために行う登録情報の転送機能のこと --ゾーン転送要求は、セカンダリサーバからプライマリサーバに対して行われる。 ---53ポート/TCPで行われる --転送方法の種類 ---AXFR(Authoritative Transfer):ゾーンの全ての情報を転送する ---IXFR(Incremental Transfer):差分の情報を転送する --DNS NOTIFY ---プライマリサーバでゾーンデータに更新があったことをセカンダリサーバに通知する仕組み *名前解決 [#t80c42fe] **名前解決の手順 [#ea7457ce] +クライアント(スタブリゾルバ)は自ドメインの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]]) -OpenDNS -OpenNIC *DNSサーバソフトウェア [#jfb1eba1] **権威サーバ [#d269e890] -[[BIND]] -[[NSD]] -PowerDNS Authoritative Server -Knot DNS~ https://www.knot-dns.cz/ **フルリゾルバ [#y6382fa0] -[[BIND]] -[[Unbound]] -PowerDNS Recursor -Knot Resolver *DNS関連の攻撃手法 [#he56c771] **DNSを狙った攻撃 [#p21c65f1] -[[DNS水責め攻撃]](ランダムサブドメイン攻撃、サブドメインテイクオーバー) **DNSの仕組みを悪用した他者への攻撃 [#p8014031] -[[DNSキャッシュポイズニング]] -カミンスキー型攻撃 --「[[DNSキャッシュポイズニング]]」参照 -[[DNS Changer]] --DNS設定を書き換えるマルウェア -[[DNSリフレクション攻撃]](DNS AMP攻撃、DNSリフレクター攻撃) **その他 [#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] -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/ 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]] -[[DNSクッキー]] -[[DNSハイジャック]] -[[DNSラウンドロビン]] -[[FQDN]] -Fully Qualified Domain Name -[[GSLB]] -Global Server Load Balancing -[[SIP]] -[[SPF]] -[[TLD]] -Top Level Domain -[[Whois]] -[[DNDPerf]] -DNSストレスツール -[[ソースポートランダマイゼーション]] -[[ダイナミックDNS]] -[[データベース]] -[[ディレクトリサービス]] -[[ドメイン名ハイジャック]] -[[ファーミング]]