初次安装iis6.0时,web服务器仅服务于或显示静态网页(html),这降低了服务于动态网页或可执行文件、内容而带来的风险。默认情况下禁用asp和asp.net。由于iis6.0的默认设置禁用了web服务通常使用的许多功能,所以,如何在降低服务器暴露给潜在攻击者的程度,同时配置web服务器的其他功能呢?
一、减少web服务器的攻击面,通过减少web服务器的攻击面,或者降低服务器暴露给潜在攻击者的程度,来开始保护web服务器的过程。例如,仅启用web服务器正常运行所必需的组件、服务和端口:
1、禁用面向internet连接上的smb:开始---设置---控制面板---网络连接---本地连接---属性---清除“microsoft网络客户端”复选框---清除“microsoft网络的文件和打印机共享”复选框,然后单击“确定”。
smb使用的端口:
tcp端口139、tcp和udp端口445(smbdirecthost)
2、禁用基于tcp/ip的netbios:我的电脑---属性---硬件---设备管理”器---单击查看---显示隐藏的设备---双击非即插即用驱动程序---右键单击“netbiosovertcpip”---停用
netbios使用的端口:
tcp和udp端口137(netbios命名服务)、tcp和udp端口138(netbios数据报服务)、tcp和udp端口139(netbios会话服务)
上述过程不仅禁用tcp端口445和udp端口445上的smb直接宿主侦听者,而且禁用nbt.sys驱动程序,并需要重新启动系统。
3、配置iis组件和服务,只选择基本的iis组件和服务。iis6.0除了包括www服务之外,还包括一些子组件和服务,例如ftp服务和smtp服务。为了最大限度地降低针对特定服务和子组件的攻击风险,建议您只选择网站和web应用程序正确运行所必需的服务和子组件。开始---控制面板---添加或删除程序---添加/删除windows组件---应用程序服务器单击详细信息---internet信息服务(iis)单击详细信息---然后通过选择或清除相应组件或服务的复选框,来选择或取消相应的iis组件和服务。
iis子组件和服务的推荐设置:
禁用:后台智能传输服务(bits)服务器扩展;ftp服务;frontpage2002serverextensions;internet打印;nntp服务
启用:公用文件;internet信息服务管理器;万维网服务
二、建议您删除未使用的帐户,因为攻击者可能发现这些帐户,然后利用这些帐户来获取您服务器上的数据和应用程序的访问权。始终使用强密码,因为弱密码增加了成功进行强力攻击或字典攻击(即攻击者竭尽全力地猜密码)的可能性。使用以最低特权运行的帐户。否则,攻击者可以通过使用以高级特权运行的帐户来获取未经授权的资源的访问权。
1、禁用来宾帐户(guest),采用匿名连接来访问web服务器时,使用来宾帐户。在默认安装windowsserver2003时,禁用来宾帐户。要限制对服务器的匿名连接,请确保禁用来宾帐户。
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帐户的新名称。在“文件”菜单上,单击“退出”,然后单击“是”。
三、使用应用程序池来隔离应用程序,使用iis6.0,可以将应用程序隔离到应用程序池。应用程序池是包含一个或多个url的一个组,一个工作进程或者一组工作进程对应用程序池提供服务。因为每个应用程序都独立于其他应用程序运行,因此,使用应用程序池可以提高web服务器的可靠性和安全性。在windows操作系统上运行进程的每个应用程序都有一个进程标识,以确定此进程如何访问系统资源。每个应用程序池也有一个进程标识,此标识是一个以应用程序需要的最低权限运行的帐户。可以使用此进程标识来允许匿名访问您的网站或应用程序。
1、创建应用程序池:单击“开始”,单击“控制面板”,再单击“管理工具”,然后双击“internet信息服务(iis)管理器”。双击本地计算机,右键单击“应用程序池”,单击“新建”,然后单击“应用程序池”。在“应用程序池id”框中,为应用程序池键入一个新id(例如,contosoapppool)。在“应用程序池设置”下,单击“usedefaultsettingsforthenewapplicationpool”(使用新应用程序池的默认设置),然后单击“确定”。
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目录。在命令提示符处,键入regsvr32scrrun.dll/u,然后按enter键。出现:dllunregisterserverinscrrun.dllsucceeded,再确定。
五、保护网站和虚拟目录,将web根目录和虚拟目录重新定位到非系统分区,以帮助防御目录遍历攻击。这些攻击允许攻击者执行操作系统程序和工具。由于这种攻击不能遍历所有驱动器,因此,将网站内容重新定位到另一个驱动器可以增强对这些攻击的防护。
1、将网站内容移动到非系统驱动器,不要使用默认的\inetpub\wwwroot目录作为网站内容的位置。例如,如果系统安装在c:驱动器,则将内容目录移动到d:驱动器,以减轻目录遍历攻击(这种攻击试图浏览web服务器的目录结构)带来的危险。一定要验证是否所有的虚拟目录都指向新驱动器。
2、删除系统驱动器上的网站内容
六、配置网站权限可以为您的web服务器配置特定站点、目录和文件的访问权。这些权限可以应用于所有用户,无论用户有何特定的访问权。
七、配置文件系统目录的权限,iis6.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服务器证书向导”,然后单击“下一步”。单击“创建一个新证书”,然后单击“下一步”。单击“立即准备请求,但稍后发送”,然后单击“下一步”。在“名称”框中,键入容易记住的名称。(默认的名称是您正在生成证书请求的网站名,例如)指定位长度,然后单击“下一步”。加密密钥的位长度确定了加密的强度。大多数非microsoftca都希望您最少选择1024位。在“组织”部分,键入您的组织和组织单位信息。确保此信息的准确性,并且“组织”字段中不包含逗号,然后单击“下一步”。在“站点的公用名称”部分,键入含域名的宿主计算机的名称,然后单击“下一步”。键入您的地理信息,然后单击“下一步”。将此文件保存为.txt文件。(默认的文件名和位置是c:\certreq.txt。)以下示例显示证书请求文件的特征:
-----beginnewcertificaterequest-----
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=
-----endnewcertificaterequest-----
确认请求的详细信息,单击“下一步”,然后单击“完成”。
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已经安全很多了,但是,黑客会不断寻找新漏洞来攻破你的系统,所以这种安全性设置只是与黑客进行的第一场战役。