精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● WinNT系统>>【互联网服务】>>IIS设置>>确保 Internet Information Services5 安全的注意事项

主题:确保 Internet Information Services5 安全的注意事项
发信人: lumingtong()
整理人: netmon(2001-08-18 13:02:36), 站内信件
2000年6月29日 
Michael Howard 
Windows 2000 安全小组 
电子邮件:[email protected] 


为确保运行 Microsoft Windows 2000 和 Internet 信息服务 (IIS) 5 的 Web 服务器的安全性,本文档列出了一些建议和最佳做法。设置经常是在安全性而非功能方面出错,因此非常有必要仔细阅读以下建议,并将它们应用到公司设置中。  

注意 本文档由“Designing Secure Web-Based Applications for Microsoft Windows 2000”(Microsoft 出版社,ISBN: 0735609950)改编而来。  

熟悉 Internet Information Server 4 注意事项的用户将注意到该注意事项比那个注意事项短得多。原因有以下两点:  

许多 Windows 2000 全系统设置可通过提供的安全模板 (hisecweb,inf) 配置;而无需手工配置注册表设置。  
在默认情况下,Microsoft Windows NT 4 和 Internet Information Server 4 中不太安全的默认设置在 Windows 2000 和 IIS 5 中被禁用。  
本文档的其余部分包括:  

一般安全注意事项  
Windows 2000 安全注意事项  
IIS 5 安全注意事项  
一般安全注意事项  

本节中的资料涵盖一般安全问题。  

阅读贵公司的安全策略  

拥有安全策略是极为重要的。您需要准备回答以下问题  

