共用方式為


安全性安全性 <>

概觀

區段群組位於 <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 的預設安裝中。

作法

如何停用匿名驗證

  1. 開啟 [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
  2. 在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [網站],然後移至您要設定之階層窗格中的層級,然後按一下網站或 Web 應用程式。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證] 窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [停用]。
    顯示 I I S Manager 中 [驗證] 窗格的螢幕擷取畫面。

如何從 IUSR 帳戶變更匿名驗證認證

  1. 開啟 [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
  2. 在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [網站],然後流覽至您要設定之階層窗格中的層級,然後按一下網站或 Web 應用程式。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證] 窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [編輯...]。

  5. 在 [ 編輯匿名驗證認證 ] 對話方塊中,執行下列其中一項:

    • 選取 [應用程式集區身分識別 ] 以使用應用程式集區的身分識別集,然後按一下 [ 確定]。
      顯示 [編輯匿名驗證認證] 對話方塊的螢幕擷取畫面。已選取應用程式集區身分識別。

    • 按一下 [設定...],然後在 [ 設定認證 ] 對話方塊中,于 [ 使用者名稱 ] 方塊中輸入帳戶的使用者名稱,在 [ 密碼 ] 和 [ 確認密碼 ] 方塊中輸入帳戶的密碼,按一下 [ 確定],然後再按一下 [ 確定 ]。
      顯示 [設定認證] 對話方塊的螢幕擷取畫面。

      注意

      如果您使用此程式,則只會授與 IIS 伺服器電腦上的新帳戶最低許可權。


如何啟用基本驗證和停用匿名驗證

  1. 開啟 [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
  2. 在 [ 連線] 窗格中,展開伺服器名稱、 [站台],然後按一下您要啟用基本驗證的網站、應用程式或 Web 服務。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [ 驗證 ] 窗格中,選取 [ 基本驗證],然後在 [ 動作 ] 窗格中,按一下 [ 啟用]。

  5. 在 [驗證] 窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [停用]。
    顯示 [驗證] 窗格的螢幕擷取畫面。已選取匿名驗證。[動作] 窗格會列出 [已停用] 和 [編輯]。


如何要求安全通訊端層

  1. 開啟 [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) 管理員]。
  2. 在 [ 連線 ] 窗格中,移至您要設定 SSL 需求的月臺、應用程式或目錄。 您無法在伺服器層級設定 SSL。

  3. 在 [ 首頁] 窗格中,按兩下 [SSL 設定]。
    顯示 [預設網站首頁] 窗格的螢幕擷取畫面,其中已選取 [S S L 設定]。

  4. 在 [ SSL 設定] 窗格中,按一下 [需要 SSL]。

  5. 在 [動作] 窗格中,按一下 [套用]


如何啟用網站、Web 應用程式或 Web 服務的Windows 驗證

  1. (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) 管理員]。
  2. 在 [連線] 窗格中,展開伺服器名稱、[站台],然後展開您要啟用Windows 驗證的網站、應用程式或 Web 服務。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證]窗格中,選取 [Windows 驗證],然後按一下 [動作] 窗格中的 [啟用]。
    顯示 [驗證] 窗格的螢幕擷取畫面,其中已選取 [Windows 驗證]。

組態

當您設定安全性設定時,組態 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()