幾個禮拜前每個系統,包括Mac,Windows,Unix,Linux…等等,都秘密地修復了DNS cache poisoning 問題,記得 WindowsXP 有一次更新吧? 這是因為 DNS架構上有一些老問題,DNS 的運作是這樣的,DNS 是一個階層式的架構,每一次做DNS回應時都要從源頭開始詢問回來,例如從 . → .tw → .nctu.tw → .cool.nctu.edu.tw → ken.cool.nctu.edu.tw,這樣走一遍才能問到ken.cool.nctu.edu.tw 的 IP,如果每次都要這樣問一遍,而且可能前十秒鐘就有人問過 ken.cool.nctu.edu.tw 這個IP是什麼了? 所以還需要再重源頭再詢問一遍嗎? 而且通常網站的IP都大不會變吧,所以就有設計了 cache 機制,也就是第一個人問過的結果,在這台 DNS 先記起來,如果下一個人再問到同樣的問題就直接把答案告訴對方,這樣就快多了,cache 保存時間可設定,短小則五分鐘,長則三天都有,cache 資料是一個問題,那另外一個問題就出在互相詢問的這階層架構中都沒有一個很強而有力的認證機制,所以如果中間有一台IP被偷換掉了,被引導過去的IP是有問題DNS Server,裡面有可能讓你得到錯誤的IP,上到錯誤的網站,惡意的網站,如果把網站內容也改成跟原來的很像,那你就不會懷疑了吧,照樣輸入帳號、密碼,這樣你的資料就被偷走了,不要以為你上的 yahoo 網站網址對那就是對了喔,網址是經過DNS解譯過才得到IP,如果IP是錯的而網站又長得很像,這是有可能的,我現在為了證明您所上的網站網址跟實際的IP是無關的,我在我的網域 vblog.tw 設定了一組設定 yahoo.vblog.tw 指定 tw.yahoo.com 的IP 202.43.195.52,你點看看網址: http://yahoo.vblog.tw ,你沒看錯,雖然 yahoo.vblog.tw 不是 tw.yahoo.com,但是我把yahoo.vblog.tw 的IP設定成 tw.yahoo.com 一樣的IP,所以你看的網頁內容會是同樣的
,所以這可以證明,是有可能因為 DNS 的故意解譯錯誤,而讓你上到仿冒的yahoo網站的,所以你的密碼就被偷了。
身為使用者被騙就被騙了,那身為伺服器的管理者更要注意DNS Server 的安全問題,我在網路上找到保護的方法,參考看看,以下操作作業系統是 CentOS 5
// 剛剛說過,現在都有最新版本的 BIND 了,更新 BIND 到最新版本
# yum update bind bind-chroot -y
# vi /etc/named.conf
// query-source address * port 53; ← 註解掉這行
dnssec-enable yes; ← 增加這行,使用 random port 回應 client
allow-recursion { 192.168.1.0/24; }; ← 只限制區網內使用 recursion query,或乾脆都不要用 recursion query
您好站长,我想转走你写的这篇文章,叨教你批准吗?我会保存原文出处的链接跟作者!
歡迎