新聞中心
【.com獨(dú)家特稿】Linux下的DNS安全保障有十大技巧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),買友情鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
(1)限制名字服務(wù)器遞歸查詢功能
關(guān)閉遞歸查詢可以使名字服務(wù)器進(jìn)入被動模式,它再向外部的DNS發(fā)送查詢請求時,只會回答自己授權(quán)域的查詢請求,而不會緩存任何外部的數(shù)據(jù),所以不可能遭受緩存中毒攻擊,但是這樣做也有負(fù)面的效果,降低了DNS的域名解析速度和效率。
以下語句僅允許172.168.10網(wǎng)段的主機(jī)進(jìn)行遞歸查詢:
allow-recusion {172.168.10.3/24; }
|
(2)限制區(qū)傳送(zone transfer)
如果沒有限制區(qū)傳送,那么DNS服務(wù)器允許對任何人都進(jìn)行區(qū)域傳輸,因此網(wǎng)絡(luò)架構(gòu)中的主機(jī)名、主機(jī)IP列表、路由器名和路由IP列表,甚至包括各主機(jī)所在的位置和硬件配置等情況都很容易被入侵者得到在DNS配置文件中通過設(shè)置來限制允許區(qū)傳送的主機(jī),從一定程度上能減輕信息泄漏。但是,需要提醒用戶注意的是:即使封鎖整個區(qū)傳送也不能從根本上解決問題,因?yàn)楣粽呖梢岳肈NS工具自動查詢域名空間中的每一個IP地址,從而得知哪些IP地址還沒有分配出去,利用這些閑置的IP地址,攻擊者可以通過IP欺騙偽裝成系統(tǒng)信任網(wǎng)絡(luò)中的一臺主機(jī)來請求區(qū)傳送。
以下語句僅允許IP地址為172.168.10.1和172.168.10.2的主機(jī)能夠同DNS服務(wù)器進(jìn)行區(qū)域傳輸:
|
(3)限制查詢(query)
如果任何人都可以對DNS服務(wù)器發(fā)出請求,那么這是不能接受的。限制DNS服務(wù)器的服務(wù)范圍很重要,可以把許多入侵者據(jù)之門外。修改BIND的配置文件:/etc/named.conf加入以下內(nèi)容即可限制只有210.10.0.0/8和211.10.0.0/8網(wǎng)段的查詢本地服務(wù)器的所有區(qū)信息,可以在options語句里使用如下的allow-query子句:
|
(4)分離DNS(split DNS)
采用split DNS(分離DNS)技術(shù)把DNS系統(tǒng)劃分為內(nèi)部和外部兩部分,外部DNS系統(tǒng)位于公共服務(wù)區(qū),負(fù)責(zé)正常對外解析工作;內(nèi)部DNS系統(tǒng)則專門負(fù)責(zé)解析內(nèi)部網(wǎng)絡(luò)的主機(jī),當(dāng)內(nèi)部要查詢Internet上的域名時,就把查詢?nèi)蝿?wù)轉(zhuǎn)發(fā)到外部DNS服務(wù)器上,然后由外部DNS服務(wù)器完成查詢?nèi)蝿?wù)。把DNS系統(tǒng)分成內(nèi)外兩個部分的好處在于Internet上其它用戶只能看到外部DNS系統(tǒng)中的服務(wù)器,而看不見內(nèi)部的服務(wù)器,而且只有內(nèi)外DNS服務(wù)器之間才交換DNS查詢信息,從而保證了系統(tǒng)的安全性。并且,采用這種技術(shù)可以有效地防止信息泄漏。
在BIND 9中可以使用view語句進(jìn)行配置分離DNS。view語句的語法為:
|
其中:?
◆match-clients:該子句非常重要,它用于指定誰能看到本view??梢栽趘iew語句中使用一些選項;?
◆zone_statement:該子句指定在當(dāng)前view中可見的區(qū)聲明。如果在配置文件中使用了view語句,則所有的zone語句都必須在view中出現(xiàn)。對同一個zone而言,配置內(nèi)網(wǎng)的view應(yīng)該置于外網(wǎng)的view之前。
下面是一個使用view語句的例子,它來自于BIND9的標(biāo)準(zhǔn)說明文檔:
|
接下來,需要在example.com.hosts.internal中創(chuàng)建內(nèi)網(wǎng)客戶可見的區(qū)文件,并在example.com.hosts.external中創(chuàng)建Internet客戶可見的區(qū)文件。該區(qū)文件的編寫可以根據(jù)用戶的實(shí)際情況,可以參看上面介紹的內(nèi)容,此處不再贅述。#p#
(5)隱藏BIND的版本信息
通常軟件的漏洞和風(fēng)險信息是和特定版本相關(guān)的,因此版本號是黑客進(jìn)行攻擊所需要搜集的最有價值的信息之一。黑客使用dig命令可以查詢BIND的版本號,然后黑客就能夠通過版本號查詢知道這個軟件有那些漏洞,并尋求相應(yīng)的工具來針對該漏洞進(jìn)行攻擊。因此,隨意公開BIND版本號是不明智的,具有很大的風(fēng)險。其實(shí),隱藏BIND版本號比較簡單,只需要修改配置文件/etc/named.conf,在option部分添加version聲明將BIND的版本號信息進(jìn)行覆蓋即可。使用下面的配置聲明將BIND版本號覆蓋,當(dāng)有人請求版本信息時,將無法得到有用的版本信息:
|
(6)使用非root權(quán)限運(yùn)行BIND
在Linux內(nèi)核2.3.99以后的版本中,可以以-u選項以非root權(quán)限運(yùn)行BIND。該命令表示以nobody用戶身份運(yùn)行BIND,使用nobody身份運(yùn)行能夠降低緩沖區(qū)溢出攻擊所帶來的危險。命令如下:
#/usr/local/sbin/named –u nobody |
(7)刪除DNS上不必要的其他服務(wù)
刪除DNS機(jī)器上不必要的其他服務(wù)。網(wǎng)絡(luò)服務(wù)是造成系統(tǒng)安全的重要原因,常見的DoS攻擊、弱腳本攻擊以及緩沖區(qū)溢出攻擊都是由于系統(tǒng)存在網(wǎng)絡(luò)服務(wù)所引起的。在安裝DNS運(yùn)行所依賴的操作系統(tǒng)前,就應(yīng)該確定在系統(tǒng)中運(yùn)行的服務(wù)的最小集合,創(chuàng)建一個DNS服務(wù)器系統(tǒng)就不應(yīng)該安裝Web、POP、gopher、NNTP News等服務(wù)。建議不安裝以下軟件包:(1)X-Windows及相關(guān)的軟件包;(2)多媒體應(yīng)用軟件包;(3)任何不需要的編譯程序和腳本解釋語言;(4)任何不用的文本編輯器;(5)不需要的客戶程序;(6)不需要的其他網(wǎng)絡(luò)服務(wù)。
(8)合理配置DNS的查詢方式
DNS的查詢方式有兩種,遞歸查詢和迭代查詢。合理配置這兩種查詢方式,能夠在實(shí)踐中取得較好的效果。
其中,遞歸查詢是最常見的查詢方式,工作方式是:域名服務(wù)器將代替提出請求的客戶機(jī)(下級DNS服務(wù)器)進(jìn)行域名查詢,若域名服務(wù)器不能直接回答,則域名服務(wù)器會在域各樹中的各分支的上下進(jìn)行遞歸查詢,最終將返回查詢結(jié)果給客戶機(jī),在域名服務(wù)器查詢期間,客戶機(jī)將完全處于等待狀態(tài)。具體流程示意請見圖1:
圖1 DNS遞歸查詢模式示意
迭代查詢又稱重指引查詢。其工作方式為:當(dāng)服務(wù)器使用迭代查詢時能夠使其他服務(wù)器返回一個最佳的查詢點(diǎn)提示或主機(jī)地址,若此最佳的查詢點(diǎn)中包含需要查詢的主機(jī)地址,則返回主機(jī)地址信息,若此時服務(wù)器不能夠直接查詢到主機(jī)地址,則是按照提示的指引依次查詢,直到服務(wù)器給出的提示中包含所需要查詢的主機(jī)地址為止,一般的,每次指引都會更靠近根服務(wù)器(向上),查尋到根域名服務(wù)器后,則會再次根據(jù)提示向下查找。具體流程示意如圖2所示:
圖2 DNS迭代查詢模式示意
綜合上面兩點(diǎn),我們可以看出來,遞歸查詢就是客戶機(jī)會等待最后結(jié)果的查詢,而迭代查詢是客戶機(jī)等到的不一定是最終的結(jié)果,而可能是一個查詢提示。因而存在如下兩個問題:?
◆二級DNS向一級DNS發(fā)起遞歸查詢,會對一級DNS造成性能壓力,所有跨域查詢都要經(jīng)過一級DNS響應(yīng)給對應(yīng)二級DNS;?
◆二級DNS向一級DNS發(fā)起遞歸查詢,再由一級向歸屬DNS發(fā)起遞歸的模式查詢響應(yīng)會有一定延時;
因此,有很多流量很大的DNS服務(wù)器是禁止客戶機(jī)使用遞歸查詢,用這種方式來減輕服務(wù)器的流量。#p#
(9)使用dnstop監(jiān)控DNS流量
在維護(hù)DNS服務(wù)器時,用戶往往希望知道到底是哪些用戶在使用DNS服務(wù)器,同時也希望能對DNS狀態(tài)查詢做一個統(tǒng)計,以及時地知道DNS的工作情況和狀態(tài)。在傳統(tǒng)的方式下,用戶通常使用的是tcpdump等開源工具來進(jìn)行抓包并通過查看53端口的流量來查看DNS數(shù)據(jù)包。由于tcpdump并沒有針對DNS流量進(jìn)行特殊定制,因此使用起來可能不是非常方便。因此,用戶可以使用專用于DNS的dnstop工具查詢DNS服務(wù)器狀態(tài)。
dnstop是一種非常優(yōu)秀的開源軟件,用戶可以到網(wǎng)站http://dns.measurement-factory.com/tools/dnstop/src/上進(jìn)行下載使用,目前該軟件的最新版本為:dnstop-20090128.tar.gz。
由于該軟件依賴tcpdump和pcap抓包庫(libpcap)對網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行截獲和過濾,所以用戶需要確保系統(tǒng)安裝相應(yīng)軟件后才能正常安裝和使用dnstop。通常情況下,這兩種必須的庫都已經(jīng)在系統(tǒng)中預(yù)裝好了,使用下面的命令安裝dnstop即可:
(1)解壓縮源代碼安裝包
#tar vxfz ddnstop-20090128.tar.gz |
(2)切換到解壓目錄,并使用configure命令生成Makefile文件
|
(3)使用make命令進(jìn)行安裝
#make |
安裝成功后,可以查看通過相應(yīng)的網(wǎng)絡(luò)接口來監(jiān)控DNS網(wǎng)絡(luò)流量,如下所示:
|
【編輯推薦】
- 在Linux和Unix上用Dig工具排除域名解析DNS故障
- 關(guān)注DNS服務(wù)器安全黑客攻擊早預(yù)防
本文題目:Linux下的DNS安全保障十大技巧
本文來源:http://www.dlmjj.cn/article/ccosigc.html


咨詢
建站咨詢
