DNS(BIND)的安全性 (轉)

worldblog發表於2007-12-07
DNS(BIND)的安全性 (轉)[@more@]

-----如何部署
外面老吵吵嚷嚷說狼來了,但是狼究竟是怎麼來的,也許很多人都不清楚,
以前的討論裡面都侷限於針對各種的分析,但是少有的全面的對某個
問題的討論,這段時間心情不錯,決定專門整理出一個專題來,就是專門討論
DNS的性。
也許有的人會覺得奇怪,DNS的安全性好像很少聽人提到,其實,DNS的安全
尤勝過其它的安全。我先隨便說說DNS的安全隱患:
1.不會限制對DNS的訪問
2.DNS可以洩漏內部的網路拓樸結構
3.DNS存在許多簡單有效的緩衝
4.幾乎所有的網站都需要DNS
5.DNS的本身問題可是關係到整個應用的關鍵
6.國內關於DNS安全的資料太少,只怕狼真的來了的時候,大家來不及操傢伙
...
哎呀,一下子扯開了,大家就當看評書把,;)
安全的一個重要標誌是可用性。對於DNS伺服器而言這點尤其重要,在現實
生活中經常定義攻擊者系統獲取資料為一個安全問題,但是對於DNS伺服器
來說,遭到了拒絕服務攻擊則是一件更嚴重的問題。
失去了DNS伺服器的話,任何在inte網路上的人將不能夠再使用域名找到你
的伺服器,不可想像讓普通的網民們使用202.106.184.200來代替
使用。更嚴重的是,沒有了DNS的服務,所有的傳送都將失敗,而你的內部
網路將由於解析域名的失敗而失去和外部網路的聯絡。

DNS的一些注意事項
註冊了一個域名以後,可以最大為你的域名設定6個DNS伺服器名。
例如,.com公司的就為自己設定了五個DNS伺服器來解析自己的域名:
Name Servers:
DNS4.CP.MT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
Z1.MSFT.AKADNS.216.32.118.104
Z7.MSFT.AKADNS.COM 213.161.66.158
DNS1.TK.MSFT.NET 207.46.232.37
這樣,即使這三個中的兩個停止了工作,但是了,仍然可以有一個會對外提供服務,
而對於廣大的而言,當出現這種多個DNS伺服器停止服務帶來的唯一的影響
就是查詢域名的時候會延遲,因為它需要一個一個的去查詢,直到找到最後的一個為止。
而上面這一個步驟也是你應付惡意攻擊者對DNS伺服器進行拒絕服務攻擊的一個
保護手段。
一個能夠放到局使用的DNS伺服器,一般的基本是一個U,
它應該有足夠的RAM來將放入中。一般來說,512M是足夠用了,
而且值得考慮的是,在你的DNS伺服器前面加道防火牆,讓防火牆把那些
成天只知道攻擊的人阻擋在外面。
如果你有多個DNS伺服器來進行解析域名的工作的話,一個值得考慮的
問題是,如果這些伺服器都是處於接近100%的處理量,每個都接近飽和的時候,
那麼你應該考慮多再給你的dns伺服器減壓的問題:一是為了應用上考慮,
其次從安全上來說,如果這樣的系統,只要攻擊者讓一臺DNS伺服器癱瘓了,
那麼繁重的處理工作自然會壓垮其它的DNS伺服器的。
如果純粹從理論上出發,那麼一臺DNS伺服器是完全可以完成所有任務的,
但是對於實際應用而言,應該是在考慮到在失去了一臺伺服器的情況下,剩下的
應該還能夠正常的工作(這就是在做大專案的時候經常說的冗餘性和高可用性)。
前段日子,就遭受了沉重的專門針對DNS伺服器的攻擊,這次是
放在4臺DNS伺服器前的防火牆成了攻擊目標,大量的資料包湧向這個路有器,
從而干擾了正常的DNS通訊。導致微軟的好幾個主要站點都無法給外界提供服務。

上面是關於DNS設計時的一個基本原則,下面我們來分析一下這則新聞。

微軟求助Akamai幫忙加固其網路

--------------------------------------------------------------------------------

2001/01/30 17:15 ChinaByte

  【ChinaByte綜合訊息】日前,微軟的附屬網站多次發生癱瘓,一度無法登入。
微軟發言人稱這是其DNS伺服器所引起的故障。該公司承認,它配置基礎設施的方式
,給了可乘之機。該公司在某單一網路上執行著所有4臺重要的DNS伺服器。
攻擊微軟網站的駭客,顯然將矛頭對準了該網路中用來指引資料流量的器,
透過傳送大量資料,使需要進行域名解析的資料無法抵達DNS伺服器。

--------------------------------------------------------------------------------

對這次攻擊的分析如下:
在1月30號前,可以查詢微軟的DNS的配置結果如下:
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
DNS6.CP.MSFT.NET 207.46.138.20
DNS7.CP.MSFT.NET 207.46.138.21
Z1.MSFT.AKADNS.COM 216.32.118.104

可以看到,在這個以前的DNS設計中,微軟的用來解析自己網站的DNS伺服器顯然都在
同一個路由器(或防火牆裝置)後面,而這次駭客的攻擊只所以得逞,就是在於他們攻擊
了這個路由器(或防火牆),讓大量的資料包堵塞了這個路由器(或防火牆),而正常的
DNS解析請求無法到達內部的四個DNS伺服器上。從而導致了,微軟的附屬網站多次發生癱瘓。

