Windows

設置 IIS 8.5 - 安全實踐

  • July 9, 2016

這是我第一次設置 IIS 安裝,我想確保提供最大的安全性。在設置的過程中,一些問題突然出現在我的腦海中:

請注意,該伺服器託管的外部網站同時有大約 50 個使用者,每天大約有 1000 個使用者,但也有僅供內部使用的內部網站(在這種情況下,內部是指我們公司的使用者在網路外使用的網站,但沒有客戶使用這些網站)

應用程序池標識:

我已經讀過,將內置帳戶 ApplicationPoolIdentity 用於應用程序池標識是最佳安全實踐。我的問題是,如果我可以為我擁有的每個應用程序池使用這個內置帳戶,因為我將部署 Wep 應用程序隔離 - 意味著我將為我擁有的每個 Web 應用程序設置不同的 AppPool。即使我為每個 Web 應用程序部署了不同的應用程序池,但在每個應用程序池上使用相同的帳戶,這不是矛盾嗎?

伺服器加固:

我想安裝盡可能少的功能和服務,以盡可能地強化伺服器。有沒有辦法檢查我安裝的功能是否被使用,或者它是否根本不需要這些功能?(是的,我知道。有點菜鳥問題)

驗證:

有外部訪問者的網站是否需要匿名認證?www.mycompany.com每個人都可以訪問的網站?我還沒有找到一種方法來禁用匿名身份驗證,但讓每個人都可以訪問該網站。

一般網路問題:

我一直認為 IIS 的最佳做法是將伺服器放入 DMZ,因為如果伺服器被黑客入侵,入侵者將無法訪問我們域網路中的所有其他伺服器。由於有新的身份驗證方法,比如Digestauthentification需要與域控制器通信,而且伺服器本身也需要在域中,所以我問自己是否最好將伺服器放在域網路中並保護訪問它與其他安全措施(代理等)還是 DMZ 仍然是最佳安全實踐?

預先感謝您的每一個輸入。

1. 應用程序池標識

為每個應用程序使用單獨的帳戶 - 每個應用程序池都會產生一個單獨的 w3wp 程序,該程序在分配的使用者上下文中執行。擁有文件和其他資源(如數據庫身份驗證)之類的東西,您可以提高對預設作業系統、文件系統和其他安全子系統(如 kerberos)的利用的安全性。

顯然,分配的帳戶應該盡可能少地訪問您的主機(除非應用程序絕對需要,否則切勿在網站上使用高權限帳戶

$$ which should really not be the case $$). 如果可能的話,我強烈建議將託管您面向公眾的網站的伺服器和您的內部資料分開。公共可訪問的伺服器也應放置在單獨的網段中。

2.伺服器加固

您的主要攻擊面是 IIS(我假設您在伺服器前面有防火牆) - 需要通過禁用服務進行強化以防止本地攻擊。在這種情況下,本地意味著您的本地網路(網路相關服務)以及您自己的作業系統,甚至您的本地硬體(如cachebleed一樣)。

所以,是的 - 禁用您不需要的服務。不要禁用保護您的服務。您可以在網上找到一些關於此的資源。

為了防止壞人啟動可能最終包含更多伺服器部分的自定義應用程序,我建議使用軟體限制策略

  • 您的應用程序池正在使用弱帳戶(例如工作站上的使用者)並且無法在被視為“應用程序路徑”的路徑上安裝/修改應用程序
  • 限制對這些路徑執行的軟體

這會導致互斥並防止一些簡單的攻擊,例如打開 shell 並下載最終打開伺服器大門的實際應用程序。

當使用 SSL/TLS 時,我建議在這裡也強化伺服器。這項工作的一個很好的工具是用於驗證的IISCryptoSslLabs。有一些空閒時間,您可以深入研究使用 NGINX 作為反向代理,它在傳輸安全方面提供了一些額外的優勢。

3. 認證

匿名身份驗證或多或少是“無身份驗證”。所以沒關係。

4.網路分割

我已經看到許多網路都應用了 DMZ 的概念,將一大堆伺服器放在那裡,並打開通往主網路的大門,以支持從 DMZ 中託管的伺服器提供的服務的後端連接。

這導致得出的結論是,您的網路分段沒有任何好處。

因此:是的,絕對是 DMZ。但是不要把所有東西都放在那裡,也不要打開你不需要的門。如果您在同一個 DMZ 中有太多不相關的服務,請考慮創建一個單獨的區域,將提供的服務分成相互關聯且具有依賴關係的服務組。

引用自:https://serverfault.com/questions/761273