DNS協議工作過程
下面以域名為m.xyz.com的主機欲通過另一個主機的域名y.abc.com的IP地址為例,簡述DNS協議過程。
- 主機m.xyz.com先向其本地服務器dns.xyz.com進行遞歸查詢。
- 本地域名服務器先查詢高速緩存,如果不久前已經查詢過域名y.abc.com的IP,那么本地域名服務器就不必向根域名服務器查詢,而是直接把高速緩存中存放的上次查詢的結果(即y.abc.com的IP地址)告訴用戶。
- 本地域名服務器采用迭代查詢。他先向一個根域名服務器查詢。
- 根域名服務器告訴本地域名服務器,下一次應查詢的頂級域名服務器dns.com的IP地址。
- 本地域名服務器向頂級域名服務器dns.com進行查詢。
- 頂級域名服務器dns.com告訴本地域名服務器,下一次應查詢的權限域名服務器dns.abc.com的IP地址。
- 本地域名服務器向權限域名服務器dns.abc.com進行查詢。
- 權限域名服務器dns.abc.com告訴本地域名服務器,所查詢的主機的ip地址。
- 本地域名服務器最后把查詢的結果告訴主機m.xyz.com。
安全隱患
由於DNS本身的設計缺陷,沒有提供適當的信息保護和認證機制,使得DNS很容易受到攻擊。比如DNS Spoofing(DNS欺騙)、Cache Poisoing(緩存中毒),Server Compromising(服務器中毒),DoS。DNS Spoofing(DNS欺騙)、Cache Poisoing(緩存中毒)是其中最容易實現,且危害最大的兩個攻擊。DNS欺騙能夠實現的成因是,在DNS報文中只使用一個序列號來進行有效性鑒別,加之DNS客戶端簡單地信任首先到達的應答包而丟棄所有后到達的應答包,使得攻擊者很容易監聽到查詢請求並偽造應答包給DNS客戶端。緩存中毒的成因也是由於DNS協議沒有提供恰當的認證機制。在已知端口號的前提下,利用“生日攻擊”,通過發送大量的DNS應答包來猜測攻擊目標的DNS請求包的ID號,如果所發送的偽造應答包中存在和請求包的ID一致的情況,也就是產生了所謂的“碰撞”,則欺騙成功。
消除DNS安全隱患
- 對少數信息安全級別要求高的網站避免使用DNS。可以直接通過IP地址訪問,繞開DNS服務。
- 防范ARP攻擊。因為DNS欺騙需要以ARP欺騙為基礎。避免了ARP攻擊的可能,自然無法進行DNS欺騙。
- 發送DNS請求時采用隨機端口,降低“碰撞”成功的可能性。
- 為信息安全要求高的網站建立標准的IP映射表。為少部分網站(比如設計私密信息的網站或經常訪問的網站)制作靜態標准DNS映射表。
- 被動檢測。針對攻擊往往在短時間內發送大量針對同一個域名的請求包的特點,進行檢測或者限制發送的請求包的數量。