搜尋此網誌

2008年7月21日 星期一

你知道你在跟誰說話嗎? - 談DNS Cache Poisoning

DNS,對一般網路的使用者來說是個很陌生的名詞。但是幾乎所有網路/系統管理者都聽過,甚至管理過這個服務伺服器。它這麼知名的原因,在於沒有它,現在的網際網路大概沒幾個人願意使用。透過它,我們才能方便地使用像是g.cn這樣的名稱來對遠端的伺服器進行連線。它算是網際網路運作中一個很基礎也很重要的服務。雖然這個服務對管理者來說並不陌生,其運作原理也不算複雜,但是事實上很多DNS服務器的設定存在著不少問題(不安全、甚至是錯誤的設定)。而這個服務利害的地方在於,就算是存在一些不正常的設定,運氣好還是可以正常運作。運氣差一點的,就是不能運作。運氣最差的則是出現網路/服務不穩定的現象,因為這類問題很少人會懷疑到實際上是根源於DNS的錯誤設定。事實上,我在幾年前遇到一個曾在台灣知名網路公司服務過多年的人。當時因為網站不穩定,所以我請對方檢查DNS的設定,但是對方一直堅持不是DNS的問題。為什麼我會這樣懷疑,因為我從外部的查詢出現了好幾個192.168.x.x的設定。看到這些資料,就像我剛剛說的,運氣好還是可以運作,只是我認為我的運氣一向不太好。

也正是因為在種種原因互相作用之下,一直以來它都是網路攻擊的主要目標之一。Cert-US在這個月初公布了一個有關DNS的最新弱點-DNS Cache Poisoning。這個弱點獨特之處,在於它不是因為某個DNS產品的實作不良,或是管理者的設定錯誤而造成的。其發生的原因在於當初設計的DNS協定出現了瑕疵,可以讓攻擊者透過假冒的回應而感染DNS伺服器的快取。DNS伺服器的快取遭受感染會發生甚麼事?甚麼事都有可能發生,你可能會在攻擊者的網站輸入信用卡卡號,你可能會在攻擊者的網站貼上原本只供自己欣賞的自拍照...。而這個攻擊比釣魚網站攻擊更具威脅的原因在於你看到的網址並不是"很像"而已,而是一模一樣。當然,攻擊者也可以透過綁架網站的方式,將網站的內容置換成惡意的網頁。這樣的做法雖然一樣也可以達成使用原先受信任的網址進行惡意的行為,但是綁架網站的手續畢竟還是相對複雜。更何況DNS Cache Poisoning影響的不是只有Web服務,所有的網路服務都會受到影響。而這次的弱點也因為是DNS協定本身的問題,所以幾乎所有DNS實作都受到影響,也就是每一個DNS伺服器都有可能成為這個攻擊下的犧牲者。

因為我不想講到太技術性的東西,所以我直接附上了三個相關的網址。除了Cert以外,DoxPara的版主是這個弱點的發現者,也寫到了這整個過程的始末。另外他也提供了一個連結可以讓使用者測試自己使用的DNS服務器是否會受到這個弱點的影響。但是我使用了好幾次都出現錯誤,所以第三個網址提到一個使用dig的測試方法。在此我直接跳到Cert所公布的建議步驟 :
1. 更新!更新!更新!
2. 限制存取(查詢)的權限
3. 過濾掉不必要的流量
4. 建立內部使用的DNS Cache服務
5. 停用遞迴查詢(Recursion)
6. 使用隨機選擇的來源埠號
注意看來,這六點至少就有四點(1,2,3,5)是DNS服務器的管理者原本就應該遵守的,其中2,3,5更是直接對應到最小權限這個概念(Least Privilege)。不管面對的威脅是新的技術還是舊的方法,其實有很多防範方法都是共通的,而這樣的方法往往也是最有效的。所以我們在一味追求技術的同時,其實有些觀念/習慣還是需要好好的建立。如果不能參透並好好運用這些基礎,再努力也只不過能做到頭痛醫頭,腳痛醫腳罷了。

當然,如果我們再杞人憂天一些,可以回頭看看這些我們已經習以為常的科技。如果一旦這些科技出現問題,對我們的影響可是很全面而重大的。例如當我們連到經常使用的網路銀行網站,卻發現不能夠輕易的相信這是合法的網站,信心的崩潰會不會把網路服務打回原始的時代?我們該怎麼做?我不會勸你把所有的科技產品丟掉,甚至搬到與世隔絕的深山自力更生。我會勸你正視資訊安全的問題,而廠商在提供更好的資訊產品與服務的同時也能將資訊安全的需求當作一個很重要(最重要)的議題加以考量,而不是一個被發現了才做的事情。當然,有些問題是需要進行大幅調整才有可能加以補教,例如現在網站安全問題這麼嚴重,有人就提出了修改HTTP協定、甚至是瀏覽器的建議。這類問題牽扯的就不只是技術性的問題,還有更多政治性的因素牽扯其中。

相關連結:

沒有留言:

張貼留言

About