透過上面的分析,我們再來看看目前微軟新的DNS佈置計劃,這是今天的微軟的
DNS配置結果如下:
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
Z1.MSFT.AKADNS.COM 216.32.118.104
Z7.MSFT.AKADNS.COM 213.161.66.158
DNS1.TK.MSFT.NET 207.46.232.37
可以看到,最大的改變莫過於取消了4臺放置在同一個路由器後面的DNS,而將DNS的解析
任務分佈到了其它的地方,而這其它的DNS伺服器顯然已經不再是在同一個路由器後面了。

其實,這裡面提到的只是對DNS的拒絕服務導致了網站整個癱瘓的示例以及如何的
辦法,其實DNS的安全問題在許多安全威脅列表裡面一向都是名列三甲之中的,以後我想陸續來
說明一下這個問題。

DNS(BIND)安全性之二
------目前DNS(BIND)存在的安全威脅
在DNS存在的安全隱患到底能夠對系統造成多大的威脅,入侵者是對其中的
哪些內容感興趣了,我將在下面稍微作一個簡單的描述。只有知己知彼,才能夠
百戰不殆啊,:)。而且我相信只要是一個稱職的管理員,當他在看了下面的內容
後,他就一定會把DNS的安全問題擺在當處理整個這個步驟中的重要地位了。
DNS帶來的安全威脅主要來自一下幾個方面:

1.拒絕服務攻擊
有關這個的描述我在我的描述dns的第一篇文章裡面已經有了詳細的說明。
這裡只是羅列出它而已。

2.設定不當的DNS將洩漏過多的網路拓樸結構
如果你的DNS伺服器允許對任何人都進行區域傳輸的話,那麼你的整個網路
架構中的主機名,主機IP列表、路由器名,路由器IP列表,甚至包括你的
機器所在的位置等等。
下面舉一個簡單的例子,以下是.com公司的DNS告訴我們的情況:
PS:由於列表太長,我有刪節(一共213個地址)

redhat.com. ns1.redhat.com noc.redhat.com. (200102060
2 3600 1800 604800 86400)
redhat.com. NS ns1.redhat.com
...

news CNAME stan.redhat.com
...
* MX 10 .redhat.com
lists A 199.183.24.247
juju A 199.183.24.212
updates A 216.148.218.193
...
wildstar.community A 199.183.24.202
...
acme A 199.183.24.76
er A 199.183.24.250
iad NS ns1.redhat.com
iad NS ns2.redhat.com
iad NS ns3.redhat.com
mail A 199.183.24.239
bridger A 199.183.24.75
archive A 216.148.218.195
mojo A 199.183.24.213
contrib CNAME ://ftp.redhat.com">ftp.redhat.com
...
router-ext.soma A 205.149.7.26
tunnel.soma A 205.217.45.82
firebox-ext.soma A 205.217.45.80
zilla A 199.183.24.198
...
ftp A 216.148.218.201
rh-mirror CNAME wallace.redhat.com
...
redhat.com. SOA ns1.redhat.com noc.redhat.com. (200102060
2 3600 1800 604800 86400)

從上面的這個列表裡面我們可以很清楚的看到redhat.com這個網站的內部網路拓樸結構
這個方法可比使用nmap去掃描整個網段還來得輕鬆,並且還可以每臺機器的關係獲取
到對一個入侵者來說可能很要命的資訊。


3.利用被控制的dns伺服器入侵整個網路,破壞整個網路的安全完整性。
當一個入侵者控制了dns伺服器後,他就可以隨意篡改dns的記錄資訊,甚至使用這些
被篡改的記錄資訊來達到進一步入侵整個網路的目的。例如,將現有的dns記錄中的主機資訊
修改成被攻擊者自己控制的主機,這樣所有到達原來目的地的資料包將被重定位到入侵者手中,
在國外,這種攻擊方法有一個很形象的名稱,被稱為dns毒藥,因為dns帶來的威脅會使得整個
網路系統中毒,破壞了完整性。
舉例如下:如果一個做線上交易的網路公司的主dns伺服器被人控制,
如果原來的是解析到192.168.0.2,那麼入侵者可以篡改這個主dns
的記錄,將其重新解析到10.0.0.2,而這個10.0.0.2上也執行一個模仿了
提供線上交易的網站,那麼根本不知內情的使用者就會在這個假的地址輸入他們的密碼和使用者名稱
其實這些資訊已經被入侵者盜竊。

4.利用被控制的dns伺服器,繞過防火牆等其它安全裝置的控制
現在一般的網站都設定有防火牆,但是由於DNS服務的特殊性,在*nix機器上,dns需要的埠
是UDP 53和TCP 53,它們都是需要有root的。這樣防火牆很難控制對這些埠的訪問,
入侵者可以利用dns的諸多漏洞獲取到dns伺服器的管理員許可權。
如果內部網路的設定不合理,例如dns伺服器上的管理員密碼和內部主機管理員密碼一致,
dns伺服器和內部其它主機處於同一個網段,dns伺服器處於防火牆的可信任區域等等,就相當於
給入侵者開了一個開啟系統大門的捷徑。

呵呵,有關DNS的安全威脅先介紹這麼多把,其實上面還只是我所知道的有關dns安全威脅的
冰山一角而已。在後續的文章裡面將逐一就如何來設定一個安全的dns伺服器,以及如何來評估檢測
一個安全的DNS伺服器進行探討。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989509/,如需轉載,請註明出處,否則將追究法律責任。

相關文章