安全性安全性 <>
概觀
區段群組位於 <system.webServer>
區 <security>
段中,其中包含在 Internet Information Services (IIS) 7 伺服器上設定安全性設定的所有元素。 其中包括安全通訊端層 (月臺的 SSL) 設定、相依于 Common Gateway Interface (CGI) 或 Internet Server API 的應用程式, (ISAPI) 二進位檔、伺服器上安裝之所有驗證模組的組態設定,以及授權規則設定。 它也包含 IP 安全性和要求篩選組態設定,以及伺服器上的 ISAPI 和 CGI 限制清單。
區段群組中的 <security>
設定可以合併以取得額外的安全性。 例如:
- 元素
<authentication>
會針對您可以在 IIS 7 伺服器上安裝和啟用的所有使用者驗證類型定義組態區段,而 元素<authorization>
則會設定可存取網站或應用程式的使用者帳戶。 您可以搭配 使用<authorization>
來<authentication>
保護伺服器上內容的存取。 元素<access>
會設定 Web 服務器、網站或應用程式的 SSL 設定。 - 元素
<isapiCgiRestriction>
會指定可在 IIS 7 上執行的 CGI 和 ISAPI 應用程式清單。 此元素可讓您確保惡意使用者無法將未經授權的 CGI 和 ISAPI 二進位檔複製到您的 Web 服務器,然後執行它們。 元素<applicationDependencies>
會指定具有一或多個 CGI 或 ISAPI 擴充限制相依性的應用程式。 您可以結合<isapiCgiRestriction>
元素與<applicationDependencies>
元素,以確保 CGI 或 ISAPI 擴充限制已正確設定。
注意
為了增強安全性,Windows Vista 或 Windows Server 2008 預設不會安裝 IIS 7。 當您安裝 IIS 7 時,IIS 會自動設定為只提供靜態內容,包括 HTML 和影像檔。 您必須手動安裝網站和應用程式所需的任何其他角色服務和功能。 此策略可大幅減少 IIS 7 受攻擊面。
相容性
版本 | 備註 |
---|---|
IIS 10.0 | 未在 IIS 10.0 中修改專案 <security> 。 |
IIS 8.5 | 未在 IIS 8.5 中修改專案 <security> 。 |
IIS 8.0 | 專案 <defaultIpSecurity> 已新增為子專案。 |
IIS 7.5 | 未在 IIS 7.5 中修改專案 <security> 。 |
IIS 7.0 | 元素 <security> 是在 IIS 7 中引進的。 |
IIS 6.0 | 元素 <security> 會取代與憑證、驗證和授權相關的 IIS 6.0 安全性中繼基底屬性。 |
安裝程式
元素 <security>
包含在 IIS 7 的預設安裝中。
作法
如何停用匿名驗證
開啟 [Internet Information Services (IIS) 管理員:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [系統管理工具],然後按兩下 [ Internet Information Services (IIS) Manager]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager。
在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [網站],然後移至您要設定之階層窗格中的層級,然後按一下網站或 Web 應用程式。
捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。
如何從 IUSR 帳戶變更匿名驗證認證
開啟 [Internet Information Services (IIS) 管理員:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [系統管理工具],然後按兩下 [ Internet Information Services (IIS) Manager]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager。
在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [網站],然後流覽至您要設定之階層窗格中的層級,然後按一下網站或 Web 應用程式。
捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。
在 [驗證] 窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [編輯...]。
在 [ 編輯匿名驗證認證 ] 對話方塊中,執行下列其中一項:
如何啟用基本驗證和停用匿名驗證
開啟 [Internet Information Services (IIS) 管理員:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [系統管理工具],然後按兩下 [ Internet Information Services (IIS) Manager]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager。
在 [ 連線] 窗格中,展開伺服器名稱、 [站台],然後按一下您要啟用基本驗證的網站、應用程式或 Web 服務。
捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。
在 [ 驗證 ] 窗格中,選取 [ 基本驗證],然後在 [ 動作 ] 窗格中,按一下 [ 啟用]。
如何要求安全通訊端層
開啟 [Internet Information Services (IIS) 管理員:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,移至您要設定 SSL 需求的月臺、應用程式或目錄。 您無法在伺服器層級設定 SSL。
在 [ SSL 設定] 窗格中,按一下 [需要 SSL]。
在 [動作] 窗格中,按一下 [套用]。
如何啟用網站、Web 應用程式或 Web 服務的Windows 驗證
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [連線] 窗格中,展開伺服器名稱、[站台],然後展開您要啟用Windows 驗證的網站、應用程式或 Web 服務。
捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。
組態
當您設定安全性設定時,組態 XML 必須包含 <security>
區段群組。 您可以在ApplicationHost.config檔案的伺服器層級,或在適當Web.config檔案的月臺層級、應用層級或目錄層級設定安全性設定。
屬性
無。
子元素
元素 | 描述 |
---|---|
access |
選擇性項目。 指定安全通訊端層 (SSL) 的組態設定,例如是否要使用用戶端憑證進行驗證和密碼編譯強度。 |
applicationDependencies |
選擇性項目。 指定具有一或多個 CGI 或 ISAPI 延伸模組限制相依性的應用程式。 |
authentication |
選擇性項目。 指定驗證相關設定。 |
authorization |
選擇性項目。 指定授權相關的設定。 |
dynamicIpSecurity |
選擇性項目。 指定動態 IP 限制,以封鎖符合一組準則的任何 IP 位址。 |
ipSecurity |
選擇性項目。 根據 IP 第 4 版位址或 DNS 功能變數名稱指定存取限制。 |
isapiCgiRestriction |
選擇性項目。 指定限制在伺服器上執行哪些 CGI 和 ISAPI 程式的設定。 |
requestFiltering |
選擇性項目。 指定要求篩選的組態設定。 |
組態範例
下列範例會設定名為 Contoso 之網站的驗證、SSL 和要求篩選設定。
<location path="Contoso">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<basicAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
</authentication>
<access sslFlags="Ssl, SslNegotiateCert, Ssl128" />
<requestFiltering>
<fileExtensions>
<add fileExtension=".inc" allowed="false" />
</fileExtensions>
<denyUrlSequences>
<add sequence="_vti_bin" />
<add sequence="_vti_cnf" />
<add sequence="_vti_pvt" />
</denyUrlSequences>
</requestFiltering>
</security>
</system.webServer>
</location>
範例程式碼
下列範例會針對名為 Contoso 的網站停用匿名驗證,然後為網站啟用基本驗證和Windows 驗證。
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/anonymousAuthentication /enabled:"False" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/basicAuthentication /enabled:"True" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost
注意
當您使用AppCmd.exe設定這些設定時,請務必將 認可 參數 apphost
設定為 。 這會將組態設定認可至ApplicationHost.config檔案中適當的位置區段。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
anonymousAuthenticationSection["enabled"] = false;
ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
basicAuthenticationSection["enabled"] = true;
ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
windowsAuthenticationSection["enabled"] = true;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso")
anonymousAuthenticationSection("enabled") = False
Dim basicAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso")
basicAuthenticationSection("enabled") = True
Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso")
windowsAuthenticationSection("enabled") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
anonymousAuthenticationSection.Properties.Item("enabled").Value = false;
var basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
basicAuthenticationSection.Properties.Item("enabled").Value = true;
var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
anonymousAuthenticationSection.Properties.Item("enabled").Value = False
Set basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
basicAuthenticationSection.Properties.Item("enabled").Value = True
Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
windowsAuthenticationSection.Properties.Item("enabled").Value = True
adminManager.CommitChanges()