安全設置IIS中的權限

雖然 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 共享會給其更多權限,可能會形成不安全因素。

例2 —— 上傳目錄的權限設置:

用戶的網站上可能會設置一個或幾個目錄容許上傳文件,上傳的方式通常是經過 ASP、PHP、ASP.NET 等程序來完成。這時須要注意,必定要將上傳目錄的執行權限設爲「無」,這樣即便上傳了 ASP、PHP 等腳本程序或者 exe 程序,也不會在用戶瀏覽器裏就觸發執行。
一樣,若是不須要用戶用 PUT 指令上傳,那麼不要打開該上傳目錄的「寫入」權限。而應該設置 NTFS 權限中的 Internet 來賓賬號(ASP.NET 程序的上傳目錄是 IIS_WPG 組)的寫權限。
若是下載時,是經過程序讀取文件內容而後再轉發給用戶的話,那麼連「讀取」權限也不要設置。這樣能夠保證用戶上傳的文件只能被程序中已受權的用戶所下載。而不是知道文件存放目錄的用戶所下載。「瀏覽」權限也不要打開,除非你就是但願用戶能夠瀏覽你的上傳目錄,並能夠選擇本身想要下載的東西。

例3 —— Access 數據庫所在目錄的權限設置:

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

例4 —— 其它目錄的權限設置:

你的網站下可能還有純圖片目錄、純 html 模版目錄、純客戶端 js 文件目錄或者樣式表目錄等,這些目錄只須要設置「讀取」權限便可,執行權限設成「無」便可。其它權限一律不須要設置。
好了,我想上面的幾個例子已經包含了大部分狀況下的權限設置,其它狀況根據這些例子,我想你必定能夠想到該如何設置了吧。
相關文章
相關標籤/搜索