
相信最近很多人為 Code Red 病毒所苦,它透過網路,以遠程溢位( remote buffer overflow ) 的入侵方法來感染網路上的主機,並以等比級數的方式廣泛的擴散。透過這樣的程式而感染方式一般我們皆稱為「蠕蟲」( Internet Worm ) 。雖然 Code Red 感染僅以 IIS 這類的 Web 伺服器為目標,但相同的狀況還是會發生在 DNS 伺服器或其他主機上。之前巳有過「獅子蠕蟲」(lion Worm ) 以感染 DNS 伺服器的方式在網路上肆虐,但相信以後還是會有更多同樣的事情會持續發生。
現行的DNS 伺服器是安全的嗎 ? 就筆者在八月十五日針對全台灣有註冊的 DNS 伺服器之版本檢測,所得到的結果恐怕是令人失望的:
檢測結果:
30% :DNS 資料可轄區傳送,遭取走的資料可能透露出網路節點分布狀況。
40% :DNS 伺服器版本有漏洞,可能直接遭到入侵,直接取得系統管理者權限。
其中以第二項的狀況最為嚴重,再依第二層網域名稱(.com.tw , edu.tw…)做區分來看
| 危險比率 | 網域名稱 |
| 57% | gov.tw |
| 52% | edu.tw |
| 44% | com.tw |
| 41% | org.tw |
| 27% | net.tw |
解決方式:
版本: 一般預設值皆可透過一些程式直接從遠端取得。BIND DNS 允許您修改 它,讓查詢版本者(一般來說查 DNS 版本多為入侵前奏)得不到正確的資訊。一般的入侵工具也會先做這樣的一個動作,再針對版本決定對映的入侵程序。在 Window 平台上無此困擾,但使用 ISC BIND者使用 version
來設定版本名稱。
此外,若您使用 ISC BIND 的 DNS 程式,建議您更改至 8.2.3 以上的版本,在此以下的版本皆有被入侵的風險存在。
轄區傳送( zone transfer ): 在 Window 的平台會稱為「區間轉送」。應只有特定之主機,但 Unix 或 Window 預設值多為全部都可以,造成你的網路 資訊被偷取。管理者可能沒注意到的狀況下犯了這個錯誤。
Window: 請修正為 只允許某些 IP 可做區間轉送。
ISC BIND: 請加上如allow-transfer 的條件。
系統記錄:在 ISC BIND 的設定中可將系統訊息轉到特定檔案,以這些檔案來稽核
自是較系統記錄 ( syslog ) 來的清楚許多。詳細設定可參考 Oreilly
DNS and BIND 一書中 7.4 節部份之描述。但最重要的是要常對系統訊息常做檢查。
執行時的身份:在 Window 的平台上您無法控制這的功能。在 ISC BIND 上則可
以使用一般使用者的身份來執行程式,當您的服務程式發生問題時亦不致
發生過於嚴重的系統問題。
儘可能減少不必要的服務:在一些系統上有些服務其實是不會用到的,但因為啟動
為預設值,管理者反倒是會忽略掉,間接地影響了您的 DNS 的安全性。
如非必要,請將不必要的服務關掉。
備援的 DNS 主機:在 TWNIC 的註冊功能上我們都會要求您至少填寫兩部以上
的 DNS 主機,但不少人第二部都是不存在的。其目的為免第一部 DNS
停止服務時,第二部可以適時接手,這對您網路的穩定性會有不少的幫助。
其他: 最重要的還是系統管理者要善盡職責,備份,檢查,更新等工作,需維持
在一定的頻率,並對所使用的作業平台所衍生的安全問題有相當的了解。如此方可確保 DNS 的正常運作。
DNS 安全上的顧慮:若您的 DNS 不安全,最有可能的會造成下列的問題
假造網頁:透過中介 ( man in the middle ) 的手法,很容易的騙出使用
者名和密碼,或者其他敏感資料。或將您的 WWW 導至另一個網頁,造成
使用者的錯覺,之前國內曾發生過多起這樣的案例。
複製郵件:所有的信件到達你的服務器之前可以被拷貝,修改或者刪除。這些都是
可以透過 DNS 完成,而您不會感覺到很明顯的異常。
授權問題:某些與信任有關服務 (如 mail relay,firewall,proxy等等) 若涉及
DNS域名信任時將會無效。如您的防水牆信任 any.com.tw 網域可自由通
過,在 DNS 被入侵後防火牆將完全失效。
系統權限:因為多數的 DNS 皆是以系統管理者權限在運行,當駭客從 DNS 入侵後
(指遠端溢位攻擊,remote buffer overflow ) ,通常亦直接取得系統權 限,您的機器則巳完全由其掌控。
DNS 安全近年來漸漸受到重視,尤其在最近連續出了幾個系統漏洞,及 Lion Worm 的發現,讓不少年漸漸重視。不論您使用的是什麼樣的平台或環境,請注意:DNS 是有可能影響到您整個公司的運作及全面性的網路安全的,不要掉以輕心並注意問題根本之道才是正解。(本文作者楊禎葆為 TWNIC工程師)
