为了提高IIS的安全性,微软提供了两个工具:IIS Lockdown和URLScan,其中IIS Lockdown 2.1包含了URLScan。IIS Lockdown 2.1具有如下功能:
⑴ 禁用或者删除不必要的IIS服务和组件。
⑵ 修改默认配置,提高系统文件和Web内容目录的安全性。
⑶ 用URLScan来过滤HTTP请求。
本文介绍如何运用IIS Lockdown 2.1的前两项功能。注意本文的说明针对 IIS Lockdown 2.1版本,以前版本的用法大不相同。
一、注意事项
IIS Lockdown会改变IIS的运行方式,因此很可能与依赖IIS某些功能的应用冲突。特别地,如果要在一个运行Microsoft Exchange 2000 Server、Exchange Server 5.5或Microsoft SharePoint Portal Server的服务器上安装IIS Lockdown和URLScan,应当加倍小心。
微软的两篇文章解释了可能遇到的困难和解决办法:《XADM:在Exchange 2000环境中使用IIS Lockdown向导的已知问题和调整策略》(http://support.microsoft.com/default.aspx?scid=kb;en-us;q309677),以及《SPS:IIS Lockdown工具影响SharePoint Portal Server》(http://support.microsoft.com/default.aspx?scid=kb;en-us;q309675)。
另外,在正式应用IIS Lockdown或URLScan之前,务必搜索微软的知识库,收集可能出现问题的最新资料。掌握这些资料并了解其建议之后,再在测试服务器上安装IIS Lockdown,全面测试Web应用需要的IIS功能是否受到影响。最后,做一次全面的系统备份,以便在系统功能受到严重影响时迅速恢复。
二、安装
IIS Lockdown 2.1可以从http://www.microsoft.com/downloads/release.asp?releaseid=33961下载。下载之后得到一个iislockd.exe,双击运行,把它解压缩到一个临时目录并启动IIS Lockdown向导。但是,如果要用IIS Lockdown来保护多个服务器,最好按照下文的说明把它解压缩到一个专用目录,这样就不必每次运行IIS Lockdown都要重新解压缩了。
必须注意的是,下载得到的是一个自解压缩的执行文件,这个执行文件与压缩包里面的应用执行文件同名。因此,如果把iislockd.exe解压缩到它本身所在的目录,就会引起文件名称冲突。请按照下面的安装步骤执行,以避免可能出现的问题:
㈠ 将iislockd.exe下载到一个临时目录。
㈡ 打开控制台窗口,进入临时目录,执行命令“iislockd.exe /q /c /t:c:\IISLockdown”解开压缩,/q要求以“安静”模式操作,/c要求IIS Lockdown只执行提取文件的操作,和-t选项一起使用,-t选项指定了要把文件解压缩到哪一个目录(例如在本例中,要求把文件解压缩到c:\IISLockdown目录)。表一列出了iislockd.exe解压缩得到的主要文件,注意iislockd.exe包含了URLScan的文件,但本文不准备详细探讨URLScan。
表一:IIS Lockdown 2.1主要文件
IIS Lockdown文件 说明
iislockd.exe IIS Lockdown主执行文件。
iislockd.ini 配置和选项文件。
iislockd.chm 联机帮助。
runlockdunattended.doc 有关“无人值守”运行方式的文档。
404.dll “文件没有找到”应答文件。
URLScan文件 说明
urlscan.exe URLScan安装程序包。
urlscan.doc URLScan文档。
urlscan*.ini 配置和选项文件。
urlscan_unattend.txt 无人值守方式安装URLScan的配置文件。
readme.txt 针对无人值守方式运行URLScan的说明
unattend.cmd 无人值守方式安装URLScan的命令文件。
三、实践应用
IIS Lockdown的用法很简单。双击启动iislockd.exe,出现Internet Information Services Lockdown向导,按照向导的提示一步一步操作,很快就可以为Web服务器加上一把锁。首先出现的是欢迎屏幕,点击“下一步”出现最终用户许可协议屏幕,选中I Agree选项,点击“下一步”进入服务器模板选择对话框.选择一个最接近当前服务器配置的模板,本文假定使用Static Web Server(静态Web服务器)模板。选中View Template Settings选项,向导将显示出一系列有关该模板类型的对话框,如果不选中这个选项,向导将跳过这些对话框,直接进入URLScan安装过程。
点击“下一步”,出现Internet Services对话框,如图二,这是第一个真正配置IIS加锁选项的页面。IIS Lockdown能够禁用或删除四种IIS服务:HTTP,FTP,SMTP,以及NNTP(Network News Transport Protocol,网络新闻传输协议)。怎样才能知道哪些服务才是必需的呢?除了前面选择的服务器模板类型可资参考之外,个人经验、全面地测试也同样重要。
Internet Services对话框中的IIS服务选项有三种状态:
㈠ 启用:选项处于选中状态,检查框有标记,例如图二的Web services。清除检查框的标记将禁用服务。
㈡ 启用,但推荐禁用,例如图二的E-mail service:选项没有选中,检查框没有标记。如果保留检查框的清除状态,服务将被禁用。
㈢ 禁用,且不可选择,例如图二的File Transfer service:如果一个选项变灰,它的检查框也没有选中标记,则表示不允许修改该服务,可能是因为服务没有安装,也可能是因为当前选择的服务器模板需要该服务。
如果服务器的用途不是经常改变,最好彻底删除不用的服务,这样就再也没有人会意外地激活它了。
点击“下一步”,向导显示出Script Maps(脚本映射)对话框。脚本映射是指把特定的文件扩展名关联到ISAPI(Internet Server API)执行文件,由指定的ISAPI文件来解释该类文件的内容。例如,.asp文件类型映射到asp.dll。
如果禁用了某种类型的脚本文件,IIS Lockdown会把脚本映射指向一个特殊的DLL,当用户试图运行该类脚本文件时这个DLL会返回“文件没有找到”的信息。要禁用某种类型的文件,只需在图三对话框中清除该类文件的检查框。
点击“下一步”,进入最后一个IIS Lockdown的选项对话框Additional Security,如图四所示,通过这个对话框可以删除不需要的目录,禁止未经授权的用户访问文件系统。IIS安装好之后会有许多用于开发和学习的虚拟目录,正式向用户提供服务的环境不需要这些目录,IIS Lockdown将删除图四对话框中选中的虚拟目录,但仍会完好地保留这些目录包含的数据。
默认情况下,IIS会限制对Web内容目录的匿名访问,但还应该加上一层对系统工具(如cmd.exe)的保护,以防止未经授权的用户在系统安全出现漏洞时访问这些工具。如果选中图四对话框中的Running system utilities (for example, Cmd.exe, Tftp.exe)检查框,IIS Lockdown将修改\%windir%目录及其子目录下所有执行文件的访问控制属性(ACE,Access Control Entry),明确地禁止本地Web匿名用户组和Web用户组的运行权限。如果选中Writing to content directories 检查框,IIS Lockdown还会加强所有Web内容目录的安全性,即设置ACE,禁止本地Web匿名用户组和We应用组的写入权限。
窗口底部有一个Disable Web Distributed Authoring and Versioning(WebDAV)选项,即禁用Web分布式创作和版本控制。WebDAV功能用来支持远程Web内容创作和管理,如果确实不必用到该功能,那就可以选中Disable Web Distributed Authoring and Versioning检查框。选中该选项之后,IIS Lockdown将设置httpext.dll(实现WebDAV功能的执行文件)的ACE,禁止将httpext.dll文件装入inetinfo.exe的进程,从而也就禁止了WebDAV功能。
对话框的“下一步”,IIS Lockdown将询问是否要安装URLScan,如图五。如果要用筛选器来禁止IIS处理某些可能有恶意的URL,即经常被黑客用来攻击系统的URL,那就可以用URLScan作为守卫IIS的前门(即筛选器)。本文不准备详细介绍URLScan,请访问http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/tools/urlscan.asp了解更多有关URLScan的说明。
取消安装URLScan的选项,点击“下一步”,IIS Lockdown显示出一系列将要执行的操作,如图六。点击“取消”可以放弃操作,点击“下一步”则开始执行图六清单中列出的“加锁”操作。加锁操作一旦开始,中途不能停止。
依赖于具体的修改操作,IIS Lockdown可能在\%windir%\system32\inetsrv目录下创建几个日志文件和IIS元数据备份文件,如表二所示。虽然没有人要求我们一定要保证这些IIS Lockdown日志文件和元数据备份文件的安全,但如果要手工撤销IIS Lockdown所做的操作,或者需要重新安装OS,那就要用到这些文件。因此,最好把这些文件复制到另一个磁盘,或者把它们保存到另一个服务器。
表二:IIS Lockdown日志和元数据备份文件
.log或.md0文件 说明
oblt-log.log IIS Lockdown为了提高服务器安全性而执行的一系列操作的清单。
oblt-rep.log 加锁过程的一个简短总结。加锁过程结束后,点击View Report按钮可以看到这个文件。
oblt-undo.log IIS Lockdown为了撤销加锁操作而采取的一系列动作的清单。
metaback\oblt-mb.md0 IIS元数据的备份文件。
metaback\oblt-beforeundo-mb.md0 在IIS Lockdown Undo命令恢复元数据备份之前备份的IIS元数据。
如果在正式为用户提供服务的机器上运行IIS Lockdown,一定要安排在正常的关机维护期间进行。IIS Lockdown开始执行修改操作时会关闭Web服务,安排在正常的维护期间进行修改可以避免给用户带来不必要的麻烦。
四、尝尝后悔药
只要能够找到oblt-log.log文件,IIS Lockdown就给你后悔的机会。如果你打算让服务器采用一种新的IIS Lockdown配置,首先必须撤销前一次操作,然后再启动IIS Lockdown,按照新的配置运行向导。如果已经在前一次加锁操作时删除了不必要的服务,那就必须用控制面板中的添加/删除程序功能重新安装服务。类似地,如果已经在加锁过程中安装了URLScan,也要用添加/删除程序功能删除它。
IIS Lockdown的撤销操作会重新启用在加锁操作之前备份的元数据副本。因此,加锁操作和撤销操作之间的所有对IIS的修改都会丢失。不过,IIS Lockdown的撤销操作会在启用上次备份的元数据之前另行备份当时的元数据,因此必要时可以重新执行丢失的修改操作。
五、无人值守
要用无人值守方式运行IIS Lockdown也很简单。用记事本打开iislockd.ini,修改[Info]部分的两个键,使之成为:
Unattended=TRUE
UnattendedServerType=
ServerType的取值从ServerTypesNT4和ServerTypes键列出的值选择,这两个键也属于[info]部分。IIS Lockdown 2.1不支持命令行参数,因此修改iislockd.ini是唯一实现自动加锁的办法。由于这一局限,如果要针对几类不同的服务器配置使用IIS Lockdown加锁,就会遇到一定的困难。要解决这个问题,可以按照下面的步骤操作:
㈠ 为每一种不同的配置创建一个专用的目录。
㈡ 在每一个目录的iislockd.ini文件中,启用无人值守模式,并针对该配置要求设定服务器类型。
㈢ 针对要加锁的服务器类型,进入适当的目录,然后启动IIS Lockdown执行无人值守的加锁操作。
iislockd.ini配置文件的[info]部分中,最后一个键也值得一提,它就是Undo,设置成TRUE可以撤销前一次加锁操作。当IIS Lockdown执行撤销操作时,它不会再返回来按照UnattendedServerType键指定的服务器类型执行加锁操作。
六、定制服务器模板
如果要创建自定义的服务器配置模板,并将模板加入到IIS Lockdown的配置清单中,只要修改iislockd.ini文件增加适当的信息就可以了。请按照下面的步骤创建定制的服务器模板:
⑴ 用记事本打开iislockd.ini文件。
⑵ 检查一下ServerTypesNT4和ServerTypes键中已有的模板名称,然后加入定制模板的名称,注意定制模板的名称不能与已有的模板冲突。用于NT 4.0平台的模板名字加入到ServerTypesNT4键,其他模板名字加入到ServerTypes键。
⑶ 在iislockd.ini文件的现有模板中,选择一个最接近定制模板配置的,将它复制到.ini文件的最后。
⑷ 把模板名称(即[]括号内的单词)修改成步骤2中指定的定制模板名称。
⑸ 将Label键的值修改成定制模板的说明文字。
⑹ 根据服务器配置需要编辑其他键,以启用或禁用各个IIS Lockdown修改选项。这些选项对应前文“实践应用”部分的对话框选项,在此不再赘述。
最后必须指出的是,IIS Lockdown确实能够方便地提高Web服务器的安全性,但不意味着有了IIS Lockdown就可以高枕无忧。安全是一个不断发展和变化的概念,唯有时刻牢记在心,才能防患于未然
本文作者: