舉個例子,當 DNS 客戶端向指定的 DNS 服務器查詢網 Internet 上的某一臺主機名稱時,DNS 服務器會先在自己的高速緩存區中查詢有無該條紀錄,如果找到該條名稱記錄后,會從 DNS 服務器直接將所對應到的 IP 地址傳回給客戶端;如果查不到,則再次在本地資料庫中找尋用戶所指定的名稱;如果 DNS 服務器在高速緩存區中和本地資料記錄都查不到時,服務器才會向別的 DNS 服務器查詢所要的名稱。例如,本地的 DNS 服務器會向最接近(比如屬于同一個 IP 地址段或者同一個 ISP)的 DNS 服務器去要求幫忙找尋該名稱的 IP 地址。在另一臺服務器上也有相同的動作的查詢,當查詢到后會回復原本要求查詢的服務器,該 DNS 服務器在接收到另一臺 DNS 服務器查詢的結果后,先將所查詢到的主機名稱及對應 IP 地址記錄到高速緩存區中,最后在將所查詢到的結果回復給客戶端。這樣就成功地完成了一次標準的 DNS 查詢 - 應答過程。
回頁首
開源 DNS 服務構建面臨的主要安全威脅分析
DNS 由于受當時條件限制,其系統設計存在很多缺陷:
單點故障:DNS 采用層次化的樹形結構,由樹葉走向樹根就可以形成—個全域名(Fully Qualified Domain Name,FQDN),DNS 服務器作為該 FQDN 唯一對外的域名數據庫和對內部提供遞歸域名查詢的系統,因而其安全和穩定就存在單點故障風險。
無認證機制:DNS 沒有提供認證機制,查詢者在收到應答時無法確認應答信息的真假,就容易導致 DNS 欺騙。比如,提交給某個域名服務器的域名解析請求數據包被黑客截獲,黑客可以將一個虛假的 IP 地址作為應答信息返回給請求者,那么原始請求者就誤以為這是正確的 IP 地址而訪問它,從而這樣就導致了 DNS 欺騙。
訪問量和維護量巨大以及遠距離集中式數據庫:如果部署中采用單個或者少數個名字服務器,則這些服務器不得不處理所有 DNS 查詢消息,并保存所有因特網主機的記錄,數據庫會相當巨大,需要為每臺新增的主機頻繁更新,而且單臺或者少數臺名字服務器主機不可能在所有請求查詢的客戶主機附近,就可能導致相當大的延遲。
DNS(Berkeley Internet Name Domain)的漏洞:DNS 是域名軟件,它在提供高效服務的同時也存在許多的安全性漏洞?,F已證明在 DNS 版本 4 和 8 上存在缺陷,攻擊者利用這些缺陷能成功地進行 DNS 欺騙攻擊。構成嚴重威脅的漏洞主要有兩種:一種是緩沖區溢出漏洞,嚴重的可以使攻擊者在 DNS 服務器上執行任意指令。另一種是 DoS 漏洞,受攻擊后 DNS 服務器不能提供正常服務,而且其所轄的子網無法正常工作。
DNS 面臨的網絡威脅是指 DNS 在實際的應用和部署中,不法用戶或者黑客利用 DNS 協議或者軟件設計的漏洞,可以通過網絡向 DNS 發起的攻擊,主要包括如下幾種:
內部攻擊:攻擊者在非法或合法地控制一臺 DNS 服務器后,可以直接操作域名數據庫,修改指定域名所對應的 IP 為自己所控制的主機 IP,當客戶發出對指定域名的查詢請求后,將得到偽造的 IP 地址。
序列號攻擊:DNS 協議格式中定義了用來匹配請求數據包和響應數據報序列 ID,欺騙者利用序列號偽裝成 DNS 服務器向客戶端發送 DNS 響應數據包,在 DNS 服務器發送的真實 DNS 響應數據報之前到達客戶端,從而將客戶端帶到攻擊者所希望的網站,進行 DNS 欺騙。
信息插入攻擊:攻擊者可以在 DNS 應答報文中隨意添加某些信息,指示權威域名服務器的域名及 IP,那么在被影響的域名服務器上查詢該域的請求都會被轉向攻擊者所指定的域名服務器上去,從而威脅到網絡數據的完整性。
緩存中毒:DNS 使用超高速緩存,即當一個名字服務器收到有關域名和 IP 的映射信息時,它會將該信息存放在高速緩存中。當再次遇到相同的映射請求,能直接使用緩存中的結果,這種映射表是動態更新的,刷新也是有時限的,這樣假冒者如果在下次更新之前成功地修改了 DNS 服務器上的映射緩存,就可以進行 DNS 欺騙或者 DDoS 攻擊了。
信息泄漏:DNS 的缺省設置允許任何人進行區傳送(區傳送一般用于主服務器和輔服務器之間的數據同步,輔服務器可以從主服務器獲取最新區數據文件的副本,也就可以獲得整個授權區域內的所有主機信息 ),區傳送可能會造成信息泄漏。一旦這些信息泄漏,攻擊者就可以根據它輕松地推測主服務器的網絡結構,并從這些信息中判斷其功能或發現那些防范措施較弱的機器。
不安全的動態更新:隨著動態主機配置協議(DHCP)的出現,客戶計算機由 DHCP 服務器動態分配 IP 地址,使原來手工更新其 A(Address)記錄和 PTR(反向解析)記錄變得很難管理。因此在 RFC2136 標準草案中提出了 DNS 動態更新,使得 DNS 客戶端在 IP 地址或名稱出現更改的任何時候都可利用 DNS 服務器來注冊和動態更新其資源記錄。盡管 DNS 動態更新協議規定只有經過授權的主機才能動態更新服務器的 zone file,但是攻擊者還是可以利用 IP 欺騙偽裝成 DNS 服務器信任的主機對區數據進行添加、刪除和替換。
回頁首
實戰一:DNS 服務安全配置
在使用 DNS 服務器之前,需要對與之相關的配置文件進行配置,因而首先需要了解這些基本文件,下面列表給出了幾種主要的與 DNS 有關的文件:
/etc/name.conf 文件:它是 DNS 服務器的主文件,通過它可以設置一般的 name 參數,指向該服務器使用的域數據庫的信息源。
/var/named/named.ca 文件:它是根域名配置服務器指向文件,通過它來指向根域名服務器,用于高速緩存服務器初始化。
/var/named/localhost.zone 文件:localhost 區文件,用于將名字 localhost 轉換為本地回送 IP 地址(127.0.0.1)。
/var/named/localhost.zone 文件:localhost 區反向域名解析文件,用于將本地 IP 地址(127.0.0.1)轉化為會送方 localhost 名字。
/var/named/name2ip.conf 文件:用戶配置的正向解析文件,將主機名映射為 IP 地址。
/var/named/ip2name.conf 文件:用戶配置的反向解析文件,將 ip 地址映射為主機名。
named.conf 主配置文件
在使用 named.conf 進行配置時,需要了解如下常用的配置語句,如表 1 所示。
原文轉自:http://www.ibm.com/developerworks/cn/linux/1306_liyang_securedns/