任务稿:IIS6+SSL Based On 2k3

IIS提供了SSL安全加密传输功能,如下配置:

1、证书请求文件生成:

进入“控制面板→管理工具→Internet 信息服务(IIS)管理器”,在IIS管理器窗口中展开“网站”目录,右键点击要使用SSL安全加密机制功能的网站,在弹出菜单中选择“属性”,然后切换到“目录安全性”标签页,接着点击“服务器证书”按钮。在“IIS证书向导”窗口中选择“新建证书”选项,点击“下一步”,选中“现在准备证书请求,但稍后发送”,接着在“名称”栏中为该证书起个名字,在“位长”下拉列表中选择“密钥的位长”,这里要注意,位长不能设置的过大,否则会影响通信质量;接着设置证书的单位、部门、和地理信息,在站点“公用名称栏”中输入该网站的域名,然后指定证书请求文件的保存位置,这里笔者将该证书请求文本文件保存在 “certreq.txt”。这样就完成了证书请求文件的生成。

2、安装证书服务:

在“控制面板”中运行“添加或删除程序”,切换到“添加/删除Windows组件”页,在“Windows组件向导”对话框中,选中“证书服务”选项,接下来选择CA类型,这里笔者选择“独立根CA”,然后为该CA服务器起个名字,设置证书的有效期限,建议使用默认值“5年”即可,最后指定证书数据库和证书数据库日志的位置后,就完成了证书服务的安装。

3、使用证书请求文件申请证书:

运行Internet Explorer浏览器,在地址栏中输入“http://localhost/CertSrv/default.asp”。接着在“Microsoft 证书服务”欢迎窗口中点击“申请一个证书”链接,然后在证书申请类型中点击“高级证书申请”链接,在高级证书申请窗口中点击“使用BASE64编码的 CMC或PKCS#10文件提交…”链接,接着将证书请求文件的内容复制到“保存的申请”输入框中,这里笔者的证书请求文件内容保存在 “certreq.txt”,最后点击“提交”按钮。虽然完成了IIS网站证书的申请后,但这时它还处于挂起状态,需要颁发后才能生效。

4、颁发证书:

在“控制面板->管理工具”中,运行“证书颁发机构”程序。在“证书颁发机构”左侧窗口中展开目录,选中“挂起的申请”目录,在右侧窗口找到刚才申请的证书,鼠标右键点击该证书,选择“所有任务→颁发”。

5、备份证书:

打开刚刚颁发成功的证书,在 “证书”对话框中切换到“详细信息”标签页。点击“复制到文件”按钮,弹出证书导出对话框,一路下一步,在“要导出的文件”栏中指定文件名,这里笔者保存证书路径为“backup.cer”,最后点击“完成”。

6、使用证书:

进入“控制面板->管理工具->Internet 信息服务(IIS)管理器”,在IIS管理器窗口中展开“网站”目录,右键点击要使用SSL安全加密机制功能的网站,在弹出菜单中选择“属性”,然后切换到“目录安全性”标签页,接着点击“服务器证书”按钮。使用“IIS证书向导”窗口配置SSL,注意端口的选择,默认443。

IIS 5安全清单

IIS的安全性首先要基于Windows系统的安全性,详细部分请见相关文档。对IIS的安全控制可从以下四个方面进行:

* IP地址的域名安全限制(目录/文件安全性):视需求而定,可暂时阻止DOS;
* IIS身份验证安全限制(目录/文件安全性):
匿名访问:帐号IUSR_HOSTNAME,不过期,不能更改口令,Guest组成员;
基本身份验证:服务器上的真实用户名/密码,明文传输;
Digest身份验证:哈希散列值传输;(只使用Windows2k的域)
集成Windows验证:需要用相同用户名和密码登录;
* IIS权限
* NTFS权限

一、 为虚拟目录设置适当的 ACL

虽然一般情况下,虚拟目录的ACL取决于应用程序的需要,但一些通常的规则依然适用;

1、脚本和动态内容
可读
可执行脚本
2、静态内容
可读
3、可执行程序
可读
可执行
4、类数据库内容
可读
可写

推荐为每一种文件类型创建新的目录,在这些目录上仔细设置 ACL,并允许 ACL 继承到文件。至少建站第一步就应该在ACL中删除虚拟目录和Web页面的Everyone组。

例如,目录结构可能如下所示:
* myserverstatic (.html)
* myserverinclude (.inc)
* myserverscript (.asp)
* myserverexecutable (.dll)
* myserverimages (.gif, .jpeg)

此外,有两个目录需要特别注意:
* ftproot (FTP server)
* mailroot (SMTP server)

这两个目录上的 ACL 都是“Everyone(完全控制)”,应当根据您的功能设置更加严格的ACL,若不使用则不要安装。

对于仅开启IIS的主机,可以参考下列ACL设置(下面ACL采用的是极其严格的ACL,可能会对管理及SQL等的使用造成不便,应在此基础上逐项添加权限,才能做到权限最小化):

