?? 起源很久很久以前,是沒有“域名”這個概念的。我服務(wù)器的 ip 是 100.100.100.100,對外暴露一個端口," />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識 > DNS 安全(一):基礎(chǔ)知識復(fù)習

DNS 安全(一):基礎(chǔ)知識復(fù)習

時間:2023-01-30 18:12:01 | 來源:建站知識

時間:2023-01-30 18:12:01 來源:建站知識

本文主要梳理與介紹 DNS 的基礎(chǔ)知識,如果有些地方?jīng)]懂不如帶著疑問繼續(xù)往下看。涉及 DNS 攻防的將在下一篇介紹。

?? 起源

很久很久以前,是沒有“域名”這個概念的。我服務(wù)器的 ip 是 100.100.100.100,對外暴露一個端口,比如 80,用于提供 http 服務(wù),用戶就得輸入 http://100.100.100.100 ,瀏覽器一看是 http 協(xié)議,就自動向 100.100.100.100 的 80 端口發(fā)起 http 請求,于是你就開始愉快地網(wǎng)上沖浪了。

問題在于,手動輸入 ip 實在是過于麻煩,也不好記,并且如果你的網(wǎng)站改了 ip,還得提前聲明一下:“本站的 ip 即將改為 200.200.200.200,請使用新的 ip 地址”。所以人們發(fā)明了域名,通常是一些好記的、有意義的單詞組合,并將域名與 ip 綁定到一塊,這樣我們輸入域名之后,瀏覽器就會先把域名解析成 ip 地址,然后向這個 ip 地址發(fā)起請求。

還有一個小故事,在我懵懂無知的年紀,特別喜歡使用 360 管家,因為真的能解決很多小問題。有一天我的電腦沒法上網(wǎng),著急下 CF 呢,這怎么行呢?掏出 360 管家,找到上網(wǎng)診斷,一鍵解決。我還記得有個提示大意是“...如果 qq 能正常聊天但是瀏覽器無法上網(wǎng)...”。當時當然看不懂了,現(xiàn)在就知道原因就是 DNS 出了問題,導致域名無法解析成 ip,那么使用域名的服務(wù)自然也就無法使用了,而 qq 聊天直接用 ip 進行通信,所以功能正常。

那么,這一切都是怎么實現(xiàn)的呢?

?? 解析流程

DNS 解析其實比較簡單,但是涉及到的細節(jié)會多一些。

區(qū)域(Zone)

其中頂級域(TLD)有 arpa、com、edu、gov...

頂級域分為兩種類型:

  1. gTLDs: .com、.org 等叫做一般通用頂級域(generic Top-Level Domains)
  2. ccTLDs: .cn、.jp 等叫做國家頂級域(country code Top-Level Domains)
  3. arpa:特殊域,比較特殊放在下面講
一個 DNS 子樹(獨立管理的)就稱為一個區(qū)域,舉個例子,比如 sina.com.cn 這個二級域,可以將它的區(qū)域劃分為更小的區(qū)域,比如一般會根據(jù)用途來劃分區(qū)域,假設(shè) blog.sina.com.cn 為博客相關(guān)的域名等等。劃分完子區(qū)域之后,需要經(jīng)過父區(qū)域的授權(quán),這樣父區(qū)域遇到屬于子區(qū)域下的域名,就會轉(zhuǎn)給子區(qū)域來解析。

查詢方式

在說流程之前,先說一下查詢方式。很簡單,分為 2 種:

  1. 遞歸查詢:A -> B -> C,A 向 B 發(fā)起 DNS 解析的請求之后,B 幫 A 去 C 那里查找,拿到結(jié)果之后返回給 A,這個時候 A、B 各發(fā)起了一次解析請求。
  2. 迭代查詢:A -> B, A -> C,A 向 B 發(fā)起 DNS 解析的請求之后,B 告訴 A 要去 C 那里查找,A 再向 C 發(fā)起 DNS 解析請求,這個時候 A 一共發(fā)起了兩次解析請求,B 沒有發(fā)起 DNS 解析請求。

Hosts 文件(靜態(tài) DNS 服務(wù)器)

如果你用的是 macOS 或者 Linux,可以看一下這個文件:/etc/hosts

其中有我們上小學就知道的 127.0.0.1localhost。所以你訪問 localhost 就是訪問 127.0.0.1。

