- 域名系統(Domain Name System, DNS)負責域名和IP位址的轉換。
- DNS既可以使用TCP,又可以使用UDP,端口為53.
- DNS主從伺服器之間傳輸時使用TCP協定;用戶端和DNS伺服器之間傳輸時使用的是UDP協定。
1.域名層次空間
域名分量:···.三級域名.二級域名.頂級域名
不區分大小寫,除連字元-外,不能使用其它符号。

不同級别的域名中可能會有重複的域名。
每個域分别由不同的組織進行管理。每個組織都可以将它的域再劃分成一定數目的子域,并将這些子域委托給其他組織去管理。例如,管理CN域的中國将EDU.CN子域授權給中國教育和科研計算機網CERNET來管理。
例如www.sina.com.cn,其實嚴格意義上講,sina.com.cn才是域名,www是主機名,主機名.域名 稱為完全限定域名(Full Quality Domain Name,FQDN)。
怎麼了解主機名.域名?
例如新浪公司将sina.com.cn域名買下來了,然後想為大家提供網頁服務,那麼提供網頁的那台伺服器就叫www伺服器,那麼www.sina.com.cn就是指這台伺服器。一般管理者在明明其主機的時候根據其主機的功能而定,比如網站是www,部落格是blog,論壇是bbs,即www.sina.com.cn,blog.sina.com.cn,bbs.sina.com.cn,然而申請一個域名即"sina.com.cn"即可。
2.域名伺服器
網際網路的域名系統被設計成一個連接配接分布式的資料庫系統,并采用B/S模型。域名到IP位址的解析是由運作在域名伺服器上的程式完成的,一個伺服器所負責管轄的範圍成為區,各機關根據具體情況來劃分自己管轄範圍的區,但在一個區中的所有結點必須是能夠連通的,每個區設定相應的權限域名伺服器,用來儲存該區中的所有主機的域名到IP位址的映射。每一個域名伺服器不但能夠進行一些域名到IP位址的解析,而且還必須具有連向其他域名伺服器的資訊。當自己不能進行域名到IP位址的轉換時,能夠知道到什麼地方去找别的域名伺服器。
DNS使用了大量的域名伺服器,他們以層次方式組織。沒有一台域名伺服器具有網際網路上所有主機的映射,相反,該映射分布在所有的DNS伺服器上。主要有四種類型的域名伺服器。
①根域名伺服器
根域名伺服器是最高層次的域名伺服器,所有的根域名伺服器都知道所有的頂級域名伺服器的IP位址。本地域名伺服器在自己無法解析時,首先求助根域名伺服器。根域名伺服器通常并不直接把待查詢的域名直接轉換成IP位址,而是告訴本地域名伺服器下一步應當找哪一個頂級域名伺服器進行查詢。
②頂級域名伺服器
頂級域名伺服器管理在該頂級域名伺服器注冊的所有二級域名。當收到DNS查詢請求時,就給出相應的回答(可能是最後結果,也可能是下一步應當查找的域名伺服器的IP位址)。
③授權域名伺服器
每一個主機都必須在授權域名伺服器處登記。實際上,許多域名伺服器都同時充當本地域名伺服器和授權域名伺服器。授權域名伺服器總是能夠将其管轄的主機名轉換為該主機的IP位址。
④本地域名伺服器
本地域名伺服器對域名系統非常重要。每一個網際網路服務提供者ISP,或一個大學,甚至一個大學裡的系,都可以擁有一個本地域名伺服器(因為可能不信任網際網路上的DNS伺服器)。當一個主機發出DNS查詢請求時,這個查詢請求封包就發送給該主機的本地域名伺服器。事實上,我們在Windows系統中配置“本地連接配接”時,就需要填寫DNS伺服器位址,這個位址就是本地DNS域名伺服器的位址。
3.DNS解析種類
①按照查詢方式分類:
- 遞歸查詢:客戶機與本地DNS伺服器之間
- 疊代查詢:本地DNS與根等其他DNS伺服器之間
②按照查詢内容分類:
- 正向解析:知域名,解析IP位址
- 反向解析:知IP,解析域名
4.域名解析過程
遞歸查詢:一般客戶機和伺服器之間是遞歸查詢,DNS伺服器如果未能在本地找到相應的資訊,就代替使用者向其他伺服器進行查詢,這時它是代替使用者扮演了解析器(Resolver)的角色,直到最後把結果找到,也可能根本沒有結果,那就傳回錯誤,并傳回給使用者為止。
反複查詢(疊代查詢):一般伺服器之間屬于反複查詢。DNS伺服器傳回的要麼是本地存在的結果資訊,要麼是一個錯誤碼,告訴查詢者你要的資訊這裡沒有,然後再傳回一個可能會有查詢結果的DNS伺服器位址,讓查詢者到那裡去查一查。
遞歸與疊代結合的方式
5.DNS協定封包格式
6.安全缺陷
單點故障
軟體實作漏洞
- 緩沖區溢出
- 拒絕服務
惡意攻擊
- 欺騙
- 緩存中毒
- 緩沖區溢出漏洞攻擊
- 拒絕服務攻擊
- 資訊洩露
DNS應答包被用戶端接收需要滿足以下條件:
- 應答包question域和請求包question域的域名資訊一緻;
- 應答包的Transaction ID和請求包中的Transaction ID一緻;
- 應答包的源IP位址和請求包的目的IP位址一緻;
- 應答包的目的IP位址和端口與請求包的源IP位址和端口一緻;
- 第一個到達的符合以上四個條件的應答包。
這裡存在很多漏洞。
DNS安全威脅
安全漏洞有以下三個方面:
1.DNS封包隻使用一個序列号來進行有效性鑒别,序列号由客戶程式設定并由伺服器傳回結果,客戶程式通過它來确定響應與查詢是否比對,這就引入序列号攻擊的危險。
2.從協定定義上來看,在DNS應答封包中可以附加資訊,該資訊可以和所請求的資訊沒有直接關系,這樣,攻擊者就可以在應答中随意添加某些資訊。如:訓示某域的權威域名伺服器的域名及IP,導緻在被影響的域名伺服器上查詢該域的請求都會被轉向攻擊者所指定的域名伺服器上去,進而對網絡的完整性構成威脅。
3.DNS的緩存機制,當一個用戶端/DNS伺服器,收到有關域名和IP的映射資訊時,它會将該資訊存放在緩存中,當再次遇到對此域名的查詢請求時就直接使用緩存中的結果而無需重新查詢。可以通過ipconfig /displaydns指令檢視本地DNS緩存資訊。通過ipconfig /flushdns清除緩存。
安全防範準則:
- 選擇安全沒有缺陷的BIND版本
- DNS伺服器配置正确可靠
BIND安全配置:
- DNS伺服器不應該再運作其他服務,尤其是允許普通使用者登入,減小攻擊者利用其他服務漏洞攻擊DNS伺服器的機率;
- 為BIND建立chroot,chroot是指更改某個程序所能看到的根目錄,即将某個程序限制再指定的目錄中,保證該程序隻能對該目錄及其子目錄有所動作,進而保證整個伺服器的安全。
- 隐藏BIND版本号,通過發送特殊的DNS查詢包,DNS伺服器會傳回DNS的版本資訊。(通常軟體的BUG資訊是和特定版本相關的,是以版本号是黑客尋求的最有價值的資訊。黑客獲得版本号就可以知道這個軟體存在了哪裡的漏洞。隐藏BIND版本配置比較簡單,隻需修改配置檔案)
- 請求限制。DNS伺服器響應任何人的任何請求這是不能接受的。限制DNS伺服器的服務範圍很重要,可以把許多入侵者拒之門外。修改BIND的配置檔案/etc/named.conf,添加響應内容即可。
- 預設情況下BIND的區傳送是全部開放的,如果沒有限制,DNS伺服器允許任何人進行區傳送,那麼網絡架構中的主機名、主機IP位址表、路由器及路由IP表,甚至包括各主機所在的位置和硬體配置資訊等情況很容易被入侵者得到。是以需要對去傳送進行必要的限制。
7.win server 2008 部署DNS伺服器
- 配置靜态ip
- 安裝dns服務插件:開始-管理工具-服務管理器-角色-添加角色-dns伺服器
- 在正向查找區域中建立區域-建立主機...
- 将客戶機dns指向dns伺服器
區域配置檔案中包含:資源記錄(用于此記錄解析的屬性)
SOA:Start Of Authority,起始授權
NS:Name Server,域名伺服器
A位址: 此記錄列出特定主機名的 IP 位址。這是名稱解析的重要記錄。
CNAME:标準名稱 此記錄指定标準主機名的别名。
MX郵件交換器:此記錄列出了負責接收發到域中的電子郵件的主機。
NS名稱伺服器:此記錄指定負責給定區域的名稱伺服器。
PTR:反向解析記錄
AAAA:記錄ipv6的位址
補充:
DNS伺服器的類型
- 主DNS伺服器 :本身提供DNS 服務,并且本身含有區域資料檔案。
- 輔助DNS伺服器:和Master一起提供DNS服務,當Master伺服器上的配置資訊修改的時候,會同步更新到Slave伺服器上。
- 緩存名稱伺服器:沒有自己的區域資料檔案,隻是幫助用戶端向外部DNS請求查詢,然後将查詢的結果儲存到它的緩存中。
說明:在linux系統下DNS服務的功能是通過bind軟體實作的,幾乎每個linux發行版都自帶了這個DNS服務軟體。
區域傳送
解析庫檔案同步的過程,即輔助DNS伺服器從主DNS伺服器或其他的輔助DNS伺服器請求資料傳輸過程。
- 完全區域傳送:傳送區域的所有資料,簡稱AXFR
- 增量區域傳送:傳送區域中改變的資料部分,簡稱IXFR
客戶機中DOS指令
nslookup #檢視域名伺服器
nslookup 域名 #解析域名