DNS系統原理及漏洞利用分析(上)
基于IP協議,兩臺計算機之間要實現通信有一個前提,就是它們分別有一個IP地址。由于我們大多數人都善于記住www.taobao.com之類的字串,而非一串如104.196.44.101一般毫無規律的IP地址數字組合,因此,需要一個程序將名稱字串翻譯成IP地址。
在互聯網上儲存域名與IP地址間映射關系的一個分布式數據庫,能夠將名稱轉換為數字、數字轉換為名稱的程序就被稱為DNS(Domain Name System,域名系統),運行DNS系統的主機就是“DNS服務器”。如果沒有DNS,任何互聯網訪問就都需要我們記住12個數字——服務器的IP地址。
一、DNS工作原理
作為互聯網訪問中不可或缺的一項技術,了解DNS的運作機理非常重要。
DNS中的域名-IP映射條目被稱為“DNS記錄”。互聯網上需要實現通信的計算機數量過于龐大,將所有DNS記錄都記錄在一個記錄集里,由單臺DNS服務器進行存儲處理是不切實際的。因此,在DNS體系的設計中,全球的DNS被分成了多個小記錄集,這些記錄集被稱為“域”(Domain)。一個域包含的記錄數量仍有可能非常大,因此,域還可以被劃分為更小的子集——“區”(Zone)。
因此,互聯網上所有的域名-IP映射條目是由許多DNS服務器共同存儲的。任何要根據域名查詢IP或根據IP查詢域名的計算機,都可以向其DNS服務器發起查詢,并且DNS服務器還知道如何在多臺DNS服務器之間發起查詢。當DNS服務器查詢其他DNS服務器時,我們稱之為“上游”查詢。域查詢可以不停的向上執行,直至權限域名服務器。
權限域名服務器是管理員對其所管轄域的服務器名和IP地址進行管理的地方。當DNS管理員想要對服務器名或IP地址實施增刪改查時,就會在權限域名服務器(也稱“主DNS服務器”)上進行操作。另外,還有“從DNS服務器”,用于保存區或域的DNS記錄副本。
1. 加載頁面用到的四個DNS服務器
- 域名解析服務器(Resolving name server):自身存有被查詢的IP-域名條目或向另一個DNS服務器請求該IP-域名條目,并響應此次查詢的服務器。
- 根域名服務器(Root name server):根區的域名服務器。它直接響應查詢請求,并返回相應的域權限域名服務器列表。
- 域名服務器(TLD name Server):域名服務器(TLD)是Internet上的高級DNS服務器之一。當搜索www.qq.com時,“.com”TLD服務器將首先響應,在其條目中搜索“qq”字串。
- 權限域名服務器(Authoritative name server):權限域名服務器是DNS查詢流程中的結尾一站,其存儲有某個區的域名條目記錄。
2. DNS服務的類型
根據其處理DNS查詢的技術機理不同,DNS服務被分為兩種類型:
- 遞歸DNS服務:遞歸DNS服務響應DNS查詢并向權限域名服務發起域名條目查詢,或在其緩存的DNS條目中實施查詢。
- 權限DNS服務:權限DNS服務自身存儲DNS條目。因此,如果向權限DNS服務查詢其存儲的某個IP-域名條目,則無需再向其他服務器發起查詢。
3. 公共DNS & 私有DNS
對于需要被公眾在互聯網上訪問的服務器,它需要具有公共DNS記錄,并且其IP地址在互聯網上可訪問,即不會被防火墻等訪問控制技術所阻止。任何能夠連接到公共DNS服務器的人都可以在且無需身份驗證的情況下訪問公共DNS服務器。
但是,并非所有的DNS記錄都是公開的,為了使員工能夠方便地訪問企業內網的服務器,不少企業都有自身的私有DNS。私有DNS被用于存放不希望公開到互聯網上的企業內部文件服務器、郵件服務器、域控制器、數據庫服務器、應用程序服務器等的域名和IP。
有一點需要注意的是,私有DNS服務器和公共DNS服務器一樣,對其的訪問無需進行身份驗證。這主要是因為在DNS技術創建之初,安全性還不是一個需要考慮的技術問題。因此,大多數情況下,企業內部網絡中的任何用戶都可以在未做身份認證的情況下查詢內部DNS服務器存儲的信息。
二、查詢DNS的七個步驟
(1)當用戶試圖訪問Internet上的計算機,例如,在瀏覽器地址欄中輸入www.dingxinsec.com.cn時,就將啟動一次DNS查詢。
(2)DNS查詢的首站是本地DNS緩存。在用戶訪問網絡上不同的域名時,這些域名對應的IP地址就將存儲在本地緩存中,如果用戶之前訪問過www.dingxinsec.com.cn,則緩存中就會存有該網站的IP地址。
(3)如果本地DNS緩存中沒有該域名的IP,DNS就會用遞歸DNS服務器進行檢查。在互聯網上,ISP服務商通常會建設和運維遞歸DNS服務器。
(4)遞歸DNS服務器自身具備緩存,如果在其緩存中存有用戶查詢的IP地址,則會將其直接返回給用戶。如果沒有,將向其它DNS服務器發起查詢。
(5)下一站是TLD域名服務器,當用戶查詢域名 www.dingxinsec.com.cn時,存儲.cn地址的TLD域名服務器會響應查詢請求。該服務器并不存儲我們需要的IP地址,但它能夠向正確的權限域名服務器轉發查詢請求。
(6)權限域名服務器用www. dingxinsec. com. cn 的IP地址響應此次查詢,遞歸DNS服務器將其存儲在本地DNS緩存中,并將地址返回給用戶的計算機。
(7)用戶計算機的本地DNS服務獲取www.dingxinsec.com.cn的IP地址并實施訪問。然后,在本地緩存中記錄該域名的IP地址,同時記錄其生存時間(TTL),即本地DNS記錄的有效時間,若用戶下次訪問該域名的時間超過TTL時間,則下次訪問www.dingxinsec.com.cn時,DNS將再次執行上述過程。
三、DNS查詢的分類
DNS查詢需要給DNS服務器傳遞的信息包括:
- 當前查詢是什么類型;
- 要返回什么信息。
標準的DNS查詢有以下三種類型:
- 遞歸查詢:在遞歸查詢中,計算機請求DNS服務器返回一個IP地址,或確認該DNS服務器不知道該IP。
- 迭代查詢:在迭代查詢中,查詢者向DNS服務器請求返回一個優先答案。如果DNS服務器中查不到被查詢IP,它將返回權限域名服務器或TLD域名服務器。查詢者將繼續此迭代過程,直到找到被查詢IP或超時。
- 非遞歸查詢:DNS解析服務器使用此類查詢來查找自身緩存中沒有存儲的IP。
接下篇《DNS系統原理及漏洞利用分析(下)》