Hosts 文件,可以直接理解為是本地靜態(tài)的 DNS 服務(wù)器。需要解析 DNS 的時候,系統(tǒng)會首先自動從 Hosts 文件中尋找對應(yīng)的 ip-域名 映射關(guān)系,一旦找到那么就完成解析了,如果沒有找到,則繼續(xù)解析流程。

顯然,配置 Hosts 像極了沒有域名的年代,誰會把所有的要訪問的域名都加到 Hosts 里呢?但是,它的確可以加快域名解析、屏蔽垃圾網(wǎng)站、廣告等等...具體的留在下一篇介紹吧~

LocalDNS 服務(wù)器

若 Hosts 文件中沒有相關(guān)域名的記錄,則來到了 LocalDNS。

如果你用的是 macOS 或者 Linux,可以看一下這個文件:/etc/resolv.conf

這個文件一般是自動生成的,什么時候生成的呢?DHCP 的時候。需要注意的是,這個文件里的 ip 經(jīng)常是內(nèi)網(wǎng) ip,并且 LocalDNS 里面有個 “l(fā)ocal”,大家可能會認為 LocalDNS 的服務(wù)器 ip 都是內(nèi)網(wǎng) ip,實際上也可以是外網(wǎng) ip,比如其他組織提供的 DNS,像谷歌的8.8.8.8啦,國內(nèi)的114.114.114.114啦。個人感覺是這些 DNS 的地址填寫在我們本地的電腦或者移動設(shè)備上,所以稱為 LocalDNS。

需要注意的是,LocalDNS 本身不具備真正的解析域名的功能。它的作用有兩個:

  1. 代替用戶的設(shè)備參與域名解析
  2. 緩存域名的查詢記錄,當其他設(shè)備發(fā)起相同的域名查詢請求時可以直接返回查詢結(jié)果,可以加快域名查詢速度。
用戶設(shè)備 -> LocalDNS 一般是遞歸查詢,而 LocalDNS 發(fā)現(xiàn)它自己沒有緩存對應(yīng)的數(shù)據(jù)后,則需要向 DNS 根服務(wù)器發(fā)起查詢請求,這個請求,一般是迭代查詢。所以任何 LocalDNS 都需知道 DNS 根服務(wù)器的 ip 地址,這沒得說。

DNS 根服務(wù)器

DNS 根服務(wù)器(root name server),全球只有 13 個,編號從 a.root-servers.net 一直到 m.root-servers.net。之所以不說 13 臺,是因為每個 DNS 根節(jié)點都會有多個服務(wù)器負責均衡查詢(即任播節(jié)點),你可以在這個網(wǎng)站查詢:https://root-servers.org/ 。例如杭州就有 J、F 根服務(wù)器的任播節(jié)點:

現(xiàn)在解析 DNS 的時候,已經(jīng)不再需要知道 DNS 根服務(wù)器的真正的 ip 地址,只需要知道任播地址就可以在世界各地與當?shù)氐淖顑?yōu)節(jié)點進行通信了,所以現(xiàn)在大多數(shù)的 DNS 根服務(wù)器的 ip 地址都是任播節(jié)點 的 ip 地址。

至于為什么是 13 這個數(shù)字,這有一篇挺不錯的文章,大家可以參考一下:命運之輪:根域名服務(wù)器只有13臺?

所以,DNS 根服務(wù)器掌管著所有 DNS 頂級域名服務(wù)器 的地址,比如大家熟悉的 .com、.org.edu、.gov 等等。假如我們查詢的頂級域名是 .com,DNS 根服務(wù)器會將.com 頂級域名服務(wù)器的地址發(fā)回給 LocalDNS 服務(wù)器,讓它自己去那里查。于是 LocalDNS 服務(wù)器再向手握 .com 的 DNS 頂級域名服務(wù)器發(fā)起查詢。

DNS 頂級域名服務(wù)器

手握 .com 的 DNS 頂級域名服務(wù)器一看來源的查詢是 xxx.com,按理來說應(yīng)該可以找到對應(yīng)的 ip 并直接返回了。但是現(xiàn)在基本上都是授權(quán)給其他廠家去做的,被授權(quán)的叫DNS 權(quán)威域名服務(wù)器,例如萬網(wǎng),或者企業(yè)自建的 DNS 服務(wù)器。舉個例子,對 weibo.com 進行 DNS 解析:

