Administration Pack

作者:Walter Oliver

介绍

Administration Pack 为托管商及其客户提供一组 IIS Manager 模块,可帮助他们执行以下操作:

  • 编辑服务器配置设置(仅限管理员)。
  • 管理 FastCGI 设置。
  • 管理 ASP.NET 授权。
  • 管理自定义错误。
  • 编辑 HTTP 请求筛选规则。

本文的目的是为托管商提供在托管环境中部署 Administration Pack 所需的信息。 下图重点显示了安装 Administration Pack 后 IIS Manager 中的新模块图标。

显示“WALTER O H P W S 主页”窗格的屏幕截图。已选择五个模块。

部署 Administration Pack

在共享托管环境中部署 Administration Pack <链接:共享托管配置文章>时,需要在场中的每个 Web 服务器上安装它。 使用预生成的映像时,Administration Pack 须是用于构建场服务器的映像的一部分。 按照本文说明下载并安装 Administration Pack。

了解 Administration Pack

Configuration Editor

可借助“配置编辑器”模块管理配置文件。 此工具仅适用于服务器管理员。 通过它可编辑配置文件中的任何部分、属性、元素或集合,包括 IIS 配置设置(如 system.webServer),或 ASP.NET 设置(如 system.web)。 除了可编辑这些值外,还可将其锁定和解锁。 使用配置编辑器还可根据执行的操作生成脚本和搜索文件查看这些值的使用位置。

显示“配置编辑器”窗格的屏幕截图。“节”列表已展开。

为某个设置输入值时,配置编辑器会验证数据类型以确保其兼容。 对于具体的值选项,例如布尔值 (True/False) 或枚举,会通过组合框仅显示可用选项。 使用配置编辑器还可根据执行的操作生成脚本和搜索文件查看这些值的使用位置。 以下视频<链接:https://blogs.msdn.com/carlosag/archive/2008/03/31/IISAdminPackConfigurationEditor.aspx>演示了配置编辑器的各种功能:

  • 架构驱动 - 配置编辑器完全由在 \windows\system32\inetsrv\config\schema 中的配置架构驱动。 这意味着,如果扩展用于创建各部分的配置系统,就可在配置编辑器中管理它们。 而无需额外为这些部分生成 UI。
  • 其他信息 - 配置编辑器会公开信息,例如当前相关部分的使用位置、集合中特定元素的继承位置等。
  • 脚本生成 - 配置编辑器支持进行更改和生成自动执行任务的代码。 配置编辑器通过使用 Microsoft.Web.Administration 或通过 AHADMIN 使用 JavaScript 或通过 AppCmd.exe 工具使用命令行生成托管代码。
  • 搜索 - 配置编辑器支持对配置系统执行限定范围的快速搜索,可搜索任何部分及其使用位置。 这有助于更全面了解服务器情况,防止违反配置锁定,及实现许多其他搜索功能。
  • 锁定 - 配置编辑器支持高级锁定,例如锁定特定属性,使其不能用于更深层的位置,或锁定集合中的单个项或锁定整个部分。

使用配置编辑器

脚本生成

此文<链接:https://www.iis.net/learn/manage/managing-your-configuration-settings/using-configuration-editor-generate-scripts>介绍如何利用配置编辑器生成脚本,帮助自动执行配置任务。 支持三种脚本类型:C#、Jscript 和 AppCmd.exe 工具。

配置集合

某些 IIS 配置设置采用集合的形式。 此文<链接:https://www.iis.net/learn/manage/managing-your-configuration-settings/editing-collections-with-configuration-editor>介绍如何编辑输出缓存配置文件集合。 本文<链接:https://www.iis.net/learn/manage/managing-your-configuration-settings/editing-collections-using-configuration-editor-complex-sections>演示如何为返回状态代码 401 或响应时间超过一分钟的或既返回此状态代码、响应时间又超过一分钟的 .aspx 请求添加新的失败请求跟踪规则。

FastCGI 设置

FastCGI 模块支持在服务器上配置网站使用的 FastCGI 设置。 用户使用该模块可添加和删除 FastCGI 应用程序并更改这些设置。 下图展示了“添加 FastCGI 应用程序”对话框。

显示“快速 C G I 设置”窗格的屏幕截图。“添加快速 C G I 应用程序”对话框处于打开状态。

.NET 授权规则模块

.NET 授权规则模块是 Administration Pack 中的两个 ASP.NET 模块之一。 通过使用此模块,网站管理员可以指定授权用户访问网站和应用程序的规则。 具体而言,.NET 授权规则模块提供一个图形用户界面,可用于创建“允许”和“拒绝”规则来管理用户对 Web 内容的访问。 下图展示了“添加‘允许’授权规则”对话框。

