如何提高IIS 6.0的安全性
管理提醒: 本帖被 无法显示 从 ◇-安装与使用 移动到本区(2008-03-21)没有任何系统是100%安全的,系统漏洞会不断地发现,这是因为黑客和系统管理员一样也在整天看着新闻组,收集着这方面的信息。黑与反黑之间的战斗会永远进行下去。Web 服务器通常是各种安全攻击的目标。其中一些攻击非常严重,足以对企业资产、工作效率和客户关系造成相当的破坏—所有攻击都会带来不便和麻烦。Web 服务器的安全是企业成功的关键。
初次安装 IIS 6.0 时,Web 服务器仅服务于或显示静态网页 (HTML),这降低了服务于动态网页或可执行文件、内容而带来的风险。默认情况下禁用 ASP 和 ASP.NET。由于 IIS 6.0 的默认设置禁用了 Web 服务通常使用的许多功能,所以,如何在降低服务器暴露给潜在攻击者的程度,同时配置 Web 服务器的其他功能呢?
一、减少 Web 服务器的攻击面,通过减少 Web 服务器的攻击面,或者降低服务器暴露给潜在攻击者的程度,来开始保护 Web 服务器的过程。例如,仅启用 Web 服务器正常运行所必需的组件、服务和端口:
1、 禁用面向 Internet 连接上的 SMB:开始---设置---控制面板---网络连接---本地连接---属性---清除“Microsoft 网络客户端”复选框---清除“Microsoft 网络的文件和打印机共享”复选框,然后单击“确定”。
SMB 使用的端口:
TCP 端口 139、TCP 和 UDP 端口 445 (SMB Direct Host)
2、禁用基于 TCP/IP 的 NetBIOS:我的电脑---属性---硬件---设备管理”器---单击查看---显示隐藏的设备---双击非即插即用驱动程序---右键单击“NetBios over Tcpip”---停用
NetBIOS 使用的端口: TCP 和 UDP 端口 137(NetBIOS 命名服务)、TCP 和 UDP 端口 138(NetBIOS 数据报服务)、TCP 和 UDP 端口 139(NetBIOS 会话服务)
上述过程不仅禁用 TCP 端口 445 和 UDP 端口 445 上的 SMB 直接宿主侦听者,而且禁用 Nbt.sys 驱动程序,并需要重新启动系统。
3、 配置 IIS 组件和服务,只选择基本的 IIS 组件和服务。IIS 6.0 除了包括 WWW 服务之外,还包括一些子组件和服务,例如 FTP 服务和 SMTP 服务。为了最大限度地降低针对特定服务和子组件的攻击风险,建议您只选择网站和 Web 应用程序正确运行所必需的服务和子组件。开始---控制面板--- 添加或删除程序---添加/删除 Windows 组件---应用程序服务器单击详细信息--- Internet 信息服务 (IIS)单击详细信息---然后通过选择或清除相应组件或服务的复选框,来选择或取消相应的 IIS 组件和服务。
IIS 子组件和服务的推荐设置:
禁用:后台智能传输服务 (BITS) 服务器扩展;FTP 服务;FrontPage 2002 Server Extensions;Internet 打印;NNTP 服务
启用:公用文件;Internet 信息服务管理器;万维网服务
二、建议您删除未使用的帐户,因为攻击者可能发现这些帐户,然后利用这些帐户来获取您服务器上的数据和应用程序的访问权。始终使用强密码,因为弱密码增加了成功进行强力攻击或字典攻击(即攻击者竭尽全力地猜密码)的可能性。使用以最低特权运行的帐户。否则,攻击者可以通过使用以高级特权运行的帐户来获取未经授权的资源的访问权。
1、禁用来宾帐户(Guest),采用匿名连接来访问 Web 服务器时,使用来宾帐户。在默认安装 Windows Server 2003 时,禁用来宾帐户。 要限制对服务器的匿名连接,请确保禁用来宾帐户。
2、重命名管理员帐户,默认的本地管理员帐户因其在计算机上的更高特权而成为恶意用户的目标。要增强安全性,请重命名默认的管理员帐户并分配一个强密码。
3、重命名 IUSR 帐户,默认的匿名 Internet 用户帐户 IUSR_ComputerName 是在 IIS 安装期间创建的。ComputerName 的值是安装 IIS 时服务器的 NetBIOS 名称。
4、在 IIS 元数据库中更改 IUSR 帐户的值:单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”, 右键单击“本地计算机”,然后单击“属性”。 选中“允许直接编辑配置数据库”复选框,然后单击“确定”。 浏览至 MetaBase.xml 文件的位置,默认情况下为 C:/Windows/system32/inetsrv。右键单击 MetaBase.xml 文件,然后单击“编辑”。 搜索“AnonymousUserName”属性,然后键入 IUSR 帐户的新名称。在“文件”菜单上,单击“退出”,然后单击“是”。
三、使用应用程序池来隔离应用程序,使用 IIS 6.0,可以将应用程序隔离到应用程序池。应用程序池是包含一个或多个 URL 的一个组,一个工作进程或者一组工作进程对应用程序池提供服务。因为每个应用程序都独立于其他应用程序运行,因此,使用应用程序池可以提高 Web 服务器的可靠性和安全性。在 Windows 操作系统上运行进程的每个应用程序都有一个进程标识,以确定此进程如何访问系统资源。每个应用程序池也有一个进程标识,此标识是一个以应用程序需要的最低权限运行的帐户。可以使用此进程标识来允许匿名访问您的网站或应用程序。
1、创建应用程序池:单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 双击本地计算机,右键单击“应用程序池”,单击“新建”,然后单击“应用程序池”。 在“应用程序池 ID”框中,为应用程序池键入一个新 ID(例如,ContosoAppPool)。在“应用程序池设置”下,单击“Use default settings for the new application pool”(使用新应用程序池的默认设置),然后单击“确定”。
2、将网站或应用程序分配到应用程序池:单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 右键单击您想要分配到应用程序池的网站或应用程序,然后单击“属性”。 根据您选择的应用程序类型,单击“主目录”、“虚拟目录”或“目录”选项卡。如果您将目录或虚拟目录分配到应用程序池,则验证“应用程序名”框是否包含正确的网站或应用程序名称或者如果在“应用程序名”框中没有名称,则单击“创建”,然后键入网站或应用程序的名称在“应用程序池”列表框中,单击您想要分配网站或应用程序的应用程序池的名称,然后单击“确定”。
四、配置文件和目录的安全使用强访问控制来帮助保护敏感的文件和目录。在多数情况下,允许对特定帐户的访问比拒绝对特定帐户的访问更加有效。如有可能,请将访问设置在目录级。当文件添加到文件夹时,它们继承文件夹的权限,因此您不需要采取进一步的措施。
1、重新定位和设置 IIS 日志文件的权限,为了增强 IIS 日志文件的安全,您应该将文件重新定位到非系统驱动器,此驱动器格式化为使用 NTFS 文件系统。此位置应该与网站内容的位置不同。单击“开始”,右键单击“我的电脑”,然后单击“资源管理器”。 浏览至您想要重新定位 IIS 日志文件的位置。右键单击您想要重新定位 IIS 日志文件的上一级目录,单击“新建”,然后单击“文件夹”。 键入文件夹的名称,例如 ContosoIISLogs,然后按 Enter 键。单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 右键单击网站,然后单击“属性”。 单击“网站”选项卡,然后单击“启用日志记录”框架中的“属性”。 在“常规属性”选项卡中,单击“浏览”,然后导航到您刚才创建的文件夹以存储 IIS 日志文件,再确定。(注意:如果您在原来的位置 Windows/System32/Logfiles 上有 IIS 日志文件,则必须将这些文件手动移动到新位置。IIS 不为您移动这些文件。)
2、设置 IIS 日志文件的 ACL,单击“开始”,右键单击“我的电脑”,然后单击“资源管理器”。 浏览至日志文件所在的文件夹。右键单击此文件夹,单击“属性”,然后单击“安全”选项卡。在顶部窗格中,单击“Administrators”(管理员),确保底部窗格中的权限设置为“完全控制”。 在顶部窗格中,单击“System”(系统),确保底部窗格中的权限设置为“完全控制”,然后单击“确定”。
3、配置 IIS 元数据库权限,单击“开始”,右键单击“我的电脑”,然后单击“资源管理器”。 浏览至 Windows/System32/Inetsrv/MetaBase.xml 文件,右键单击此文件,然后单击“属性”。 单击“安全”选项卡,确认只有 Administrators 组的成员和 LocalSystem 帐户拥有对元数据库的完全控制访问权,删除所有其他文件权限,然后单击“确定”。
4、禁用 FileSystemObject 组件,ASP、Windows 脚本主机和其他编写脚本的应用程序使用 FileSystemObject (FSO) 组件来创建、删除、获取信息以及操纵驱动器、文件夹和文件。可考虑禁用 FSO 组件,但要注意,这也将删除字典对象。另外,验证是否没有其他程序需要这个组件:单击“开始”,单击“运行”,在“打开”框中键入 cmd,然后单击“确定”。 切换到 C:/Windows/system32 目录。在命令提示符处,键入 regsvr32 scrrun.dll /u ,然后按 Enter 键。出现:DllUnregisterServer in scrrun.dll succeeded,再确定。
五、保护网站和虚拟目录,将 Web 根目录和虚拟目录重新定位到非系统分区,以帮助防御目录遍历攻击。这些攻击允许攻击者执行操作系统程序和工具。由于这种攻击不能遍历所有驱动器,因此,将网站内容重新定位到另一个驱动器可以增强对这些攻击的防护。
1、将网站内容移动到非系统驱动器,不要使用默认的 /Inetpub/Wwwroot 目录作为网站内容的位置。例如,如果系统安装在 C: 驱动器,则将内容目录移动到 D: 驱动器,以减轻目录遍历攻击(这种攻击试图浏览 Web 服务器的目录结构)带来的危险。一定要验证是否所有的虚拟目录都指向新驱动器。
2、删除系统驱动器上的网站内容
六、配置网站权限 可以为您的 Web 服务器配置特定站点、目录和文件的访问权。这些权限可以应用于所有用户,无论用户有何特定的访问权。
七、配置文件系统目录的权限 ,IIS 6.0 依靠 NTFS 权限来帮助保护单个文件和目录不会受到未经授权的访问。网站权限应用于试图访问网站的任何人,与此不同的是,您可以使用 NTFS 权限来定义哪些用户可以访问您的内容,以及如何允许这些用户操作这些内容。为了增强安全性,同时使用网站权限和 NTFS 权限。
1、访问控制列表 (ACL) 指示哪些用户或组有访问或修改特定文件的权限。不是在每个文件上设置 ACL,而是为每种文件类型创建新目录,在每个目录上设置 ACL,然后允许文件从它们所在的目录中继承这些权限。单击“开始”,右键单击“我的电脑”,然后单击“资源管理器”。 浏览至包含网站内容的文件,然后单击网站内容的最上层的文件夹。在“文件”菜单中,单击“新建”,然后单击“文件夹”,以便在网站的内容目录中创建一个新文件夹。为文件夹命名,然后按 Enter 键。按 Ctrl 键,然后选择您想要保护的每个网页。右键单击这些网页,然后单击“复制”。 右键单击新文件夹,然后单击“粘贴”。( 注意: 如果您已经创建了到这些网页的链接,则必须更新这些链接以便反映站点内容的新位置。)
2、设置 Web 内容的权限,单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 右键单击您想要配置的网站的文件夹、网站、目录、虚拟目录或文件,然后单击“属性”。 根据您想要授权或拒绝访问的类型,选择或清除下列任何复选框(如果可用):
脚本源文件访问。用户可以访问源文件。如果选择“读”,则可以读源文件;如果选择“写”,则可以写源文件。脚本源访问包括脚本的源代码。如果“读”或“写”均未选择,则此选项不可用。
读(默认情况下选择)。用户可以查看目录或文件的内容和属性。
写。用户可以更改目录或文件的内容和属性。
目录浏览。用户可以查看文件列表和集合。
日志访问。对网站的每次访问创建日志项。
检索资源。允许检索服务检索此资源。这允许用户搜索资源。
在“执行权限”列表框中,选择脚本执行的相应级别:
无。不在服务器上运行脚本和可执行文件(例如,文件类型为 .exe 的文件)。
仅脚本。只在服务器上运行脚本。
脚本和可执行文件。在服务器运行脚本和可执行文件。
单击“确定”。如果目录的子节点配置了不同的网站权限,则出现“继承覆盖”框。如果出现“继承覆盖”框,在“子节点”列表中选择您想要应用目录的 Web 权限的子节点或者单击“全选”来设置属性,以便将 Web 权限应用到所有子节点。如果您不只看到一个“继承覆盖”对话框,则从“子节点”列表中选择子节点,或者单击“全选”,然后单击“确定”,以便将此属性的 Web 权限应用到子节点。如果一个子节点属于您已经更改了网站权限的目录,此节点还为特定选项设置了网站权限,则子节点的权限将覆盖您为目录设置的权限。如果您想要将目录级的 Web 权限应用到子节点,则必须在“继承覆盖”框中选择这些子节点。
八、在 Web 服务器上配置安全套接字层 (SSL) 安全功能,以便验证内容的完整性,验证用户身份并对网络传输加密。SSL 安全依靠服务器证书,此证书允许用户在传输个人信息(例如信用卡帐号)之前验证 Web 网站的身份。每个网站只能有一个服务器证书。
1、获取并安装服务器证书,证书由称作证书颁发机构 (CA) 的非 Microsoft 组织颁发。服务器证书通常与 Web 服务器有关,尤其与配置了 SSL 的网站有关。您必须生成证书请求,将此请求发送到 CA,然后在接收到 CA 的证书之后安装此证书。证书依靠一对加密密钥(一个公钥和一个私钥)来确保安全。当您生成服务器证书请求时,您实际上正在生成私钥。从 CA 接收到的服务器证书包含公钥。单击“开始”,右键单击“我的电脑”,然后单击“管理”。 双击“服务和应用程序”部分, 然后双击“Internet 信息服务”。 右键单击您想要安装服务器证书的网站,然后单击“属性”。 单击“目录安全”选项卡。在“安全通信”部分中,单击“服务器证书”,以启动“Web 服务器证书向导”,然后单击“下一步”。 单击“创建一个新证书”,然后单击“下一步”。 单击“立即准备请求,但稍后发送”,然后单击“下一步”。 在“名称”框中,键入容易记住的名称。(默认的名称是您正在生成证书请求的网站名,例如http://www.abc.com)指定位长度,然后单击“下一步”。 加密密钥的位长度确定了加密的强度。大多数非 Microsoft CA 都希望您最少选择 1024 位。在“组织”部分,键入您的组织和组织单位信息。确保此信息的准确性,并且“组织”字段中不包含逗号,然后单击“下一步”。 在“站点的公用名称”部分,键入含域名的宿主计算机的名称,然后单击“下一步”。 键入您的地理信息,然后单击“下一步”。 将此文件保存为 .txt 文件。(默认的文件名和位置是 C:/certreq.txt。)以下示例显示证书请求文件的特征:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDATCCAmoCAQAwbDEOMAwGA1UEAxMFcGxhbjgxDDAKBgNVBAsTA1BTUzESMBAG
A1UEChMJTWljcm9zb2Z0MRIwEAYDVQQHEwlDaGFybG90dGUxFzAVBgNVBAgTDk5v
cnRoIENhcm9saW5hMQswCQYDVQQGEwJVUzCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAtW1koGfdt+EoJbKdxUZ+5vE7TF1ZuT+xaK9jEWHESfw11zoRKrHzHN0f
IASnwg3vZ0ACteQy5SiWmFaJeJ4k7YaKUb6chZXG3GqL4YiSKFaLpJX+YRiKMtmI
JzFzict5GVVGHsa1lY0BDYDO2XOAlstGlHCtENHOKpzdYdANRg0CAwEAAaCCAVMw
GgYKKwYBBAGCNw0CAzEMFgo1LjAuMjE5NS4yMDUGCisGAQQBgjcCAQ4xJzAlMA4G
A1UdDwEB/wQEAwIE8DATBgNVHSUEDDAKBggrBgEFBQcDATCB/QYKKwYBBAGCNw0C
AjGB7jCB6wIBAR5aAE0AaQBjAHIAbwBzAG8AZgB0ACAAUgBTAEEAIABTAEMAaABh
AG4AbgBlAGwAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBp
AGQAZQByA4GJAGKa0jzBn8fkxScrWsdnU2eUJOMUK5Ms87Q+fjP1/pWN3PJnH7x8
MBc5isFCjww6YnIjD8c3OfYfjkmWc048ZuGoH7ZoD6YNfv/SfAvQmr90eGmKOFFi
TD+hl1hM08gu2oxFU7mCvfTQ/2IbXP7KYFGEqaJ6wn0Z5yLOByPqblQZAAAAAAAA
AAAwDQYJKoZIhvcNAQEFBQADgYEAhpzNy+aMNHAmGUXQT6PKxWpaxDSjf4nBmo7o
MhfC7CIvR0McCQ+CBwuLzD+UJxl+kjgb+qwcOUkGX2PCZ7tOWzcXWNmn/4YHQl0M
GEXu0w67sVc2R9DlsHDNzeXLIOmjUl935qy1uoIR4V5C48YNsF4ejlgjeCFsbCoj
Jb9/2RM=
-----END NEW CERTIFICATE REQUEST-----
确认请求的详细信息,单击“下一步”,然后单击“完成”。
2、 提交服务器证书请求,联系 CA,查找提交请求的要求。将上述过程中创建的 .txt 文件的内容复制成 CA 要求的请求格式。将请求发送给您的 CA。接收到 CA 的证书后,准备在您的 Web 服务器上安装此证书。
3、 安装服务器证书,将证书 (.cer) 文件复制到 C:/Windows/System32/CertLog 文件夹。单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 右键单击您想要安装服务器证书的网站,然后单击“属性”。 单击“目录安全”选项卡。在“安全通信”部分中,单击“服务器证书”,以启动“Web 服务器证书向导”,然后单击“下一步”。 单击“处理挂起的请求并安装证书”,然后单击“下一步”。 浏览至您接收到的 CA 证书。单击“下一步”两次,然后单击“完成”。
4、 在 Web 服务器上强制和启用 SSL 连接,
A 、强制SSL连接:安装服务器证书之后,必须在 Web 服务器上强制 SSL 连接。然后,必须启用 SSL 连接。单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 右键单击您想要强制 SSL 连接的网站,然后单击“属性”。 单击“目录安全”选项卡。在“安全通信”部分,单击“编辑”。 单击“要求安全通道 (SSL)”,选择加密长度,然后单击“确定”。 注意:如果您指定 128 位加密,使用 40 位或 56 位长度浏览的客户端计算机不能与您的站点通信,除非将其浏览器升级到支持 128 位加密的版本。
B 、启用 SSL 连接:单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“Internet 信息服务 (IIS) 管理器”。 键单击您想要启用 SSL 连接的网站,然后单击“属性”。 单击“网站”选项卡。在“网站标识”部分,验证“SSL 端口”是否填充了数值 443。然后单击“高级”。通常出现两个对话框,在“此网站的多个标识”框中列出此网站 IP 地址和端口。在“此网站的多个 SSL 标识”字段下,如果还没有列出端口 443,则单击“添加”。选择服务器的 IP 地址,在“SSL 端口”框中键入数值“443”,然后单击“确定”。
现在IIS已经安全很多了,但是,黑客会不断寻找新漏洞来攻破你的系统,所以这种安全性设置只是与黑客进行的第一场战役