如何应对非法闯入?  
备份存放在何处?  
允许什么人访问服务器?  
可在以下站点或书中找到有益的策略信息:SANS Institute (http://www.sans.org);Baseline Software, Inc. (http://www.baselinesoft.com);和 Practical Unix & Internet Security (O'Reilly Books, 1996)。  

订阅 Microsoft Security Notification Service  

可以跟踪最新的与 Microsoft 相关的安全问题和补丁程序,方法是在 http://www.microsoft.com/technet/security/notify.asp 订阅 Microsoft Security Notification Services。通过电子邮件,您将自动获得安全问题的通知。  

还应考虑在桌面上放置 Microsoft Security Advisor Program 的快捷方式。要实现此操作,可执行以下步骤:  

打开 Internet Explorer。  
浏览到 http://www.microsoft.com/technet/security/notify.asp。  
从“收藏”菜单中选择“添加到收藏夹”。  
选中“允许脱机使用”复选框。  
单击“自定义”。  
在“脱机收藏夹向导”中单击“下一步”。  
选择“是”选项按钮,然后指定下载与该页链接的两层网页。  
单击“下一步”。  
选择“创建新的计划”选项按钮,然后单击“下一步”。  
接受默认设置,然后单击“下一步”。  
单击“完成”。  
单击“确定”。  
从“收藏”菜单中选择“整理收藏夹”。  
在“整理收藏夹”对话框中选择“Microsoft TechNet Security”快捷方式。  
单击“属性”。  
在“Microsoft TechNet Security 属性”对话框中单击“下载”选项卡。  
取消选择“跟踪本页 Web 站点之外的链接”对话框。  
依次单击“确定”和“关闭”。  
现在可以将“Microsoft TechNet Security”快捷方式从“收藏”菜单拖至桌面上。有新的安全消息时,将在该图标上出现一个小的红色标记。  

重要 当出现新的安全问题时,必须随时掌握其动向。关于这一点,不能不加以充分强调。  

Windows 2000 安全注意事项  

本节中的资料涵盖 Windows 2000 所特有的安全问题。  

检查、更新和部署提供的 Hisecweb.inf 安全模板  

我们已在附带的 CD 上包括了名为 Hisecweb.inf 的安全模板,它可作为适用于多数安全 Web 站点的基准。该模板配置基本的 Windows 2000 全系统策略。  
(Hisecweb.inf可在http://www.microsoft.com/technet/security/iis5chk.asp找到。)

执行以下步骤,以使用该模板:  

将该模板复制到 %windir%\security\templates 目录。  
打开“安全模板”工具,查看这些设置。  
打开“安全配置和分析”工具,然后装载该模板。  
右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即分析计算机”。  
等候操作完成。  
查看结果,如有必要就更新该模板。  
如果您已对该模板满意,右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即配置计算机”。  
配置 IPSec 策略  

应该认真考虑在每台 Web 服务器上设置 Internet Protocol Security (IPSec) 数据包筛选策略。该策略可提供更高级别的安全性,以防止防火墙被破坏。使用多层安全技术通常是很好的做法。  

通常,除那些希望支持的协议和要打开的端口之外,其它所有的 TCP/IP 协议都应闭锁。可以使用 IPSec 管理工具或 IPSecPol 命令行工具部署 IPSec 策略。  

确保 Telnet Server 的安全  

如果打算使用 Windows 2000 中包括的 Telnet Server,应该考虑限制可访问该服务的用户。要进行这一设置,可执行以下步骤:  

打开“本地用户和组”工具。  
右键单击“组”节点,然后从上下文菜单中选择“新建组”。  
在“组”名框中输入 TelnetClients。  
单击“添加”,然后添加对该计算机有远程登录权限的用户。  
依次“创建”和“关闭”。  
TelnetClients 组存在时,Telnet 服务将只允许在组中定义的那些用户访问该服务器。  

IIS 5 安全注意事项  

本节中的资料涵盖 Internet Information Services 5 所特有的安全问题。  

在虚拟目录上设置 ACL  

尽管该步骤与应用程序稍微有些关系,但是经验法则仍适用,正如表 F-1 中列出的那样。  

文件类型: 
 访问控制列表 
  
CGI (.exe, .dll, .cmd, .pl) 
 Everyone (X) 
Administrators(完全控制) 
System(完全控制) 
  
脚本文件 (.asp) 
 Everyone (X) 
Administrators(完全控制) 
System(完全控制) 
  
Include 文件 (.inc, .shtm, .shtml) 
 Everyone (X) 
Administrators(完全控制) 
System(完全控制) 
  
静态内容 (.txt, .gif, .jpg, .html) 
 Everyone (R) 
Administrators(完全控制) 
System(完全控制) 
  

按文件类型推荐使用的默认 ACL。  

无需在每个文件上设置 ACL,最好为每个文件类型创建一个新目录、在每个目录上设置 ACL、允许 ACL 传给各个文件。例如,目录结构可为以下形式:  

c:\inetpub\wwwroot\myserver\static (.html)  
c:\inetpub\wwwroot\myserver\include (.inc)  
c:\inetpub\wwwroot\myserver\script (.asp)  
c:\inetpub\wwwroot\myserver\executable (.dll)  
c:\inetpub\wwwroot\myserver\images (.gif, .jpeg)  
同样,请特别注意以下两个目录:  

c:\inetpub\ftproot(FTP 服务器)  
c:\inetpub\mailroot(SMTP 服务器)  
在这两个目录上的 ACL 是 Everyone(完全控制),并且应被更紧密的事物所覆盖(取决于您的功能级别)。如果打算支持 Everyone(写入),则将该文件夹放在 IIS 服务器以外的不同卷上,或使用 Windows 2000 磁盘配额限制可写入这些目录的数据量。  

设置适当的 IIS 日志文件 ACL  

请确保 IIS 产生的日志文件 (%systemroot%\system32\LogFiles) 上的 ACL 是  

Administrators(完全控制)  
System(完全控制)  
Everyone (RWC)  
这有助于防止恶意用户为隐藏他们的踪迹而删除文件。  

启用日志记录  

当您希望确定服务器是否被攻击时,日志记录是极其重要的。应使用 W3C 扩展日志记录格式,步骤如下:  

装载 Internet Information Services 工具。  
右键单击所述站点,然后从上下文菜单中选择“属性”。  
单击“Web 站点”选项卡。  
选中“启用日志记录”复选框。  
从“活动日志格式”下拉列表中选择“W3C 扩展日志文件格式”。  
单击“属性”。  
单击“扩展属性”选项卡,然后设置以下属性:  
客户 IP 地址  
用户名  
方法  
URI 资源  
HTTP 状态  
Win32 状态  
用户代理  
服务器 IP 地址  
服务器端口  
如果在一台计算机上有多个 Web 服务器,则后两种属性非常有用。Win32 状态属性对于调试非常有用。检查日志时,密切注意错误 5,这意味着访问被拒绝。在命令行上输入 net helpmsg err,可找出其它 Win32 错误的含义,其中 err 是要查找的错误号。  

设置 IP 地址/DNS 地址限制  

这不是常用选项,但是如果您希望限制某些用户对 Web 站点的访问,则这是可采用的选项。请注意,如果您输入 IIS 拥有的域名系统 (DNS) 名称以执行 DNS 查找,则这将非常耗时。  

验证可执行内容的可靠性  

很难知道可执行内容是否可靠。一个试验就是使用 DumpBin 工具查看可执行内容是否调用某些 API。DumpBin 包括在多种 Win32 开发工具中。例如,如果要查看名为 MyISAPI.dll 的文件是否调用 RevertToSelf,请使用以下语法:  

dumpbin /imports MyISAPI.dll | find "RevertToSelf"  


如果屏幕上未显示任何结果,则 MyISAPI.dll 不直接调用 RevertToSelf。它可能通过 LoadLibrary 调用 API,在这种情况下,也可使用类似的命令搜索它。  

在 IIS 服务器上更新根 CA 证书  

这个过程分为两步:第一步,添加任何您信任的新根证书 颁发机构 (CA) 证书 - 特别是,使用 Microsoft 证书服务 2.0 创建的根 CA 证书。第二步,删除您不信任的所有根 CA 证书。请注意,如果您不知道颁发根证书的公司名,千万别信他们。  

IIS 使用的所有根 CA 证书都驻留在计算机的机器存储中。可通过以下步骤访问该存储:  

打开 Microsoft 管理控制台 (MMC)。  
从“控制台”菜单中选择“添加/删除管理单元”,然后单击“添加”。  
选择“证书”,然后单击“添加”。  
单击“计算机帐户”选项按钮。  
单击“下一步”。  
选择所述机器。  
单击“完成”。  
依次单击“关闭”和“确定”。  
扩展“证书”节点。  
打开“受信任的根证书颁发机构”。  
选择“证书”。  
右窗格上将显示当前可信的全部根 CA 证书。如果愿意,可以删除多个证书。  

禁用或删除所有的示例应用程序  

示例只是示例;在默认情况下,并不安装它们,且从不在生产服务器上安装。请注意一些示例安装,它们只可从 http://localhost 或 127.0.0.1 访问;但是,它们仍应被删除。  

表 F-2 列出一些示例的默认位置。  

示例 
 虚拟目录 
 位置 
  
IIS 示例 
 \IISSamples 
 c:\inetpub\iissamples 
  
IIS 文档 
 \IISHelp 
 c:\winnt\help\iishelp 
  
数据访问 
 \MSADC 
 c:\program files\common files\system\msadc 
  

示例文件包括在 Internet Information Server 5 中。  

启用或删除不需要的 COM 组件  

某些 COM 组件不是多数应用程序所必需的,应加以删除。特别是,应考虑禁用文件系统对象组件,但是要注意这将也会删除 Dictionary 对象。切记某些程序可能需要您禁用的组件。例如,Site Server 3.0 使用 File System Object。以下命令将禁用 File System Object:  

regsvr32 scrrun.dll /u  

删除 IISADMPWD 虚拟目录  

该目录可用于重置 Windows NT 和 Windows 2000 密码。它主要用于 Intranet 情况下,并不作为 IIS 5 的一部分安装,但是 IIS 4 服务器升级到 IIS 5 时,它并不删除。如果您不使用 Intranet 或如果将服务器连接到 Web 上,则应将其删除。有关该功能的详细信息,请参阅 Microsoft 知识库文章 Q184619。  

删除无用的脚本映射  

IIS 被预先配置为支持常用的文件名扩展如 .asp 和 .shtm 文件。IIS 接收到这些类型的文件请求时,该调用由 DLL 处理。如果您不使用其中的某些扩展或功能,则应删除该映射,步骤如下:  

打开 Internet 服务管理器。  
右键单击 Web 服务器,然后从上下文菜单中选择“属性”。  
主属性  
选择 WWW 服务 | 编辑 | 主目录 | 配置  
删除这些引用:  

如果您不使用... 
 删除该项: 
  
基于 Web 的密码重设 
 .htr 
  
Internet 数据库连接器(所有的 IIS 5 Web 站点应使用 ADO 或类似的技术) 
 .idc 
  
服务器端包括 
 .stm、.shtm 和 .shtml 
  
Internet 打印 
 .printer 
  
索引服务器 
 .htw、.ida 和 .idq 
  

要从 IIS 5 删除的扩展。  

重要 除非您特别需要使用 .htr 功能,否则应删除 .htr 扩展。  

检查 ASP 代码中的  
和查询字符串输入  

许多站点使用用户的输入以调用其它代码或直接创建 SQL 语句。换句话说,它们将该输入视作有效的、格式正确的、非恶意的输入。不应这样看待;仍存在许多攻击,用户的输入被误以为是有效的输入,而该用户仍可获得对服务器的访问权或引起破坏。应对每一个 输入和查询字符串进行检查,然后才能将它转到另一个可能使用外部资源(如文件系统或数据库)的进程或方法调用。  

可用 JScript V5 和 VBScript V5 正规表达式功能执行文本检查。以下示例代码可除去包含所有无效(不是 0-9a-zA-Z 或 _ 的字符)字符串:  

Set reg = New RegExp  
reg.Pattern = "\W+" ' One or more characters which 
' are NOT 0-9a-zA-Z or '_'  
strUnTainted = reg.Replace(strTainted, "")  


以下示例可除去 | 操作符后面的所有文本:  

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


同样,在用 Scripting File System Object 打开文件或创建文件时要千万小心。如果文件名是基于用户的输入的,则该用户可能试图打开一个串口或打印机。以下 JScript 代码可除去无效的文件名:  

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


版本 5 脚本引擎与 Perl 5.0 中的模式语法相同。有关更详细的信息,请在 http://msdn.microsoft.com/scripting/default.htm 参阅 V5 脚本引擎文档,有关示例,请参阅 http://msdn.microsoft.com/workshop/languages/clinic/scripting051099.asp 。  

禁用父路径  

“父路径”选项允许您在对诸如 MapPath 函数调用中使用“..”。在默认情况下,该选项处于启用状态,应该禁用它。禁用该选项的步骤如下:  

右键单击该 Web 站点的根,然后从上下文菜单中选择“属性”。  
单击“主目录”选项卡。  
单击“配置”。  
单击“应用程序选项”选项卡。  
取消选择“启用父路径”复选框。  
禁用-内容位置中的 IP 地址  

“内容-位置”标头可暴露通常在网络地址转换 (NAT) 防火墙或代理服务器后面

[关闭][返回]