1.对于所有硬盘分区:
System 完全控制
Administrator 完全控制
允许继承
2.Program FilesCommon Files
Everyone 读取及运行 列出文件目录 读取
允许继承
3.webroot
IUSR_HOSTNAME 读取及运行 列出文件目录 读取
允许继承
4.Winntsystem32下除Inetsrv,Centsrv以外的所有目录
不允许继承
5.Winnt下除Downloaded Program Files、Help、IIS Temporary Compressed Files、Offline Web Pages、system32、Tasks、Temp、Web以外的所有目录
不允许继承
6.Winnt
Everyone 读取及运行 列出文件和目录 读取
允许继承
7.WinntTemp
Everyone 修改
允许继承

除上面提到的权限外,删除所有用户、组的权限。

二、 设置适当的 IIS 日志文件 ACL

请确保 IIS 生成的日志文件 (%systemroot%system32LogFiles) 上的 ACL 是:
Administrators(完全控制)
System(完全控制)
Everyone (RWC)

三、 启用日志记录

通过下列步骤使用 W3C 扩展日志记录格式:

1. 站点|属性|网站|启用日志
2. 活动日志格式|W3C 扩展日志文件格式|属性|扩展属性:
客户端 IP 地址
用户名
方法
URI 资源
Win32 状态
用户代理
服务器 IP 地址(如果多网卡)
服务器端口

当您检查日志时,请注意错误5,即被拒绝的访问。

[小知识]
如何察看错误代码所代表的意义?net helpmsg

四、 验证可执行内容的可信度

用 DumpBin 工具来查看可执行内容是否调用了某些 API。许多 Win32 开发工具都含有 DumpBin(tdump,dumpbin…)。

五、 在 IIS 服务器上更新根目录的 CA 证书

该过程包括两个步骤:

第一步:添加所有信任的新根目录证书颁发机构 (CA) 证书;
第二步:删除所有不信任的根目录 CA 证书;

请注意如果您不知道发布根目录证书的公司名称,那么就不应当信任他们!

注意: 不要删除 Microsoft 或 VeriSign 根目录。操作系统会大量使用它们。

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

例如Internet Information Server 5 中的示例文件:

IIS 示例 IISSamples c:inetpubiissamples
IIS 文档 IISHelp c:winnthelpiishelp
数据访问 MSADC c:program filescommon filessystemmsadc

七、 禁用或删除不需要的COM 组件

考虑禁用“文件系统对象”组件(FSO),但需要注意的是这样也会删除 Dictionary 对象。通常禁用COM组件的发式是直接卸载其链接文件(撤消注册),具体步骤是:regsvr32 *** /u;

例如:
下列命令将禁用“文件系统对象”:regsvr32 scrrun.dll /u

八、 删除 IISADMPWD 虚拟目录

该目录允许您重新设置 Windows NT 和 Windows 2000 密码。这主要是为 Intranet 方案设计的,并且不作为 IIS 5 的一部分来安装,但是在 IIS 4 服务器升级到 IIS 5 时将不会被删除。如果您不使用 Intranet 或者您将服务器连接到网站上,则应当将其删除。

有关此功能的详细信息,请参考Microsoft Knowledge Base文章Q184619。

九、 删除不使用的脚本映射

当 IIS 接收到针对其中某一类型文件的请求时,该调用由 DLL 进行处理。如果您不会用到其中某些扩展名或功能,请进行删除,方法如下:网站|属性|主目录|配置,然后删除下列引用:

* 基于网站的密码重置 .htr
* Internet 数据库连接器(所有 IIS 5 网站应当使用 ADO 或相似技术) .idc
* 采用SSI技术的服务器端包含程序 .stm, .shtm 和 .shtml
* Internet 打印 .printer
* 索引服务器 .htw, .ida , .idq

注意: 关于“Internet 打印”可以通过组策略和 Internet 服务管理器来配置。如果组策略设置和 Internet 管理器设置有冲突,那么组策略设置优先。默认组策略既不启用也不禁用“Internet 打印”。请选择“计算机配置”|“管理模板”|“打印”|“基于 Web 的打印”来禁用它。

十、 禁用父路径

父路径允许您在调用诸如 MapPath 等功能时使用“..”。默认状态下,该选项是启用的,您应当禁用它:网站|属性|主目录|配置|选项|启用父路径;

十一、 在“Content-Location”中禁用 IP 地址

“Content-Location”首部会暴露通常隐藏在网络地址转换 (NAT) 防火墙或代理服务器后的内部 IP 地址。如下设置后可以使服务器返回URL而不是IP地址:

将UseHostName添加到Metabase中的W3SVC键上;

例如: Set IISSchemaObject = GetObject(“IIS://Axqd/Schema/w3svc”)…

更简单的方法是使用IIS5.0提供的默认情况下安装在InetpubAdminscripts下面的ADSUTIL程序
(IIS 4.0在winntsystem32inetsrvadminsamples):

Adsutil set w3svc/UseHostName True

然后必须重启Web服务器。

有关禁用该选项的详细信息,请参阅知识库文章Q218180。IIS6.0目前没有提供这个问题的解决方案;

最后,关于针对DOS攻击的压力测试可以采用Microsoft Web Application Stress Tool;

关于IIS安全方面的工具,特别推荐IISLockDown以及URLSCAN(可从IISLockDown中分离出来);