應用程序池配置隔離

就應用程序池的安全性而言,咱們必須保證 w3wp.exe 工做進程能夠讀取 IIS 配置數據,由於這是 w3wp.exe 工做進程正常工做的基礎。w3wp.exe 工做進程必須可以讀取其所服務的網站的 IIS 設置。這意味着 w3wp.exe 工做進程必須對 applicationHost.config 文件中配置的大多數內容具備 Read 訪問權限。問題是:若是每一個應用程序池均可以讀取整個配置文件,那麼,配置文件中的全部信息就都暴露給每個應用程序池了。所以,咱們必須確保:就 applicationHost.config 文件中的總體內容而言,不容許每個應用程序池都具備對這些總體內容的 Read 權限或 Write 權限。不然,某些用戶就能夠獲取對敏感信息的訪問權限。
爲了解決這個問題,IIS 開發團隊提出了一種方法,容許 w3wp.exe 工做進程讀取與其有關的全部設置,可是同時又不須要訪問其餘應用程序的信息,也不能訪問敏感的全局設置數據,這樣就可以在不一樣的應用程序工具之間作到徹底的配置隔離。
當應用程序池第一次啓動時,Windows Process Activation Service(WAS)僅得到與該應用程序池有關的信息,而且在 C:\inetpub\temp\appPools\ 目錄下建立了一個臨時文件夾,爲這個應用程序池設置 ACL,而後將信息保存在這個臨時文件夾中。下圖顯示了這個保存了 WCF.Inventory.config 文件的文件夾。
應用程序池配置隔離
應用程序池配置隔離安全

.config 文件中的數據大多數與 applicationHost.config 文件中的數據相同,可是沒有保存任何其餘應用程序池中的 Web 網站信息。咱們沒有必要在 .config 文件中保存其餘應用程序池中的 Web 網站信息,由於w3wp.exe 工做進程是由 WAS 管理的,並且 w3wp.exe 工做進程也不須要使用自身的信息。
若是與該文件有關的數據發生了變動,那麼這個臨時文件也會隨之更新,不然,這個文件就一直保存在上述目錄中,直到 IIS 中止運行。若是咱們刪除這個文件,那麼 IIS 將沒法正常執行該應用程序池的功能,全部與該應用程序池有關的操做都會發生失效,而且僅當 IIS 重啓後,在從新生成這個被刪除的文件以後,這個問題才能獲得解決。若是咱們僅僅是回收這個應用程序池,那麼這個被刪除的文件不會被從新生成,所以沒法解決這個問題。因此,除非錯誤定位時必須使用這些文件,而且確實可以理解這些文件的功能和各類方式,不然最好不要對這些文件進行操做。
在 IIS 7.0 中建立臨時文件的整個過程都是全新開發的,從而確保了一個應用程序池中的惡意代碼沒法從應用程序池中讀取敏感配置數據。app

相關文章
相關標籤/搜索