由于Web服务器被越来越多的骇客和蠕虫制造者作为首要攻击目标,IIS便也成为了Microsoft可信赖计算计划中首要关注的内容。因此,IIS 6.0被完全的重新设计,以实现默认安全和设计安全。本文主要讲述了IIS 6.0在默认设置和设计上安全性的改变是如何使其成为关键web应用的平台。
默认安全
过去,包括像微软这样的企业,都在他们的web服务器上安装一系列的默认示例脚本,文件处理和最小文件授权,以提高管理员管理的灵活性和可用性。但是,这些默认设置都增加了IIS的被攻击面,或者成为了攻击IIS的基础。因此,IIS 6.0被设计成了一个比早期产品更安全的平台。最显而易见的变化是IIS 6.0并没有被Windows Server 2003默认安装,而是需要管理员显式的安装这个组件。其他的变化包括:
·默认只安装静态HTTP服务器
IIS 6.0的默认安装被设置为仅安装静态HTML页面显示所需的组件,而不允许动态内容。下表比较了IIS 5.0和IIS 6.0的默认安装设置:
.net/uploadfiles/2005-09/20050905_140534227.gif" target=_blank>
.net/uploadfiles/2005-09/20050905_140534227.gif" onload="javascript:if(this.width>screen.width-333)this.width=screen.width-333" border=0>
·默认不安装应用范例
IIS 6.0中不再包括任何类似showcode.ASP或codebrws.ASP等的范例脚本或应用。这些程序原被设计来方便程序员快速察看和调试数据库的连接代码,但是由于showcode.ASP和codebrws.ASP没有正确的进行输入检查,以确定所访问的文件是否位于站点根目录下。这就允许攻击者绕过它去读取系统中的任何一个文件(包括敏感信息和本应不可见的配置文件),参考以下链接以获取该漏洞的更多的细节:http://www.microsoft.com/technet/treeview/default.ASP?
url=/technet/security/bulletin/MS99-013.ASP
·增强的文件访问控制
匿名帐号不再具有web服务器根目录的写权限。另外,FTP用户也被相互隔离在他们自己的根目录中。这些限制有效的避免了用户向服务器文件系统的其他部分上传一些有害程序。例如攻击者可以向/scripts目录上传一些有害的可执行代码,并远程执行这些代码,从而攻击web站点。
·虚拟目录不再具有执行权限
虚拟目录中不再允许执行可执行程序。这样避免了大量的存在于早期IIS系统中的目录遍历漏洞、上传代码漏洞以及MDAC漏洞。
·去除了子验证模块
IIS 6.0中去除了IISSUBA.dll。任何在早期IIS版本中,需要该DLL模块来验证的账号,现在需要具有"从网络上访问这台计算机"的权限。这个DLL模块的去除,可以强制要求所有的访问都直接去SAM或者活动目录进行身份验证,从而减少IIS可能的被攻击面。
·父目录被禁用
IIS 6.0中默认禁用了对父目录的访问。这样可以避免攻击者跨越web站点的目录结构,访问服务器上的其他敏感文件,如SAM文件等。当然也请注意,由于父目录默认被禁用,这可能导致一些从早期版本IIS上迁移过来的应用由于无法使用父目录而出错。
安全设计
IIS 6.0设计中安全性的根本改变表现在:改善的数据有效性、增强的日志功能、快速失败保护、应用程序隔离和最小权限原则。
改善的数据有效性
IIS 6.0设计上的一个主要新特性是工作在内核模式的HTTP驱动--HTTP.sys。它不仅提高了web服务器的性能和可伸缩性,而且极大程度的加强了服务器的安全性。HTTP.sys作为web服务器的门户,首先解析用户对web服务器的请求,然后指派一个合适的用户级工作进程来处理请求。工作进程被限制在用户模式以避免它访问未授权的系统核心资源。从而极大的限制了攻击者对服务器保护资源的访问。
IIS 6.0通过在内核模式的驱动中整合一系列的安全机制,以提升其设计上固有的安全性。这些机制包括避免潜在的缓冲溢出,改善的日志机制以辅助事件响应进程和检查用户有效性请求的先进URL解析机制。
为了第一时间的避免潜在的缓冲区和内存溢出漏洞的利用,微软通过在HTTP.sys中进行特殊的URL解析设置以实现IIS 6.0安全设计中的深度防御原则。这些设置还可以通过修改注册表中特定的键值来进一步优化。下表提供了主要注册表键值的位置(均在以下路径HKLM\System\CurrentControlSet\Services\HTTP\Parameters):