這里表明對于 weibo.com,DNS 權(quán)威域名服務(wù)器是 ns1.sina.com.cn.,也就是 DNS 查詢的請求到了 .com DNS 頂級域名服務(wù)器的時候,它會返回經(jīng)過自己授權(quán)的 DNS 權(quán)威域名服務(wù)器:ns1.sina.com.cn.,告訴 LocalDNS 服務(wù)器自己去那里查吧。

這個時候 LocalDNS 服務(wù)器就會緩存 weibo.com 的 DNS 權(quán)威域名服務(wù)器,免得下次查的時候還得再走一遍之前的流程(當然是在緩存未過期的情況下)。

DNS 權(quán)威域名服務(wù)器

DNS 權(quán)威域名服務(wù)器要提前申請 DNS 解析授權(quán),這類 DNS 域名服務(wù)器一般掌管著特定域下所有的子域和主機,比如它不僅知道 weibo.com 的 ip,同樣也知道 www.weibo.com 的 ip。所以它可以直接返回結(jié)果,這一步?jīng)]啥好說的。

同樣, LocalDNS 服務(wù)器也會緩存 weibo.com 的 ip,免得下次查的時候還得再走一遍之前的流程(當然也是在緩存未過期的情況下)。

各大公司一般都有自己的權(quán)威域名服務(wù)器,自己維護 DNS,好處有很多,比如:

  1. 方便管理。假如不自己維護域名信息,域名生效時間和緩存時間都是不可控的,而自己搭建可以避免這些問題。
  2. 動態(tài)管理。比如通過一些軟件來更新自己的 DNS 信息更方便,還可以做動態(tài)域名解析。

流程總結(jié)

(以下流程以 A 記錄為例)

  1. 設(shè)備 -> LocalDNS 服務(wù)器(遞歸查詢)
  2. LocalDNS 服務(wù)器 -> DNS 根服務(wù)器(迭代查詢)
  3. LocalDNS 服務(wù)器 <- DNS 根服務(wù)器(返回頂級域名服務(wù)器的地址)
  4. LocalDNS 服務(wù)器 -> DNS 頂級域名服務(wù)器(迭代查詢)
  5. LocalDNS 服務(wù)器 <- DNS 頂級域名服務(wù)器(返回權(quán)威域名服務(wù)器的地址)
  6. LocalDNS 服務(wù)器 -> DNS 權(quán)威域名服務(wù)器(迭代查詢)
  7. LocalDNS 服務(wù)器 <- DNS 權(quán)威域名服務(wù)器(返回 ip)
  8. 設(shè)備 <- LocalDNS 服務(wù)器(返回 ip)

?? DNS 的幾個重要概念

在掌握了流程之后,再來看這些概念會更容易理解。

DNS 資源記錄(Resource Record, RR)

DNS 服務(wù)器有自己的域文件(zone file),zone file 是由多個記錄組成的,每一個記錄就被稱為資源記錄。

假如你買了一個域名,需要綁定到對應(yīng)的 ip 上來提供 web 服務(wù),或者要提供其他服務(wù),這個時候域名的銷售方會讓你選擇解析的類型,常見的有以下幾種:

  1. A 記錄:將域名指向一個 IPv4 地址(例如:100.100.100.100)
  2. CNAME 記錄:將域名指向一個域名,實現(xiàn)與被指向域名相同的訪問效果,可以簡單地理解為域名的別名。比如 www.weibo.com 就是 cname 到 weibo.com 上,然后 weibo.com 是有自己的 A 記錄的,這樣有個好處就是假如有很多個域名,a.weibo.com、b.weibo.com...,但是 ip 只有 1 個,如果不用 cname,當這個 ip 變更的時候,每個與此 ip 綁定的域名都要去改 A 記錄;用了 cname 之后,只需要改 cname 的域名(weibo.com)的 A 記錄即可。(CDN 加速就是這樣做的對吧~)
  3. MX 記錄:指向電子郵件服務(wù)器地址,一般會根據(jù)郵箱服務(wù)商提供的 MX 記錄填寫此記錄。
  4. NS 記錄:權(quán)威域名服務(wù)器記錄,即將某些域名指定讓某個 DNS 域名服務(wù)器來解析。需要注意的是,只有頂級域名(或者說一級域名)才有 ns 記錄,比如 www.weibo.com 是沒有 ns 記錄的。
  5. TXT 記錄:可任意填寫、可為空。一般做一些驗證記錄時會使用此項,例如:SPF 記錄(用于反垃圾郵件)
  6. AAAA 記錄:將域名指向一個 IPv6 地址(例如:ff03:0:0:0:0:0:0:c1)
  7. SOA 記錄:SOA(Start of Authority)叫做起始授權(quán)機構(gòu)記錄。通俗地來講,一個域名可能有很多個 NS 記錄,因為會有多臺服務(wù)器在進行解析(負責均衡或者備份),但哪一個才是主 DNS 權(quán)威服務(wù)器呢?這個就要看 SOA 記錄了,它說明了在眾多 NS 記錄里哪一臺才是主 DNS 權(quán)威服務(wù)器。這個主 DNS 權(quán)威服務(wù)器會負責其他事情,比如告訴其他 NS 權(quán)威服務(wù)器什么時候該更新數(shù)據(jù)(通過域傳送的方式,下面會講),甚至記錄里還有對應(yīng)聯(lián)系人的郵件、TTL 等信息,這里就不多贅述了。
  8. PTR 記錄:PTR 記錄是 A 記錄的逆向記錄,負責將 IP 反向解析為域名,這個內(nèi)容稍多,單獨放在下面講
  9. AXFR、IXFR 記錄:涉及區(qū)域傳送,單獨放在下面講
