Username: Password:

IIS5安全策略设计概要
来源:souzz.net作者: 发布时间:2007-11-12 13:45:48

IIS5是Windows2000操作系统所带的Internet服务程式包,他包含了www、ftp、smtp连同index server等等众多实用功能。无论是创建一个Internet外部站点,还是构造一个Intranet内部应用,使用IIS5都是很好的选择。同时,怎样保障IIS5安全稳定运行、内容发布正确可靠,这是系统管理员必须高度重视的问题。本文就IIS5的安全策略设计进行概要分析,旨在让大家从宏观角度了解系统管理员都应在哪些方面执行必要的安全配置,然后根据实际环境再在各个环节分别扩展,最终创建一个安全的IIS5服务器。

为虚拟目录配置适当的访问权限

正确配置虚拟目录的访问权限,将会很大程度地影响其中文档的安全可靠性。建议考虑以下几个方面的配置原则:

文档类型 建议的访问权限


CGI 程式(.exe, .dll, .cmd, .pl) Everyone (X)
Administrators (Full Control)
System (Full Control)

脚本文档(.asp) Everyone (X)

Administrators (Full Control)
System (Full Control)

包含文档(.inc, .shtm, .shtml) Everyone (X)
Administrators (Full Control)
System (Full Control)

静态文档 (.txt, .gif, .jpg, .html) Everyone (R)
Administrators (Full Control)
System (Full Control)

为不同类型的文档创建不同的目录

假如一个虚拟目录下面有多种类型的文档,按照上面的原则为每一种文档配置访问权限,无疑是很烦琐的事情。因此,我们能够采取为不同类型文档创建不同目录的方式,然后再按照上面的原则为每一个目录配置相应的访问权限。比如,我们能够创建如下的目录结构:

C:\inetpub\wwwroot\myserver\static:存放静态文本文档(.html)

C:\inetpub\wwwroot\myserver\include:存放包含文档(.inc)

C:\inetpub\wwwroot\myserver\script:存放脚本文档(.asp)

C:\inetpub\wwwroot\myserver\executable:存放可执行文档(.exe,.dll, .cmd, .pl)

C:\inetpub\wwwroot\myserver\images:存放图像文档(.gif,.jpeg)

另外,请注意以下2个特别的目录:

C:\inetpub\ftproot:FTP服务所在目录

C:\inetpub\mailroot:SMTP服务所在目录

这2个目录的访问权限是Everyone 完全控制(Full Control),每个用户都具备向其中添加数据的权限。这样,就有可能造成目录所在磁盘的空间耗尽。因此,我们建议:

将这2个目录放置到另外的磁盘卷中,和其他的IIS服务程式分开。

使用Windows 2000 磁盘配额功能限制添加到这2个目录的数据量。

为IIS日志文档配置适合的访问权限

IIS日志文档记录了任何访问IIS服务程式的信息,他对于系统管理员检测故障很重要。攻击者为了销毁他们的侵入痕迹,总是要想方设法删除掉日志文档。因此,我们建议对这些日志文档进行重点保护,配置如下的访问权限:


Administrators (Full Control)
System (Full Control)
Everyone (RWC)

IIS日志文档一般位于如下路径:%systemroot%\system32\LogFiles。

使用日志文档

日志文档对于检查服务器是否被攻击是极为重要的。日志文档有多种,我们建议使用"W3C扩充日志文档格式",步骤如下:

启动"Internet服务管理器"

点击鼠标右键选择要配置的站点,在从弹出菜单中选择"属性"

点击"Web站点"选项卡

点击选中"启用日志记录"复选框

从"活动日志格式"下拉选择框中选择"W3C 扩充日志文档格式"

点击"属性"

点击"扩充的属性"选项卡,然后依次选中如下属性:

客户IP地址

用户名

方法

URI资源

HTTP状态

Win32状态

用户代理

服务器IP地址

服务器端口

以上最后2个属性只当一个电脑充当多个Web服务器时有意义,也就是所谓的虚拟主机。属性"Win32状态"对于调试很有用,当他的数值等于5时,表示禁止访问(access denied)。我们能够在命令行执行如下命令得到其他的"Win32状态码"所表示的含义:

net helpmsg err

其中err表示Win32状态码。

禁止或删除任何的例子程式

默认安装选项中,例子程式不会被安装到机器中。对于一个正式应用的服务器,我们不应该在其中安装任何例子程式。假如已安装了某些例子程式,建议将他们完整删除掉。为了查找方便,以下我们列出一些例子程式的默认安装路径:

例子程式类别 所在虚拟目录 默认安装路径

IIS例子程式 \IISSamples c:\inetpub\iissamples

IIS文档 \IISHelp c:\winnt\help\iishelp

Data Access \MSADC c:\program files\common files\system\msadc

删除虚拟目录IISADMPWD

这个虚拟目录的作用是允许用户重新配置他们在Windows NT或Windows 2000操作系统上的帐号口令,应用环境主要针对企业内部网Intranet。IIS5的安装中没有包含这一项,但是假如是从IIS4升级到IIS5,就会存在这个虚拟目录。建议假如不是Intranet环境,就将之删除。

删除不使用的应用程式映射关联

IIS默认情况下能够解释如.asp、.htr、.shtm等应用程式文档,当这些文档被IIS接收后,将交由一个DLL文档处理。假如使用不到其中某类文档,我们建议将删除那个类型在IIS中的映射关系。步骤如下:

启动"Internet服务管理器"

点击鼠标右键选择要处理的服务器,再选择"属性"

选择"WWW服务",点击"编辑"

点击"主目录"

点击"配置",显示出当前"应用程式映射"列表

然后参照下表删除相关类别:

