精通 Windows Server 2003 企業網路服務篇
書號:F8170
定價:780 元
陳玄玲 許皓翔 譯
我要線上購買
| |
本期文摘:Windows Server 2003 網際網路安全的幾點看法【三】
本文摘錄自旗標 F8170「精通 Windows Server 2003 企業網路服務篇」一書
偵測外來入侵
Windows Server 2003 有一些內建的工具能夠簡化偵測入侵的工作:
◇稽核失敗的登入嘗試。
◇使用『效能監視器』通知你當登入失敗動作超過一些合理
值的時候。
◇週期性的記錄網路的活動。假如突然之間你的網路在 3:00
AM, 突然變得非常忙碌, 沒有任何原因可以解釋, 那麼就調
查到底在 3:00 AM 發生了什麼事。
除了以上這些之外, 請定期查看 IIS 記錄檔案 (在 \Windows\system32\logfiles 下可以找到)。假如平常是每天大約 100 次點擊 (hit), 突然在某一天發生了 10,000 次點擊, 那就表示有不尋常的事情發生了。這些記錄檔也會記錄點擊的來源 IP 位址, 也許你可以從頻率和瀏覽的網頁來歸納出一些線索, 提供給 ISP 和負責管理來源位址的主管機關參考。目前市面上有些專門針對 Web 伺服器的記錄檔分析工具很好用, 有些甚至還是免費的。
防止入侵
防止入侵的主要步驟包括:
1. 不要使用明顯的密碼。
2. 在會連線到 Internet 的電腦上不要啟用 Guest 帳戶。
3. 重新命名內建的 Administrator 帳戶。
4. 不要使用內建的 Adminitrator 帳戶透過網路存取伺服器。
5. 在登入嘗試失敗某個次數後凍結帳戶。
6. 讓密碼在一段時間之後失效。
7. 安裝防火牆, 過濾掉 UDP 連接埠 136 及 137。
8. 把 Web、FTP 及 新聞伺服器放在它們自己的網域個別的機
器中, 不要與其他的網域建立任何的信任關係。
9. 在 DNS 的伺服器上, 除了 DNS 服務本身以外, 不要放任何
其他的服務。
看起來似乎只有直接透過一般的 net use 介面、NFS 介面, 或 FTP 服務直接存取你的檔案伺服器, 才能透過 Internet 讀取或寫入資料到你的電腦上。我假定你並沒有執行 NFS, 而且你把 FTP 放在不重要的伺服器上, 所以現在我們只專注在檔案伺服器的介面上。
簡單的看, 底下是你所應該擔心的情況。假定我知道你有一個伺服器名稱為 S01, 其 IP 位址是 253.12.12.9。上面有一個共用目錄名稱為 SECRET。我建立一個 LMHOSTS 檔案, 裡面目前只有一行, 內容如下:
253.12.12.9 S01
現在我可以輸入 net use X: \\s01\secret, 我這台與 Internet 連接的 PC 會傳送請求給 253.12.12.9 來存取該共用目錄。假定 Guest 帳戶在 S01 並沒有啟用, 那麼 S01 首先會問我的 PC:「你是誰?」, 我會看到要我輸入使用者名稱及密碼的對話方塊。當我輸入網域有效的使用者名稱及密碼後, 我就進來了。事實上, 這是我從我的客戶那邊跨越 Internet 存取我網路資源所用的方法:用一個 LMHOSTS 檔案和一個 net use 命令, 兩秒鐘之內, 我就能從幾千公里遠的地方存取到我的主目錄。
要做到這一點, 我必須知道:
◇我網路上有效的使用者名稱
◇該帳戶的密碼
◇網域上某伺服器的 IP 位址
◇網域上共用目錄的名稱
好, 假定我要入侵名為 bigfirm.com 的這家公司, 我如何開始呢?第一步是找出它的 IP 位址是什麼。這相當簡單, 我只要 telnet 到 internic.net, 然後輸入 whois bigfirm.com, 你會得到網路號碼及該網路的負責人。你也可以得到它們的 DNS 名稱伺服器的 IP 位址。找出這個資訊的另一個方法是輸入:
nslookup
set type=all
bigfirm.com
Bigfirm 會列出它們的 DNS 伺服器名稱及 IP 位址, 以及它們的郵件伺服器。因為按照 InterNIC 的規定, 還必須要有第二個 DNS 伺服器, 所以至少有兩個名稱伺服器。現在假如 bigfirm 想執行 DNS 伺服器應該花不了太多電腦 CPU 的馬力 (這也是我們大部分人會有的想法), 讓我們也把一些共用目錄放在那台伺服器上面吧!
你可以看到, 你沒有任何選擇, 你必須要公開你的兩個 IP 位址, 你的 DNS 伺服器及其備份的 IP 位址及名稱。所以, 不要放任何其他的東西在上面。從前我曾經建議企業在老舊的機器上跑 DNS 來廢物利用, 不過現在已經不適合這麼做了。因為我們現在需要的是動態 DNS, 也就是你會在這台機器上跑 Windows 2000, 而在另一台機器上跑 DNS。雖然讓一台伺服器純粹只當 DNS伺服器用有點可惜, 但是從安全的角度來看卻不失為一個好辦法。
只要建立一個 LMHOSTS 檔, 其內容包括所有每個可能的 IP 位址的 NetBIOS 名稱;例如, 假如我知道你有個 C 等級網路 200.200.200.0, 那麼我可以建立 LMHOSTS 檔案, NetBIOS 名稱 N1 等於 200.200.200.1, N2 等於 200.200.200.2, 以此類推。然後我對從 N1 到 N254 的每個名稱做一次 net view \\servername, IP 位址連接到的電腦如果有執行 Server 服務, 會要求我輸入名稱及密碼, 沒有執行 Server 服務的不會有任何回應。
你能做什麼呢?你可以決定不要理它, 因為壞人如果沒有帳號名稱及密碼的話也是進不來 (所以要確定那些電腦預設的 Administrator 帳戶的密碼不是空白)。
但是在我這邊接下來我要找尋一兩個使用者帳戶。我如何能做到呢?你在接觸網域控制站之前沒有辦法從遠端使用 net user, 這也就是說你必須要有網域 ID 及密碼才能夠從外面用 net user。你又可以少擔心一件事了。
不過還有一些方法找到一些使用者名稱。當使用者登入到 Windows 系統, 它不只註冊自己的機器名稱到網路上, 也包括使用者名稱, 因為這樣做所以送訊息的時候才能送到適當的使用者身上。例如, 假設你要求『效能監視器』在伺服器的可用空間變少的時候, 通知你的使用者名稱 JILL02。網路怎麼知道你在那裡呢?
相當的簡單, 當你登入的時候, Messenger 服務 (假定它有在執行的話) 會將你的使用者名稱附加到你工作站上的 NetBIOS 名稱。假如你登入到伺服器, 其 IP 位址是 200.200.200.200, 則任何人執行 nbtstat -A 200.200.200.200, 不僅會看到電腦的名稱, 它們也會看到你的名字。
所以, 假定有人名稱為 paulad 已經登入到 200.200.200.200 這台機器 (實機登入, 而不是用網路連接過去), 看 nbtstat 的輸出結果, 就可以告訴我有一個名稱為 paulad 的使用者登入。
所以現在我已經拿到一個使用者名稱, 可能就是管理員帳戶的名稱, 這是因為 pualad 登入的是伺服器, 對於自許為駭客的我來說是一件好事。那你有什麼對策呢?停用 Messenger 服務, 這樣名稱就不會被登記。同時我們用到了 nbtstat, 如果你執行 nbtstat -A, 然後 MSBROWSE 出現, 表示你找到了主瀏覽伺服器。非常有可能主瀏覽伺服器就是網域控制站, 對嗎?所以最好設定網域控制站上的『HKLM\System\CurrentControlSet\Services\ Browser\Parameters』機碼下的 MaintainServerList = No, 讓其他的伺服器處理主瀏覽伺服器的問題。這樣你就減少了一個駭客可以用的線索。
現在, 我拿到了一個使用者名稱, 我還需要密碼。現在的確是難題了, 即使把我的電腦實體連上你的網路, 沒有網路 sniffer, 我還是沒有辦法拿到密碼, 因為 NT 使用「挑戰與回應」方式 (Challenge/Response) 來做密碼驗証。當你嘗試要登入到 NT 網域的時候, 網域控制站會傳送一個亂數給你的工作站, 然後你的工作站使用某些雜湊 (hashing) 函數, 把它和你的密碼做運算。雜湊函數是一個數學函數, 取自兩個輸入, 產生一個數目。透過網路來傳送的是結果, 而不是密碼。(我之前有說過, 這個規則有一個例外, 就是當你更改密碼的時候, 新的密碼會透過網路傳給伺服器, 不過這是很罕見的情況。)
我如何能得到密碼?我能做兩件事情。首先, 如果我認識該使用者, 我可以猜密碼。第二, 我可以執行一個程式一直試著登入;使用字典上面的每一個字來試, 這種方法通常稱為 dictionary hack (字典攻擊法)。
如何防範這點相當的明顯。首先, 不要使用容易猜的密碼。用一個以上的字, 中間用字元隔開, 像是fungus#polygon。第二, 不要讓人們可以用很多隨便的密碼來猜:例如在 5 次失敗的嘗試之後, 就把帳戶鎖定。
這讓我想到關於 Administrator 帳戶。Windows Server 2003 將它的鎖定原則延伸到也包含了 Administrator 帳戶。在嘗試登入 5 次失敗後, Administrator 帳戶預設就會變成只能用來以本機方式登入網域控制站, 不能透過網路遠端登入。假如這個鎖定原則沒有套用到 Administrator 帳戶 (在 Windows 2000 裡就沒有, 除非使用一個叫做 passprop.exe 的 Resource Kit 工具), 則不管試了幾次失敗的密碼, Administrator 帳戶還是不會被鎖定。所以如果你沒有這樣做的話, Internet 上的駭客可以花上他所有的休閒時間來找出你 Administrator 的密碼, 那你能怎麼做呢?
想要更進一步保護 Administrator 的密碼, 請先重新命名帳戶, 不要讓名稱仍是 Administrator。其次, 限制它的能力。你不能刪除 Administrator 帳戶, 也不能把它停用, 不過你可以把它透過網路存取伺服器的能力刪除。經由取消這項權利, 你迫使有 Administrator 密碼的人要在伺服器面前坐下來才能控制該伺服器。很不幸的, 這點並不容易。這是因為登入到伺服器是授權給 Administrators 群組, 而 Administrator 是這個群組的成員。你不能把 Administrator 自 Administrators 群組移除, 所以你能做的是取消整個 Administrators 群組的權利, 然後再把透過網路登入的權利分別給予其他每個管理員的帳戶。
好, 現在這些措施 (停用 Guest、重新命名 Administrator、移除 Administrator 透過網路登入的權利、在重覆失敗嘗試之後鎖住帳戶、設定『效能監視器』在重覆失敗嘗試之後警告你、慎選密碼) 可能就已經足夠了, 而且毫無疑問你會注意到, 你根本不用花到一毛錢。不過如果你需要更高等級的安全防護, 那麼可以考慮防火牆。防火牆不用做太多的事情, 不過它有一個非常重要的工作:過濾 UDP 上的兩個連接埠。
UDP (User Datagram Protocol) 是 TCP 的姊妹通訊協定, 有 TCP/IP, 所以事實上也有 UDP/IP。TCP 是以連線為導向, 而 UDP 卻是不以連線為導向。它就像是把訊息放在瓶子裡, 海洋把它飄到那裡, 它就到那裡。當你執行 Microsoft 網路指令, 像是 net use 或 net view, 你是執行使用 UDP 及 UDP 連接埠 136 及 137 傳送指令到伺服器的應用程式。
防火牆功能非常的強大, 而且通常非常的複雜, 一旦你把它們安裝起來, 可能有成千個選項要調整, 而且你可能會開始懷疑你是否抓得到任何你需要的東西, 在 IP 服務上面執行的 NetBIOS 是用 UDP 連接埠 136 及 137, 所以你可以告訴你的防火牆過濾掉這些。這樣就不可能有人存取正常的檔案伺服器服務。
--- 本篇完
|