其他的都比較好理解,SOA 可能稍微有點饒,舉個例子:

下面紅框里的就是聯(lián)系方式,在 SOA 記錄中,admin.example.com 等效于 admin@example.com。

FQDN

FQDN(Fully Qualified Domain Name),完整合格域名(不知道是不是這樣翻譯的...)。與我們?nèi)粘R姷降挠蛎啾龋詈筮€有一個.,例如 weibo.com.。其實這樣反應(yīng)出了 DNS 系統(tǒng)完整的層級關(guān)系,最開始是 .,即根(root)域名,接下來是 TLDs,表示頂級域名。

所以如果我們查詢 . 的 DNS NS 記錄得到的是什么呢?

所以 . 是由 DNS 根服務(wù)充當 DNS 權(quán)威服務(wù)進行解析,但是 . 其實是沒有 A 記錄的。

DDNS

DDNS 相比 DDNS 多了一個 D,即“動態(tài)”的意思,可以通過 DDNS 提供動態(tài)域名解析服務(wù)。

舉個例子,如果你想搞一個自己的網(wǎng)站,并且有自己的公網(wǎng)服務(wù)器,那么一般都有一個公網(wǎng) ip,綁定在某個域名之后,其他人就可以直接訪問了。但是如果你沒有一個公網(wǎng)服務(wù)器,想要用自己的家庭網(wǎng)絡(luò)來搭建網(wǎng)站,首先不說大部分人都是運營商的內(nèi)網(wǎng) ip,即便少部分人申請到了公網(wǎng) ip 也都不是固定的。那么你雖然可以把自己家的 ip 地址綁定在域名上,但是你可能需要一天換綁一次 ip...因為 IPv4 資源還是很緊張的,不可能給每個人都分配公網(wǎng) ip,這個問題雖然到 IPv6 可以解決,但是那也是以后的事情了。所以自己去做 發(fā)現(xiàn)出口 ip 變化 + 更換 DNS 綁定 顯然是反人類的。

但是我們就想在外網(wǎng)想要訪問我們在家里的臺式機上搭建的網(wǎng)站怎么辦呢?這就需要 DDNS 了。DDNS 會將用戶的動態(tài) ip 地址映射到一個固定的域名解析服務(wù)上:當臺式機出口 ip 變化的時候,DDNS 客戶端程序就會把新的出口 ip 地址傳給位于 DDNS 服務(wù)商主機上的服務(wù)端程序,而服務(wù)端程序負責提供 DNS 服務(wù)并實現(xiàn)換綁 DNS。相當于把 發(fā)現(xiàn)出口 ip 變化 + 更換 DNS 綁定 給自動化了。當然,最大緩存時間需要調(diào)短一些,要不因為 DNS 的緩存機制,可能用戶用的還是之前的解析記錄。大家比較熟悉的“花生殼”就可以搞這個事情。

?? 其他零碎的細節(jié)

Non-authoritative answer

nslookup 經(jīng)常會出現(xiàn) Non-authoritative answer,這是什么意思?

示例:

其實這個意思就是這個解析記錄是從 LocalDNS 的緩存里拿來的,而不是向真正負責這個域名的 DNS 權(quán)威服務(wù)器拿來的。

PTR,ip 反查域名

ip 反查域名主要用在到電子郵件服務(wù)器中來攔截垃圾郵件,不過現(xiàn)在用的似乎也不多了。

