在此方案中,应用程序只使用带有 .aspx 扩展名的动态文件和几个用于图像与样式表的静态内容类型。由于不需要 .NET Framework 安装的其他 IIS 应用程序映射,因此将这些扩展重新绑定到 IIS 锁定工具附带的 404.dll 扩展。这样做也是为了减少解决方案暴露的表面区域。
此应用程序使用低权限的默认本地服务帐户(ASPNET 帐户)运行 ASP.NET 代码。“最低权限”原则对于所有管理人员来说都很重要,决不要向帐户授予并非绝对需要的权限。以这种方式锁定解决方案相当于减少暴露的表面区域。
(ASPNET 帐户是在安装 .NET Framework Redistributable 时作为本地帐户创建的,只属于创建该帐户的计算机上的“用户”组。因此它拥有所有与此“用户”组相关的权限,并可与此用户组有权访问的任何资源进行交互。此外,它在默认情况下拥有对 Temporary ASP.NET Files 目录和 %windir%temp 的完全访问权限,以及对 Framework 安装目录的读取权限。)
我们将此 ASPNET 帐户添加到 IIS 锁定工具创建的本地“Web 应用程序组”,以防进程在被偷袭时运行任何未得到授权的命令行可执行程序。
然后,我们修改了此用户组的权限,并允许此用户组中的用户运行应用程序需要的 .NET Framework C# 编译器和资源转换器(Csc.exe 和 Cvtres.exe)。
IIS 锁定工具安装了 URLScan 2.5,它是一个 ISAPI 过滤器,可根据查询长度和字符集等规则监视和过滤发送到 IIS Web 服务器的所有输入请求。将 URLScan 配置成只允许应用程序中使用的扩展集,并用它阻止较长的请求。这是深度防护的另一个示例,它是防止通过用户输入插入恶意代码的额外保护层。TechNet 和 IIS 锁定工具中免费提供了 URLScan。与前面提到的 IIS 锁定工具一样,URLScan 是一种很出色的资源,所有运行 IIS 的系统管理员都应该使用它。
我们为 Web 内容目录设置了适当的权限,从而授予 ASP.NET 进程对内容文件的读访问权限,授予匿名用户对所提供内容的适当只读访问权限。
只有系统帐户和系统管理员组的成员才对 IIS 和 URLScan 的日志目录具有访问权限。限制对日志文件的访问通常很有必要,它使攻击者很难对其进行更改,以覆盖其中的记录或隐藏有关所受攻击的有用信息。
Windows 2000 Advanced Server 操作系统
本次竞赛使用的服务器全部运行安装了 Service Pack 3(它是竞赛时最新的 Service Pack)的 Windows 2000 Advanced Server 操作系统。还安装了自 Service Pack 3 发行以来 TechNet Web 站点上发布的所有安全性修补程序。使用最新的安全性修补程序对系统管理员同样是一个很重要的最佳安全方案。
安装这些更新会对某些配置进行更改,从而进一步增强操作系统级的完整性。首先,禁用了所有不必要的操作系统服务,这通常也是一个最佳方案。通过关闭这些服务,可以释放系统资源并减少暴露给攻击者的表面区域。可以禁用的特定服务将随每个解决方案的需要而变化。Messenger、Alerter 和 ClipBook 只是已禁用服务的几个示例。
强烈建议您阅读 Windows 2000 Server Resource Kit,以帮助确定不需要的服务。然后进行相应的测试,以确保应用程序在没有这些服务的情况下也能正常工作。最后,将这些服务的启动状态更改为 disabled 以关闭它们。
在应用程序中,我们还使用注册表编辑器 (Regedit.exe) 更改了四个注册表设置,以便进一步增强安全性。我们将所有这些都作为最佳方案推荐给您,只要您不需要已禁用的功能即可。
创建注册表项:nolmhash
(需要说明的是,在 Windows 2000 中,这是一个关键字,而在 Windows XP 和 Windows Server 2003 中,这是一个值。)
位置:HKLMSystemCurrentControlSetControlLSA