显示“添加允许授权规则”对话框的屏幕截图。

有关如何锁定 ASP.NET 授权规则的说明,请参阅此指南<链接:https://msdn.microsoft.com/library/ms178693.aspx>。

此文<链接:https://learn.iis.net/page.aspx/142/understanding-iis-7-url-authorization/#Differences>介绍 ASP.NET URL 授权与 IIS URL 授权之间的差异。

.NET 错误页

.NET 错误页提供用于配置 HTTP 错误响应的图形用户界面。 通过这些页面可配置自定义错误页和默认设置。 下图展示了“添加自定义错误页”对话框。

显示“添加自定义错误页”对话框的屏幕截图。

HTTP 请求筛选

HTTP 请求筛选模块是保护 Web 服务器、避免其接收恶意请求的守护程序组件。 筛选规则包括:

  • 阻止或取消阻止对具有特定文件扩展名的文件的请求。
  • 在“隐藏段”列表中添加或删除配置段。
  • 在“拒绝 URL 序列”列表中添加或删除特定 URL 序列。
  • 阻止或取消阻止 HTTP 谓词。
  • 添加具有特定大小限制的标头。

当 IIS 7.0 作为 Windows Server 2008 的一部分发布时,它包含此功能,但不包含可用于管理此功能的 IIS Manager 模块。 因此,没有可帮助配置请求筛选的图形用户界面。 有关通过直接向 Web.config 文件添加新配置来使用请求筛选的示例,请参阅此文<链接:https://learn.iis.net/page.aspx/143/how-to-use-request-filtering/>。

此博客文章<链接:https://blogs.iis.net/bills/archive/2008/03/23/how-to-un-block-directories-with-iis7-web-config.aspx>演示如何使用请求筛选来阻止或取消阻止对网站部分内容的访问。 此博客文章<链接:https://blogs.msdn.com/carlosag/archive/2008/03/24/IISAdminPackRequestFiltering.aspx>使用 Administration Pack 中包含的 IIS Manager 模块完成同一任务。

以下部分介绍 HTTP 请求筛选的最新功能。

创建规则以禁止部分请求中出现字符串模式

通过此功能,可以创建规则列表。 可以根据与 HTTP 请求的特定部分匹配的模式,指定拒绝请求的规则。 此功能的主要配置是 ApplicationHost.config 文件或 Web.config 文件中 system.webServer/security/requestFiltering 部分下的 filteringRules 部分。 如果某个请求因此规则而被拒绝,则 IIS 日志中会记录 HTTP 状态 404.19。

创建安全的 URL 或查询字符串的列表

通过这项新功能,可指定可绕过所有定义的拒绝规则的安全 URL 或查询字符串。 例如,可始终允许 URL“/my.login.page.asp”,即使此 URL 有可能触发定义的拒绝规则。 此功能的基本配置包括 alwaysAllowedUrls 属性和 alwaysAllowedQueryStrings 属性。 这些属性位于 ApplicationHost.config 文件或 Web.config 文件中的 system.webServer/security/requestFiltering 部分下。

创建查询字符串序列的拒绝列表

最常见的 SQL 注入攻击是通过操作查询字符串执行的。 通过此功能,可通过检查查询字符串来筛选恶意请求。

若要拒绝所有请求的 URL 序列列表,可在 ApplicationHost.config 文件或 Web.config 文件中创建 denyQueryStringSequences 部分,然后在请求的 URL 中添加要禁止的字符串列表。 如果某个请求因此规则而被拒绝,则 IIS 日志中会记录 HTTP 状态 404.18。

检查转义的和未转义的查询字符串

通过此功能,可以使用 ApplicationHost.config 文件或 Web.config 文件中 system.webServer/security/requestFiltering 部分下的 unescapeQueryString 属性扫描转义的查询字符串和未转义的查询字符串。 如果某个请求因此规则而被拒绝,则 IIS 日志中会记录 HTTP 状态 404.18。

下图展示了阻止的文件扩展名的列表:

显示“I I S 管理器”中的“请求筛选”窗格的屏幕截图。

请注意,HTTP 请求筛选仅针对安全方案进行了优化,而 URL 重写<链接:https://learn.iis.net/page.aspx/531/url-rewrite-for-hosters/>可应用于更广泛的方案;安全方案只是其中一部分。 有关这两个模块之间的差异的更多详细信息,请参阅此文<链接:https://learn.iis.net/page.aspx/501/iis-70-request-filtering-and-url-rewriting/>。

结束语

本文概述了 Administration Pack 以及托管商在共享托管环境中部署和配置它时的可用资源的映射。