域名系統(tǒng)(Domain Name System)(DNS)是互聯(lián)網(wǎng)的基礎(chǔ)之一,然而大多數(shù)不懂網(wǎng)絡(luò)的人可能并不知道他們每天都在使用它來工作、查看電子郵件或在智能手機上浪費時間。
就其本質(zhì)而言,DNS 是一個與數(shù)字匹配的名稱目錄。這些數(shù)字,在這里指的是 IP 地址,計算機用 IP 地址來相互通信。大多數(shù)對 DNS 的描述都是用電話簿來比喻,這對于 30 歲以上的人來說是沒有問題的,因為他們知道電話簿是什么。
如果你還不到 30 歲,可以把 DNS 想象成你的智能手機的聯(lián)系人名單,它將人們的名字與他們的電話號碼及電子郵件地址進(jìn)行匹配,然后這個聯(lián)系人名單的就像地球上的人一樣多。
DNS 簡史
當(dāng)互聯(lián)網(wǎng)還非常、非常小的時候,人們很容易將特定的 IP 地址與特定的計算機對應(yīng)起來,但隨著越來越多的設(shè)備和人加入到不斷發(fā)展的網(wǎng)絡(luò)中,這種簡單的情況就沒法持續(xù)多久了?,F(xiàn)在仍然可以在瀏覽器中輸入一個特定的 IP 地址來到達(dá)一個網(wǎng)站,但當(dāng)時和現(xiàn)在一樣,人們希望得到一個由容易記憶的單詞組成的地址,也就是我們今天所認(rèn)識的那種域名(比如 linux.cn )。在 20 世紀(jì) 70 年代和 80 年代早期,這些名稱和地址是由一個人指定的,她是 斯坦福大學(xué)的 Elizabeth Feinler ,她在一個名為 HOSTS.TXT 的文本文件中維護(hù)著一個主列表,記錄了每一臺連接互聯(lián)網(wǎng)的計算機。
隨著互聯(lián)網(wǎng)的發(fā)展,這種局面顯然無法維持下去,尤其是因為 Feinler 只處理加州時間下午 6 點之前的請求,而且圣誕節(jié)也要請假。1983 年,南加州大學(xué)的研究人員 Paul Mockapetris 受命在處理這個問題的多種建議中提出一個折中方案。但他基本上無視了所有提出的建議,而是開發(fā)了自己的系統(tǒng),他將其稱為 DNS。雖然從那時起,現(xiàn)今的它顯然發(fā)生了很大的變化,但在基本層面上,它的工作方式仍然與將近 40 年前相同。
DNS 服務(wù)器是如何工作的
將名字與數(shù)字相匹配的 DNS 目錄并不是整個藏在互聯(lián)網(wǎng)的某個黑暗角落。截至 2017 年底, 它記錄了超過 3.32 億個域名 ,如果作為一個目錄確實會非常龐大。就像互聯(lián)網(wǎng)本身一樣,該目錄分布在世界各地,存儲在域名服務(wù)器(一般簡稱為 DNS 服務(wù)器)上,這些服務(wù)器都會非常有規(guī)律地相互溝通,以提供更新和冗余。
權(quán)威 DNS 服務(wù)器與遞歸 DNS 服務(wù)器的比較
當(dāng)你的計算機想要找到與域名相關(guān)聯(lián)的 IP 地址時,它首先會向 遞歸(recursive) DNS 服務(wù)器(也稱為遞歸解析器)提出請求。遞歸解析器是一個通常由 ISP 或其他第三方提供商運營的服務(wù)器,它知道需要向其他哪些 DNS 服務(wù)器請求解析一個網(wǎng)站的名稱與其 IP 地址。實際擁有所需信息的服務(wù)器稱為 權(quán)威(authoritative) DNS 服務(wù)器。
DNS 服務(wù)器和 IP 地址
每個域名可以對應(yīng)一個以上的 IP 地址。事實上,有些網(wǎng)站有數(shù)百個甚至更多的 IP 地址與一個域名相對應(yīng)。例如,你的計算機訪問 www.google.com 所到達(dá)的服務(wù)器,很可能與其他國家的人在瀏覽器中輸入相同的網(wǎng)站名稱所到達(dá)的服務(wù)器完全不同。
該目錄的分布式性質(zhì)的另一個原因是,如果這個目錄只在一個位置,在數(shù)百萬,可能是數(shù)十億在同一時間尋找信息的人中共享,那么當(dāng)你在尋找一個網(wǎng)站時,你需要花費多少時間才能得到響應(yīng) —— 這就像是排著長隊使用電話簿一樣。
什么是 DNS 緩存?
為了解決這個問題,DNS 信息在許多服務(wù)器之間共享。但最近訪問過的網(wǎng)站的信息也會在客戶端計算機本地緩存。你有可能每天使用 google.com 好幾次。你的計算機不是每次都向 DNS 名稱服務(wù)器查詢 google.com 的 IP 地址,而是將這些信息保存在你的計算機上,這樣它就不必訪問 DNS 服務(wù)器來解析這個名稱的 IP 地址。額外的緩存也可能出現(xiàn)在用于將客戶端連接到互聯(lián)網(wǎng)的路由器上,以及用戶的互聯(lián)網(wǎng)服務(wù)提供商(ISP)的服務(wù)器上。有了這么多的緩存,實際上對 DNS 名稱服務(wù)器的查詢數(shù)量比看起來要少很多。
如何找到我的 DNS 服務(wù)器?
一般來說,當(dāng)你連接到互聯(lián)網(wǎng)時,你使用的 DNS 服務(wù)器將由你的網(wǎng)絡(luò)提供商自動建立。如果你想看看哪些服務(wù)器是你的主要名稱服務(wù)器(一般是遞歸解析器,如上所述),有一些網(wǎng)絡(luò)實用程序可以提供關(guān)于你當(dāng)前網(wǎng)絡(luò)連接的信息。 Browserleaks.com 是一個很好的工具,它提供了很多信息,包括你當(dāng)前的 DNS 服務(wù)器。
我可以使用 8.8.8.8 的 DNS 嗎?
但要記住,雖然你的 ISP 會設(shè)置一個默認(rèn)的 DNS 服務(wù)器,但你沒有義務(wù)使用它。有些用戶可能有理由避開他們 ISP 的 DNS —— 例如,有些 ISP 使用他們的 DNS 服務(wù)器將不存在的地址的請求重定向到 帶有廣告的網(wǎng)頁 。
如果你想要一個替代方案,你可以將你的計算機指向一個公共 DNS 服務(wù)器,以它作為一個遞歸解析器。最著名的公共 DNS 服務(wù)器之一是谷歌的,它的 IP 地址是 8.8.8.8 和 8.8.4.4。Google 的 DNS 服務(wù)往往是 快速的 ,雖然對 Google 提供免費服務(wù)的別有用心的動機 有一定的質(zhì)疑,但他們無法真正從你那里獲得比他們從 Chrome 瀏覽器中獲得的更多信息。Google 有一個頁面,詳細(xì)說明了如何 配置你的電腦或路由器 連接到 Google 的 DNS。
DNS 如何提高效率
DNS 的組織結(jié)構(gòu)有助于保持事情的快速和順利運行。為了說明這一點,讓我們假設(shè)你想訪問 linux.cn 。
如上所述,對 IP 地址的初始請求是向遞歸解析器提出的。遞歸解析器知道它需要請求哪些其他 DNS 服務(wù)器來解析一個網(wǎng)站( linux.cn )的名稱與其 IP 地址。這種搜索會傳遞至根服務(wù)器,它知道所有頂級域名的信息,如 .com、.net、.org 以及所有國家域名,如 .cn(中國)和 .uk(英國)。根服務(wù)器位于世界各地,所以系統(tǒng)通常會將你引導(dǎo)到地理上最近的一個服務(wù)器。
一旦請求到達(dá)正確的根服務(wù)器,它就會進(jìn)入一個頂級域名(TLD)名稱服務(wù)器,該服務(wù)器存儲二級域名的信息,即在你寫在 .com、.org、.net 之前的單詞(例如, linux.cn 的信息是 “l(fā)inux”)。然后,請求進(jìn)入域名服務(wù)器,域名服務(wù)器掌握著網(wǎng)站的信息和 IP 地址。一旦 IP 地址被找到,它就會被發(fā)回給客戶端,客戶端現(xiàn)在可以用它來訪問網(wǎng)站。所有這一切都只需要幾毫秒的時間。
因為 DNS 在過去的 30 多年里一直在工作,所以大多數(shù)人都認(rèn)為它是理所當(dāng)然的。在構(gòu)建系統(tǒng)的時候也沒有考慮到安全問題,所以 黑客們充分利用了這一點 ,制造了各種各樣的攻擊。
DNS 反射攻擊
DNS 反射攻擊可以用 DNS 解析器服務(wù)器的大量信息淹沒受害者。攻擊者使用偽裝成受害者的 IP 地址來向他們能找到的所有開放的 DNS 解析器請求大量的 DNS 數(shù)據(jù)。當(dāng)解析器響應(yīng)時,受害者會收到大量未請求的 DNS 數(shù)據(jù),使其不堪重負(fù)。
DNS 緩存投毒
DNS 緩存投毒 可將用戶轉(zhuǎn)移到惡意網(wǎng)站。攻擊者設(shè)法在 DNS 中插入虛假的地址記錄,這樣,當(dāng)潛在的受害者請求解析其中一個中毒網(wǎng)站的地址時,DNS 就會以另一個由攻擊者控制的網(wǎng)站的 IP 地址作出回應(yīng)。一旦訪問了這些假網(wǎng)站,受害者可能會被欺騙,泄露密碼或下載了惡意軟件。
DNS 資源耗盡
DNS 資源耗盡 攻擊可以堵塞 ISP 的 DNS 基礎(chǔ)設(shè)施,阻止 ISP 的客戶訪問互聯(lián)網(wǎng)上的網(wǎng)站。攻擊者注冊一個域名,并通過將受害者的名稱服務(wù)器作為域名的權(quán)威服務(wù)器來實現(xiàn)這種攻擊。因此,如果遞歸解析器不能提供與網(wǎng)站名稱相關(guān)的 IP 地址,就會詢問受害者的名稱服務(wù)器。攻擊者會對自己注冊的域名產(chǎn)生大量的請求,并查詢不存在的子域名,這就會導(dǎo)致大量的解析請求發(fā)送到受害者的名稱服務(wù)器,使其不堪重負(fù)。
什么是 DNSSec?
DNS 安全擴展是為了使參與 DNS 查詢的各級服務(wù)器之間的通信更加安全。它是由負(fù)責(zé) DNS 系統(tǒng)的 互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)(Internet Corporation for Assigned Names and Numbers)(ICANN)設(shè)計的。
ICANN 意識到 DNS 頂級、二級和三級目錄服務(wù)器之間的通信存在弱點,可能會讓攻擊者劫持查詢。這將允許攻擊者用惡意網(wǎng)站的 IP 地址來響應(yīng)合法網(wǎng)站的查詢請求。這些網(wǎng)站可能會向用戶上傳惡意軟件,或者進(jìn)行網(wǎng)絡(luò)釣魚和網(wǎng)絡(luò)欺騙攻擊。
DNSSec 將通過讓每一級 DNS 服務(wù)器對其請求進(jìn)行數(shù)字簽名來解決這個問題,這就保證了終端用戶發(fā)送進(jìn)來的請求不會被攻擊者利用。這就建立了一個信任鏈,這樣在查詢的每一步,請求的完整性都會得到驗證。
此外,DNSSec 可以確定域名是否存在,如果不存在,它就不會讓該欺詐性域名交付給尋求域名解析的無辜請求者。
隨著越來越多的域名被創(chuàng)建,越來越多的設(shè)備繼續(xù)通過物聯(lián)網(wǎng)設(shè)備和其他“智能”系統(tǒng)加入網(wǎng)絡(luò),隨著 更多的網(wǎng)站遷移到 IPv6 ,將需要維持一個健康的 DNS 生態(tài)系統(tǒng)。大數(shù)據(jù)和分析的增長也 帶來了對 DNS 管理的更大需求 。
SIGRed:蠕蟲病毒 DNS 漏洞再次出現(xiàn)
最近,隨著 Windows DNS 服務(wù)器缺陷的發(fā)現(xiàn),全世界都看到了 DNS 中的弱點可能造成的混亂。這個潛在的安全漏洞被稱為 SIGRed, 它需要一個復(fù)雜的攻擊鏈 ,但利用未打補丁的 Windows DNS 服務(wù)器,有可能在客戶端安裝和執(zhí)行任意惡意代碼。而且該漏洞是“可蠕蟲傳播”的,這意味著它可以在沒有人為干預(yù)的情況下從計算機傳播到計算機。該漏洞被認(rèn)為足夠令人震驚,以至于美國聯(lián)邦機構(gòu) 被要求他們在幾天時間內(nèi)安裝補丁 。
DNS over HTTPS:新的隱私格局
截至本報告撰寫之時,DNS 正處于其歷史上最大的一次轉(zhuǎn)變的邊緣。谷歌和 Mozilla 共同控制著瀏覽器市場的大部分份額,他們正在鼓勵向 DNS over HTTPS (DoH)的方向發(fā)展,在這種情況下,DNS 請求將被已經(jīng)保護(hù)了大多數(shù) Web 流量的 HTTPS 協(xié)議加密。在 Chrome 的實現(xiàn)中,瀏覽器會檢查 DNS 服務(wù)器是否支持 DoH,如果不支持,則會將 DNS 請求重新路由到谷歌的 8.8.8.8。
這是一個并非沒有爭議的舉動。早在上世紀(jì) 80 年代就在 DNS 協(xié)議上做了大量早期工作的 Paul Vixie 稱此舉對安全來說是“ 災(zāi)難 ”:例如,企業(yè) IT 部門將更難監(jiān)控或引導(dǎo)穿越其網(wǎng)絡(luò)的 DoH 流量。不過,Chrome 瀏覽器是無所不在的,DoH 不久就會被默認(rèn)打開,所以讓我們拭目以待。
責(zé)編AJX
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7485瀏覽量
88541 -
DNS
+關(guān)注
關(guān)注
0文章
215瀏覽量
19771 -
ip地址
+關(guān)注
關(guān)注
0文章
291瀏覽量
16990
發(fā)布評論請先 登錄
相關(guān)推薦
評論