IIS 8.0 动态 IP 地址限制

作者:Robert McMurray

兼容性

版本 说明
IIS 8.0 IIS 8.0 内置的动态 IP 地址限制。
IIS 7.5 动态 IP 地址限制可用作 IIS 7.5 的带外模块
IIS 7.0 动态 IP 地址限制可用作 IIS 7.0 的带外模块

问题

IIS 7 和早期版本具有内置功能,允许管理员允许或拒绝单个 IP 地址或 IP 地址范围的访问。 当某个 IP 地址被阻止时,来自该 IP 地址的所有 HTTP 客户端将收到来自服务器的回复:HTTP 错误“403.6 已禁止”。 此功能允许管理员根据他们在服务器日志或网站活动中看到的活动来自定义其服务器的访问。 但这是一个手动过程。 尽管可以编写功能脚本,通过使用类似 Microsoft LogParser 实用工具的工具检查 IIS 日志文件来发现恶意用户,但仍然需要手动干预。

解决方案

在 IIS 8.0 中,Microsoft 扩展了内置功能,包括多个新功能:

  • 动态 IP 地址筛选,允许管理员配置其服务器以阻止对超过指定请求数的 IP 地址的访问。
  • IP 地址筛选功能现在允许管理员指定 IIS 阻止 IP 地址时的行为,因此服务器可以中止来自恶意客户端的请求,而不是向客户端返回 HTTP 403.6 响应。
  • IP 筛选现在具有代理模式,该模式不仅允许按照 IIS 看到的客户端 IP 来阻止 IP 地址,还允许按照 HTTP 标头 x-forwarded-for 中收到的值来阻止 IP 地址

分步说明

先决条件:

  • 安装了 IIS 8.0 的 Windows Server 2012 计算机。

    注意

    “IP 和域限制”功能必须作为 IIS 的一部分安装。

    Screenshot that shows a selected checkbox for I P and Domain Restrictions.

已知 bug 的解决方法:

此功能目前没有已知的 bug。

将 IIS 配置为根据 HTTP 请求拒绝访问

可以将 IIS 8.0 配置为根据以下条件来拒绝对网站的访问: HTTP 客户端在指定时间间隔内访问服务器的次数;来自 HTTP 客户端的并发连接数。

要将 IIS 配置为根据 IIS 收到的 HTTP 请求数来拒绝访问,请执行以下步骤:

  1. 在 Windows Server 2012 计算机上以管理员身份登录。
  2. 打开“Internet Information Services (IIS)管理器”
  3. 在“连接”窗格中突出显示服务器名称、网站或文件夹路径,然后双击功能列表中的“IP 地址和域限制”。
    Screenshot that shows the I I S Manager, with the Default Web Site Home pane open and I P Address and Domain Restrictions selected.
  4. 在“操作”窗格中单击“编辑动态限制设置”。
    Screenshot that shows the I P Address and Domain Restrictions pane open. Edit Dynamic Restriction Settings is highlighted in the Actions pane.
  5. 出现“动态 IP 限制设置”对话框时,如果要防止 HTTP 客户端建立过多的同时连接,请选中“基于并发请求数拒绝 IP 地址”。 如果要防止 HTTP 客户端在特定时间段内建立过多的连接,请选中“根据一段时间内的请求数拒绝 IP 地址”复选框。
    Screenshot that shows the Dynamic I P Restriction Settings dialog box. The first two items have selected checkboxes.
  6. 单击“确定”。

配置拒绝 IP 地址时 IIS 的行为

在 IIS 7 及更早版本中,当客户端 IP 地址被阻止时,IIS 将从服务器返回以下回复:HTTP 错误“403.6 禁止”。 在 IIS 8.0 中,管理员可以通过其他几种方式将其服务器配置为拒绝某些 IP 地址的访问。

要配置 IIS 在拒绝 IP 地址时的行为,请执行以下步骤:

  1. 在 Windows Server 2012 计算机上以管理员身份登录。

  2. 打开“Internet Information Services (IIS)管理器”

  3. 在“连接”窗格中突出显示服务器名称、网站或文件夹路径,然后双击功能列表中的“IP 地址和域限制”。
    Screenshot that shows the I I S Manager. I P Address and Domain Restrictions is selected in the Default Web Site Home pane.

  4. 在“操作”窗格中,单击“编辑功能设置”。
    Screenshot that shows the I P Address and Domain Restrictions pane, with Edit Feature Settings highlighted in the Actions pane.

  5. 当“编辑 IP 和域限制设置”对话框出现时,单击“拒绝操作类型”下拉菜单,并从以下值中选择 IIS 使用的行为:

    • 未获授权:IIS 返回 HTTP 401 响应。

    • 禁止:IIS 返回 HTTP 403 响应。

    • 找不到:IIS 返回 HTTP 404 响应。

    • 中止:IIS 终止 HTTP 连接。

      Screenshot that shows the Edit I P and Domain Restrictions Settings dialog box. Forbidden is selected from the Deny Action Type list.

  6. 单击“确定”。

为代理模式配置 IIS

IP 筛选面临的挑战之一是许多客户端访问 IIS 时会穿透一个或多个防火墙、负载平衡或代理服务器。因此,IP 地址可能始终显示为请求路径中距离 IIS 服务器最近的服务器。 在 IIS 8.0 中,管理员可以将其服务器配置为检查HTTP 标头 x-forwarded-for 以及客户端 IP 地址,以确定要阻止的请求。 此行为称为“代理模式”。

要为代理模式配置 IIS,请使用以下步骤:

  1. 在 Windows Server 2012 计算机上以管理员身份登录。
  2. 打开“Internet Information Services (IIS)管理器”
  3. 在“连接”窗格中突出显示服务器名称、网站或文件夹路径,然后双击功能列表中的“IP 地址和域限制”。
    Screenshot that shows the Default Web Site Home pane, with I P Address and Domain Restrictions selected.
  4. 在“操作”窗格中,单击“编辑功能设置”。
    Screenshot that shows the I I S Manager, with Edit Feature Settings highlighted in the Actions pane.
  5. 出现“编辑 IP 和域限制设置”对话框时,选中“启用代理模式”旁边的框。
    Screenshot that shows the Edit and Domain Restrictions Settings dialog box. Enable Proxy Mode is selected in the checkbox.
  6. 单击“确定”。

总结

在本指南中,你了解了如何将 IIS 配置为根据来自客户端 IP 地址的请求数动态拒绝对服务器的访问,以及如何配置在拒绝潜在恶意用户访问时 IIS 的行为。