假如不使用下列应用 就删除掉以下项目

基于Web的口令修改 .htr

Internet数据库连接器 (注意:任何的IIS5 Web服务器将使用ADO等相似技术代替数据库连接器) .idc

服务器端包含文档(Server-side Includes) .stm, .shtm, and .shtml

Internet打印 .printer

索引服务(Index Server) .htw, .ida and .idq

关于Internet打印服务,我们再说明一点。Internet打印能够通过Internet服务管理器进行配置,也能够通过组策略进行配置。当两者的配置间发生冲突时,以组策略的配置信息优先。假如在Internet服务管理器中删除了Internet打印,请记住不要再在本地或域组策略中激活他。默认的组策略配置中,既不激活也不禁止Internet打印。在组策略中配置Internet打印的方法是:在MMC的组策略管理单元中,点击"电脑配置",点击"管理模板",点击"打印机",最后点击"基于Web的打印":

配置IP地址或DNS域名地址的访问限制

假如Web站点只对特别IP地址的客户服务,我们建议对Web站点执行IP地址限制的配置。假如配置是DNS域名信息,请注意,这会导致IIS执行DNS搜索工作,耗费一定的时间。

确认可执行文档的安全性

在访问网站内容时,IIS经常要执行一些.DLL文档。DLL文档属于可执行文档,可能会读写硬盘文档内容,所以最好确保其安全性。但是,怎样判断DLL文档的安全性,却不是个简单的事情。这里介绍一个叫做DumpBin程式,他能够判断出可执行文档是否调用了某个API函数。比如说,我们使用下面的命令判断文档MyISAPI.dll是否调用了RevertToSelf:

dumpbin /imports MyISAPI.dll | find "RevertToSelf"

命令执行后,假如屏幕上没有任何输出信息,就表明MyISAPI.dll没有直接调用RevertToSelf。

更新IIS服务器上的根权威认证机构发放的证书(Root CA Certificates)

要完成更新工作,需要2个步骤:

首先,添加一个我们信任的新根权威认证机构发放的证书,特别是通过Microsoft认证服务2.0创建的新根权威认证机构证书。

然后,删除任何不被我们信任的根权威认证机构发放的证书。一般情况下,不被信任的机构就是指我们还不认识的机构。

任何被IIS使用的根权威认证机构证书都存储在电脑中,我们能够按照下列步骤访问他们:

在"开始/运行"中输入mmc,点击"确定",启动Microsoft管理控制台,即MMC

从"控制台"菜单中选择"添加/删除管理单元",点击"添加"

选择"证书",点击"添加"

点击"电脑帐户"选项

点击"下一步"

选择要访问的机器

点击"完成"

点击"关闭",点击"确定"

扩展"证书"节点

扩展"受信任的根证书颁发机构"

选择"证书"

这时,在右边窗口格中显示出当前任何的受信任的根证书颁发机构发放证书的资料。我们能够根据实际情况,删除无需的证书。但是请格外注意,不要删除Microsoft公司或Verisign公司的相关证书,因为他们被操作系统广泛地使用。

禁止或删除无需的COM组件

对于大多数应用程式无需的COM组件,我们就应该考虑将其删除,比如说"文档系统对象"(File System Object)组件。请注意,假如删除了"文档系统对象"组件,"目录对象"(Dictionary object)组件也将被删除。但是提醒一点,有些程式可能需要禁止的组件,比如说,Site服务器3.0就使用到"文档系统对象"组件。删除"文档系统对象"组件的命令是: regsvr32 scrrun.dll /u。

重点检查ASP代码中的

输入内容和查询输入内容

许多站点都使用来自用户的输入信息去调用其他代码或直接创建SQL命令。换言之,输入内容被假设为格式正确和语法正确。但是我们千万不能这么掉以轻心!许多攻击者就是在输入内容中填写非法代码从而巧妙偷窥服务器的内容,甚至造成数据的毁坏。因此,我们要特别重视检查来自的输入内容或查询字符串信息,只有其符合安全需要,才能进一步传递给下一个程式进行处理。

我们能够使用Jscript版本5和VBScript版本5的常规表达式功能检查文本信息的合法性。来看看几个例子。


下面的代码是除去字符串中任何非字母、非数字连同非_的字符:

Set reg = New RegExp
reg.Pattern = "\W+"
strUnTainted = reg.Replace(strTainted,"")

下面的代码是除去|操作符后的任何文本:

Set reg = New RegExp
reg.Pattern = "^(.+)\|(.+)"Anycharacter from the start of
’ the string to a | character.
strUnTainted = reg.Replace(strTainted,"$1")

另外,当使用"文档系统对象"组件打开或创建文档时,假如文档名取自用户的输入内容,那么很可能被攻击者利用去试图打开一个电脑的串口或打印机设备。为了防止这个问题发生,我们能够使用下面的Jscript代码除去非法文档名:

var strOut = strIn.replace(/(AUX|PRN|NUL|COM\d|LPT\d)+\s*$/i,"");

从以上几个简单的实例,我们能够看到脚本引擎版本5处理字符串的强大功能。微软站点有关于脚本应用的周详文档和例程,地址如下:

文档:http://msdn.microsoft.com/scripting/default.htm

例程:http://msdn.microsoft.com/workshop/languages/clinic/scripting051099.asp

禁止父路径(Parent Paths)表达法

默认情况下,能够在函数中使用父路径".."。但是为了安全考虑,我们应该禁止这个功能,步骤如下:

在"Internet服务管理器"中右键点击要处理服务器的"默认Web站点",从弹出菜单中选择"属性 "

点击"主目录"选项卡

点击"配置"

点击"应用程式选项"选项卡

去除"启用父路径"复选框

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