IIS權限設置

轉載:[url]http://hi.baidu.com/lovexia_forever/blog/item/d1b58c77763e4f1bb051b902.html[/url]
雖然 Apache 的名聲可能比 IIS 好,但我相信用 IIS 來做 Web 服務器的人一定也不少。說實話,我覺得 IIS 還是不錯的,尤其是 Windows 2003 的 IIS 6(馬上 Longhorn Server 的 IIS 7 也就要來了,相信會更好),性能和穩定性都相當不錯。但是我發現許多用 IIS 的人不太會設置 Web 服務器的權限,因此,出現漏洞被人黑掉也就不足爲奇了。但我們不應該把這歸咎於 IIS 的不安全。如果對站點的每個目錄都配以正確的權限,出現漏洞被人黑掉的機會還是很小的(Web 應用程序本身有問題和通過其它方式***黑掉服務器的除外)。下面是我在配置過程中總結的一些經驗,希望對大家有所幫助。

IIS Web 服務器的權限設置有兩個地方,一個是 NTFS 文件系統本身的權限設置,另一個是 IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上。這兩個地方是密切相關的。下面我會以實例的方式來講解如何設置權限。

IIS 下網站->站點->屬性->主目錄(或站點下目錄->屬性->目錄)面板上有:

腳本資源訪問
讀取
寫入
瀏覽
記錄訪問
索引資源
6 個選項。這 6 個選項中,“記錄訪問”和“索引資源”跟安全性關係不大,一般都設置。但是如果前面四個權限都沒有設置的話,這兩個權限也沒有必要設置。在設置權限時,記住這個規則即可,後面的例子中不再特別說明這兩個權限的設置。

另外在這 6 個選項下面的執行權限下拉列表中還有:


純腳本
純腳本和可執行程序
3 個選項。

而網站目錄如果在 NTFS 分區(推薦用這種)的話,還需要對 NTFS 分區上的這個目錄設置相應權限,許多地方都介紹設置 everyone 的權限,實際上這是不好的,其實只要設置好 Internet 來賓帳號(IUSR_xxxxxxx)或 IIS_WPG 組的帳號權限就可以了。如果是設置 ASP、PHP 程序的目錄權限,那麼設置 Internet 來賓帳號的權限,而對於 ASP.NET 程序,則需要設置 IIS_WPG 組的帳號權限。在後面提到 NTFS 權限設置時會明確指出,沒有明確指出的都是指設置 IIS 屬性面板上的權限。

例1 —— ASP、PHP、ASP.NET 程序所在目錄的權限設置:
如果這些程序是要執行的,那麼需要設置“讀取”權限,並且設置執行權限爲“純腳本”。不要設置“寫入”和“腳本資源訪問”,更不要設置執行權限爲“純腳本和可執行程序”。NTFS 權限中不要給 IIS_WPG 用戶組和 Internet 來賓帳號設置寫和修改權限。如果有一些特殊的配置文件(而且配置文件本身也是 ASP、PHP 程序),則需要給這些特定的文件配置 NTFS 權限中的 Internet 來賓帳號(ASP.NET 程序是 IIS_WPG 組)的寫權限,而不要配置 IIS 屬性面板中的“寫入”權限。

IIS 面板中的“寫入”權限實際上是對 HTTP PUT 指令的處理,對於普通網站,一般情況下這個權限是不打開的。

IIS 面板中的“腳本資源訪問”不是指可以執行腳本的權限,而是指可以訪問源代碼的權限,如果同時又打開“寫入”權限的話,那麼就非常危險了。

執行權限中“純腳本和可執行程序”權限可以執行任意程序,包括 exe 可執行程序,如果目錄同時有“寫入”權限的話,那麼就很容易被人上傳並執行***程序了。

對於 ASP.NET 程序的目錄,許多人喜歡在文件系統中設置成 Web 共享,實際上這是沒有必要的。只需要在 IIS 中保證該目錄爲一個應用程序即可。如果所在目錄在 IIS 中不是一個應用程序目錄,只需要在其屬性->目錄面板中應用程序設置部分點創建就可以了。Web 共享會給其更多權限,可能會造成不安全因素。

總結:也就是說一般不要打開-主目錄-(寫入),(腳本資源訪問) 這兩項以及不要選上(純腳本和可執行程序),選(純腳本)就可以了.需要asp.net的應用程序的如果應用程序目錄不止應用程序一個程序的可以在應用程序文件夾上(屬性)-目錄-點創建就可以了.不要在文件夾上選web共享.

例2 —— 上傳目錄的權限設置:
用戶的網站上可能會設置一個或幾個目錄允許上傳文件,上傳的方式一般是通過 ASP、PHP、ASP.NET 等程序來完成。這時需要注意,一定要將上傳目錄的執行權限設爲“無”,這樣即使上傳了 ASP、PHP 等腳本程序或者 exe 程序,也不會在用戶瀏覽器裏就觸發執行。

同樣,如果不需要用戶用 PUT 指令上傳,那麼不要打開該上傳目錄的“寫入”權限。而應該設置 NTFS 權限中的 Internet 來賓帳號(ASP.NET 程序的上傳目錄是 IIS_WPG 組)的寫權限。

如果下載時,是通過程序讀取文件內容然後再轉發給用戶的話,那麼連“讀取”權限也不要設置。這樣可以保證用戶上傳的文件只能被程序中已授權的用戶所下載。而不是知道文件存放目錄的用戶所下載。“瀏覽”權限也不要打開,除非你就是希望用戶可以瀏覽你的上傳目錄,並可以選擇自己想要下載的東西。

總結:一般的一些asp.php等程序都有一個上傳目錄.比如論壇.他們繼承了上面的屬性可以運行腳本的.我們應該將這些目錄從新設置一下屬性.將(純腳本)改成(無).

例3 —— Access 數據庫所在目錄的權限設置:
許多 IIS 用戶常常採用將 Access 數據庫改名(改爲 asp 或者 aspx 後綴等)或者放在發佈目錄之外的方法來避免瀏覽者下載它們的 Access 數據庫。而實際上,這是不必要的。其實只需要將 Access 所在目錄(或者該文件)的“讀取”、“寫入”權限都去掉就可以防止被人下載或篡改了。你不必擔心這樣你的程序會無法讀取和寫入你的 Access 數據庫。你的程序需要的是 NTFS 上 Internet 來賓帳號或 IIS_WPG 組帳號的權限,你只要將這些用戶的權限設置爲可讀可寫就完全可以保證你的程序能夠正確運行了。

總結:Internet 來賓帳號或 IIS_WPG 組帳號的權限可讀可寫.那麼Access所在目錄(或者該文件)的“讀取”、“寫入”權限都去掉就可以防止被人下載或篡改了

例4 —— 其它目錄的權限設置:
你的網站下可能還有純圖片目錄、純 html 模版目錄、純客戶端 js 文件目錄或者樣式表目錄等,這些目錄只需要設置“讀取”權限即可,執行權限設成“無”即可。其它權限一概不需要設置。

好了,我想上面的幾個例子已經包含了大部分情況下的權限設置,其它情況根據這些例子,我想你一定可以想到該如何設置了吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章