Microsoft Internet信息服务器(IIS)在企业中被广泛使用,尽管在安全性方面的声誉不那么出色。实际上,对于许多“ IIS安全”来说,这是术语上的矛盾,尽管公平地说,微软'的Web服务器解决方案已得到改进 显着地 这些年来。服务器2012 R2的IIS 8.5和2016年的IIS 10已得到增强,不再显示旧版IIS迭代的危险默认配置,但仍可以进一步加强。通过执行以下10个步骤,可以大大提高IIS Web应用程序和服务器的安全性。
1.分析依赖关系,并在升级后卸载不需要的IIS模块。
如果您打算从早期版本的IIS进行升级,请注意,先前安装的状态信息和元数据库将被转移到新安装中。确保禁用和/或卸载所有未使用的IIS组件和功能,以最大程度地减少网络服务器的 攻击面。即使你没有'•升级后,请确保仅存在必需的模块。
UpGuard通过将其中一台服务器上的已知正确配置转换为可执行文档,从而可以定期对其他服务器进行测试,从而确保IIS模块在任意数量的服务器上都是正确的。

2.正确配置Web服务器用户/组帐户
IIS具有专用于Web服务器的内置用户帐户和组帐户。因此,例如,可以创建单独的系统管理员帐户和应用程序管理员帐户,以进行更细粒度的访问。因此,系统管理员可以授予应用程序管理员更改应用程序级配置的权限,而无需向他们授予对服务器的管理访问权限。应持续审核这些帐户,以确保对其进行安全配置。
UpGuard可以跟踪并可视化哪些用户正在运行哪些服务,并根据您的标准测试服务器以发现可能存在潜在安全问题的任何用户配置。糟糕,看起来这是作为本地系统运行的,这是一个具有很高特权的帐户:

3.使用IIS 7的CGI / ISAPI限制
CGI和ISAPI是在IIS上构建的两种常见方法-生成动态内容或扩展IIS的本机功能。不幸的是,CGI文件(.exe)和ISAPI扩展名(.dll)也经常在Web攻击中被利用,并且如果不使用,则应加以限制。例如,如果您使用PHP或ColdFusion通过IIS创建动态内容,则可能不需要使用CGI和其他ISAPI扩展。与IIS模块一样,除非专门使用这些配置,否则应将其卸载。
UpGuard以相同的方式处理IIS模块和配置,从而使您可以快速区分一组IIS服务器并查看正确安装了哪些模块。使用策略通过立即进行违反预期配置的任何更改来使IIS模块随时间保持一致。

4.配置HTTP请求过滤选项
UrlScan是一个扩展程序,用作限制HTTP请求的安全工具。 UrlScan功能现在已内置在IIS中,并且应该进行适当配置。通过基于规则的筛选,可以防止可能有害的HTTP请求到达服务器。这些选项对于缓解SQL注入等威胁至关重要,应与基于IIS的Web应用程序结合使用。
UpGuard找出您的哪些服务器中已安装了请求过滤模块,并对其进行验证'的配置正确。有关生产和开发之间的IIS服务器是否相同的更多猜测不再赘述。

5.使用动态IP限制
动态IP地址限制使用请求者的IP地址和域名来确定是否限制访问。这实际上是一个白名单-"allowUnlisted"IIS用于防止未经授权的访问。因此,在拒绝服务(DoS)和 蛮力攻击,IIS的动态IP限制(DIPR)模块可以暂时阻止发出异常请求的IP地址。
动态IP只是IIS中的另一个模块。 UpGuard可帮助您跟踪其位置'已安装,可以主动通知您'改变了。如果在不使用此模块的情况下部署生产服务器,则Web请求将变得严重 攻击的载体,具体取决于您使用的是哪种代码。
6.在您的应用程序中合并URL授权
URL授权根据用户名和角色(而不是服务器或系统帐户)授予对IIS应用程序中URL的访问权限。这使基于组成员身份限制内容更加容易。 URL授权规则可以与服务器,站点或应用程序关联。
组成员身份是UpGuard管理的系统状态的另一个重要方面。例如,如果您想监视管理员组,则在添加新用户或删除预期用户时,UpGuard会提醒您。

7.使用基于加密表单的身份验证
基于窗体的身份验证允许在应用程序级别(而不是Windows帐户级别)管理客户端注册和身份验证。由于此身份验证机制将表单值作为明文传递, SSL协议 必须安装到 加密 敏感数据。
IIS将身份验证机制视为功能,因此使用UpGuard进行跟踪很容易。确保只有身份验证机制'重新使用已安装,并确保它们'只需单击几下即可在所有地方重新安装。

8.使用应用程序池标识
IIS的此功能通过在唯一帐户下运行应用程序池,绕过域或本地帐户的创建/管理,可以实现更精细的安全性。通过使用低特权帐户(即ApplicationPoolIdentity),可以隔离多个不同的匿名网站内容集,而不必为每个网站创建唯一的帐户。
这是一项关键操作,因为被利用的Web应用程序将仅具有运行应用程序池的用户所拥有的权利,因此限制和隔离可以极大地减少损害。
9.隔离/隔离Web应用程序
通过结合使用上述IIS功能,可以为Web应用程序实现更安全的隔离和隔离。通常,应考虑以下安全建议:
- 每个应用程序池应分配给一个网站。
- 应将应用程序池分配给专用用户。
- 应该设置匿名用户身份以使用应用程序池。
10.修复严重的IIS漏洞
最后但并非最不重要的关键IIS 漏洞 应该打补丁或修复。像任何Microsoft更新一样,紧贴补丁程序和Service Pack有助于确保您的服务器受到尽可能多的保护。大多数漏洞利用都针对已经使用了一年以上并发布了补丁的漏洞,因此,进行少量的常规维护会非常有用。在生产之前,应首先将修补程序部署在测试环境中,并且在组织批准之前,应考虑并批准每个更新。
UpGuard有助于确保IIS服务器上的补丁程序级别相同。通过从具有适当补丁程序级别的服务器构建UpGuard策略,可以将其他服务器与其进行比较,以发现任何异常值。然后,可以在服务器与UpGuard兼容时跟踪修复情况。

包起来
简而言之,IIS的模块化性质允许对Web服务器资源和安全性进行更精细的控制。但是,这可能会使您的Web应用程序或多或少变得安全-取决于负责安全性的人员或组。更深入,更细粒度的安全机制要求对这些资源进行更仔细的管理;幸运的是,可以使用UpGuard自动管理这些艰巨的过程'用于检测和监控漏洞的平台。我们的Windows和IIS安全策略可以自动扫描您的环境中的关键漏洞和安全漏洞。
资料来源
//searchsecurity.techtarget.com/tip/Microsoft-IIS-7-security-best-practices
//docs.microsoft.com/en-us/iis/manage/configuring-security/ensure-security-isolation-for-web-sites
//www.acunetix.com/websitesecurity/iis-security/
//blog.sucuri.net/2015/04/website-firewall-critical-microsoft-iis-vulnerability-ms15-034.html