FrontPage服务器扩展分析与安全策略
过去几年中发生了许多针对FontPage Server Extensions的重大攻击事件,所以FontPage Server Extensions的名声似乎不是很好,一些安全教程甚至认为不值得去想办法提高FrontPage Server Extensions的安全性,建议直接予以删除 。但是,如果你确实要使用FrontPage Server Extensions提供的诸多功能,例如对网站创作的支持,那就不得不认真考虑这样一个问题:是否有可能保障FrontPage Server Extensions的安全?答案是肯定的,只是必须花些时间进行规划和配置。
虽然有许多人对FrontPage Server Extensions的安全性表示怀疑,但在年复一年的不断发展中,它的安全性也在不断提高。保障FrontPage Server Extensions的安全性是完全有可能的,但前提是要深入理解到底什么是FrontPage Server Extensions,以及它是如何运作的。一、运行原理
FrontPage Server Extensions即FrontPage的服务器端扩展模块,它增强了Web服务器的功能,使得创作者能够远程管理和发布网站,例如通过FontPage直接与Server Extensions交互,实现文件上载、连接到数据源、修改Web授权等操作。FrontPage Server Extensions还有一个称为WebBots的运行时组件,它提供了许多高级功能,诸如表单发布、讨论页面、内容链接等。
在服务器上安装FrontPage Server Extensions之后,可以看到它包括三个二进制文件--admin.dll,author.dll,和shtml.exe,分别实现管理、创作、运行支持。FrontPage Server Extensions的版本不同,这三个文件的扩展名可能不同,例如.dll可能变成.exe,.exe可能变成.dll。另一方面,IIS允许指定任意一种扩展名,因为IIS有一个名为fpexedll.dll的ISAPI筛选器,它会把请求指向正确的位置。
这三个二进制文件驻留在_vti_bin虚拟目录中,_vti_bin虚拟目录映射到物理目录\program files\common files\microsoft shared\web serverextensions\40\isapi(或者,对于FrontPage Server Extensions 2002,物理目录是\program files\common files\microsoft shared\web server extensions\50\isapi)。所有FrontPage Web网站(指安装和启用了FrontPage Server Extensions的网站,下同)都有一个虚拟目录映射到该路经。FrontPage通过向这些二进制文件发送HTTP POST请求,实现与Web服务器的通信,POST请求的正文中包含一些特殊的命令(称为vti_rpc命令),指示服务器执行一些特定的操作。
FrontPage Server Extensions的服务对象不限于FrontPage,微软的其他许多技术,包括Web文件夹、Office Web发布、SharePoint小组服务,都离不开FrontPage Server Extensions,它甚至还有一个ADO驱动程序,可以用来查询FrontPage Web页面。显然,在微软的Web战略规划中FrontPage Server Extensions有着重要地位,短期之内不可能被放弃。虽然微软在不断地改进FrontPage Server Extensions的安全性,但它不可避免地增加了Web服务器面临攻击的机会(一般而言,越是复杂的系统,弱点总是越多)。例如,FrontPage Server Extensions提供了一种进入Web服务器的通道。用FrontPage连接Web服务器时要求输入一个密码,密码保护虽然不无益处,但同时也给攻击者提供了猜测密码的机会,攻击者可以方便地利用脚本程序执行暴力破解,很快就可以尝试数百、数千个常用的密码,一旦密码泄露,攻击者就可以随心所欲地修改Web内容了。
FrontPage Server Extensions面临的另一个安全问题是它可以用来收集服务器信息。只要向shtml.exe发送一个适当的HTTP POST请求,就可以得到FrontPage Server Extensions版本、Web服务器软件版本、OS平台、匿名Web用户帐号、FrontPage Web网站的名称等信息,虽然这些信息本身不算机密,但方便了攻击者采取更具有针对性的动作。
由于所有FrontPage Server Extensions命令都是作为POST数据发送给各个二进制文件,IIS的日志中只能记录对这些二进制文件的POST请求,却不能记录具体的_vti_rpc命令。
虽然我们可以配置FrontPage Server Extensions,使其记录创作类的动作(默认不记录),但日志仍不能保证包含命令的参数。例如,如果一个管理员修改了FrontPage Web网站的配置,日志中会有一个"设置服务元数据"的条目,但没有进一步的具体信息,也就是说,它只能说明"确实有配置被改变了",但不能告诉我们"到底哪些配置被改变了"。另外,日志文件的位置也很难改变,一般总是保存在FrontPage Web网站的_vti_log目录下。
还有一个重要的安全问题是FrontPage Server Extensions运行在IIS进程(inetinfo.exe)之内,它们都运行在SYSTEM帐户的安全上下文之下,因此,任何FrontPage Server Extensions的安全漏洞(例如缓冲溢出)都可能使攻击者获得全部的访问权限。
FrontPage Server Extensions带来的最后一个风险源于不能选择安装目录。一般情况下,Web目录应当和系统文件放在不同的分区,这种分离增加了攻击者全面了解文件系统的难度,避免攻击者访问敏感的系统文件。但是,FrontPage Server Extensions的_vti_bin虚拟目录安装在系统分区上,不能发挥分离Web分区带来的优势。此外,_vti_bin虚拟目录带有可执行标记,如果出现类似Nimda蠕虫的攻击,很容易被利用。三、安全机制
FrontPage Server Extensions的安全模型建立在IIS和NTFS的安全之上。FrontPage Web网站有三种基本的访问授权:浏览,创作,和管理。授予浏览权限意味着用户能够浏览FrontPage Web网站,授予创作权限意味着用户能够上载和修改FrontPage Web网站的文件,如果授予一个用户管理权限,那么他将能够修改FrontPage Web网站的配置。
FrontPage Web网站根目录的NTFS ACL设置决定了用户访问文件系统的权限。如果一个用户有NTFS"读取"权限,他就可以浏览目录;如果用户有NTFS"写入"权限,他就可以创作FrontPage Web网站;如果要管理一个FrontPage Web网站,则用户必须有FrontPage Web网站根目录的"修改"权限。注意这些权限是NTFS文件系统的权限,而不是在Internet信息服务管理器(ISM)控制台中设置的Web访问权限。当FrontPage客户程序向author.dll或admin.dll发送一个POST请求,服务器开始验证用户的身份。客户程序发出POST请求之后,IIS首先检查FrontPage Web网站的根目录,确定匿名用户帐户是否有权执行当前请求的操作。如果没有,IIS要求用户提供名称和密码以便验证身份。用户提交名字和密码之后,FrontPage Server Extensions再次检查根目录,确定该用户身份是否具有适当的权限。如果FrontPage Server Extensions认可了用户的身份,则用户被视为具有Web创作者或管理员的权限。
这里很容易出现的一个问题是错误地设置FrontPage Web网站根目录的权限,或者将根目录放到了FAT分区。FrontPage Server Extensions 2000之前的版本安全性比较脆弱,默认配置不包含密码;2000以及更高版本的FrontPage Server Extensions安全模型稍微坚固一些,采用了非空的默认密码,但我们不时可以看到修改根目录授权的情形,授予所有人"写入"的权限,特别是在开发环境中,由于安全性的要求不高,这种情形尤其常见。如果IUSR_machinename(其中machinename是计算机的名字)帐户具有写入根目录的权限,所有连接到FrontPage Server Extensions的用户将自动被授予全部创作或管理FrontPage Web网站的权限。
类似地,由于FrontPage高度依赖于NTFS的授权机制,安装在FAT文件系统上的FrontPage Server Extensions会将所有管理功能授予每一个用户,因为FAT文件系统不具有限制文件访问的能力。
所以在使用FrontPage Server Extensions时,一定要换个网络位置来登录FrontPage Web网站,看看有没有出现验证身份的提示;如果没有,那就应该仔细检查一下权限配置问题了。四、十大措施
要保障FrontPage Server Extensions的安全,必须从多个角度、多个层次来考虑。服务器的配置和安全策略将在很大程度上决定保障FrontPage Server Extensions安全的措施。下面列出了十个步骤,以此为依据可以构造出一个比较完善的FrontPage Server Extensions安全策略。
㈠ 保障用户帐户的安全。明确地定义用户角色,把Web创作和管理权限授予用户或用户组时一定要谨慎。为每一个帐户设置复杂的密码,不要让一个以上的用户共用同一个帐户。为防止暴力破解,最好将Administrator帐户改成不易猜测的名字。
㈡ 设置适当的NTFS权限。确保FrontPage Web网站的根目录没有从它的父目录继承权限,确保匿名用户帐户不具有写入任何网站的权限。取消_vti_bin的子目录的运行权限,然后将各个要运行的文件标记为可运行,这样,FrontPage Server Extensions的二进制文件仍能正常运行,但禁止了后来放入该目录的文件运行,另外,对于匿名用户,应当明确地禁止其写入FrontPage Server Extensions二进制文件目录的权限。
㈢ 修改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\All Ports注册键。表一提供了推荐的取值。
表一:推荐的注册键值
键 | 含义 | 推荐的值 |
AccessControl | 如果设置成0,FrontPage的权限检查全部禁止,每当创建新的网站,管理员必须手工设置各个_vti目录的访问权限,如果不设置访问权限,所有用户都将获得创作权限。 | 1 |