舉個例子:比如你用 admin@tr0y.wang 這個郵箱給我的郵箱 macr0phag3@qq.com 發(fā)了一封郵件,qq 郵件服務(wù)器收到這封信之后,會查看這封信是由哪個 ip 地址發(fā)出來的,然后根據(jù)這個 ip 地址進行反向域名解析,如果反向解析到這個 ip 所對應(yīng)的域名是 tr0y.wang 那么就說明這封郵件真的是 tr0y.wang 發(fā)出來的,那么就接受這封郵件;反之就拒收這封郵件。

但是這就引起了另一個問題:反查域名的過程是什么樣的?或者說是怎么實現(xiàn)的?由于一個 ip 地址可以對應(yīng)多個域名,因此從 ip 出發(fā)去找域名,理論上應(yīng)該遍歷整個域名樹去挨個找,但這肯定是不現(xiàn)實的,因為效率太低下了。所以為了快速完成反向域名解析,前輩發(fā)明了特別域,稱為逆向解析域 in-addr.arpa。在上面的例子里,就是需要 tr0y.wang 提供一個 特別域。這樣要反向解析的 ip 地址就會變成一種像域名一樣的形式,后綴是逆向解析域的域名 in-addr.arpa。

例如一個 ip 地址:12.23.34.45,其逆向域名表達方式為:45.34.23.12.in-addr.arpa(注意,逆向域名中的 ip 地址部分與原 ip 的順序是相反的)。舉個例子:

如果你不想用手動寫逆向解析域,也可以用 dig 提供的 -xdig ptr 179.189.99.211.in-addr.arpa. 等價于 dig -x 211.99.189.179

最后,建議可以自己試試 dig +trace -x 211.99.189.179,你就能看到解析的順序是 . -> in-addr.arpa. -> 211.in-addr.arpa. -> 99.211.in-addr.arpa. -> 189.99.211.in-addr.arpa.

DNS 區(qū)域傳送

DNS 區(qū)域傳送,是一臺從 DNS 服務(wù)器用來獲取主 DNS 服務(wù)器(SOA 記錄的那個服務(wù))的數(shù)據(jù),更新自己數(shù)據(jù)用的,可以防止在主 DNS 服務(wù)器因意外故障時,從服務(wù)器也可以正常工作。DNS區(qū)域傳送有兩種方式:

  1. axfr:完整區(qū)域傳送
  2. ixfr:增量區(qū)域傳送
所以,正常情況下 DNS 區(qū)域傳送操作只有經(jīng)過授權(quán)的 DNS 服務(wù)器才有權(quán)執(zhí)行,但許多 DNS 服務(wù)器卻被錯誤地配置成只要有人發(fā)出請求,就直接提供一個 zone 的 DNS 內(nèi)容。DNS 域傳送漏洞會在下一篇詳細介紹,這個手段是前些年用于信息收集的手段之一。

ADDITIONAL SECTION

如果你用過 dig,你就會發(fā)現(xiàn)查詢結(jié)果里經(jīng)常會有一個 ADDITIONAL SECTION

那么這個是干嘛用的呢?簡單來說,ADDITIONAL SECTION 里的所有數(shù)據(jù)都不是你沒有明確要求返回的數(shù)據(jù),就是服務(wù)器認為你可能會有用,就給你了。舉個例子,假如你查詢 . 的 ns 記錄,查詢到了 DNS 根服務(wù)器之后,它會認為你在查詢完 ns 記錄(例如 a.root-servers.net.)之后大概率會繼續(xù)查 a.root-servers.net. 的 A 記錄,所以它就在 ADDITIONAL SECTION 里告訴你 a.root-servers.net. 的 ip 是 198.41.0.4,這樣你的 localDNS 就會緩存這個記錄,等你真正去查 a.root-servers.net. ip 的時候就直接從緩存拿里給你了,省得你又去繞一大圈。

?? 完結(jié)撒花

DNS 內(nèi)容其實還有一些,但不是很重要就不梳理了,如果下一篇需要某個知識點,會再補講一下。DNS 是很重要的協(xié)議,后面很多攻擊手段,如果對 DNS 的一些重要細節(jié)模棱兩可,很難完全理解。


努力 學(mō) 習(yú) 中...

博客與公眾號文章同步(有些文章只在公眾號: 橘子殺手 上發(fā)布),還可以實時交流!來快活啊~





關(guān)鍵詞:知識,復(fù)習,基礎(chǔ),安全

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