声明:非本人原创,收集学习之用!虽然有点老`不过还是能用的到的! IIS和用户环境的安全问题: 记得一位资深的安全人士曾经说过,从Windows 2000 Server开始,本身的系统漏洞和网络漏洞已经不是那么多了,甚至可以说Windows本身安全系数已经超越了LINUX系统本身,(这里我只是引用语句,希望不会引发Windows和LINUX向来的争论)但由于Windows周边产品漏洞和不安全因数太多,尤其是IIS服务。才导致人人说它不安全。 由于系统的安全问题实在是太过于庞大,所分的体系也非常多,不可能面面具到,所以我根据个人经验说几个和虚拟主机密切相关的安全问题,但由于这些问题要想得到彻底的解决说明的话,那需要太多的篇幅,这里我也只能指出这些问题,和解决这些问题的思路。 支持ASP系统的IIS安全问题: 在支持ASP的IIS系统中,主要问题有两个,一个是由于ASP页面的输入框引起的安全攻击。在ASP页面中,我们经常可以看见输入框,如登录帐号、密码、查询、手机等等..这些控件其实是很危险的,因为这些控件的后台往往是连接着数据库,(SQL、Oracle等)有经验的程序员可以通过这些输入框输入数据库命令,在通过系统本身的数据库执行后,得到数据库帐号和密码。那也意味着离得到SYSTEM或Administrator帐号不远了。所以,一般在做ASP页面时,我们在有这些输入框的窗口上都做一些限制,如最多只能输入多少个字符、哪些特殊字符不允许输入等等。但现在很少有网站能做到滴水不漏的,可能也是因为工作量太大的缘故吧:( 第二个问题是FileSystemObject这个组件为 ASP 提供了对默认的Windows Server服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作。权限实在是太大。也导致一些恶意虚拟主机租借用户利用这个ASP组件来攻击和控制系统。所以在不是必要的情况下,请不要启用它。太危险了。 基本系统设置安全问题: 一、端口设置。端口是计算机和外部网络相连的逻辑接口,也是计算机的第一道屏障,由于做虚拟主机的系统一般不需要开太多的端口,所以可以在网卡属性、Internet协议(TCP/IP)属性、高级、选项、TCP/IP筛选属性里进行添加。不过Windows Server TCP/IP筛选设置做的有点问题:只允许开哪些端口,不允许关哪些端口,郁闷吧。 二、IIS设置:首先,把C盘中的默认的IIS目录Inetpub彻底删掉,在Internet信息服务(IIS)管理器中将默认WEB网站给停止,从新建立你所需要的WEB发布站点,但注意,请把你要发布站点的目录建立在其他盘符,并不要给其命名一些相对简单或容易猜中的名字,如WEB、IIS、Inetpub等。其次,在Internet信息服务(IIS)管理器中删除在你虚拟主机上不想用到的文件名映射,如,你的系统只需要支持ASP和HTML的话,那只要保留这个两个文件名映射就可以了,其他的都可以删除,步骤为在Internet信息服务(IIS)管理器中右击主机、属性、WWW服务、编辑、主目录配置、应用程序映射,然后就开始一个个删吧。最后在的应用程序调试书签内将脚本错误消息改为发送文本就基本可以了。 三、预防DoS: DOS:即Denial Of Service,拒绝服务的缩写,原理就是生产出大量的数据包让服务器不停的处理,导致服务器不能对其他的数据产生响应。在注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中更改以下值可以帮助你防御一定强度的DoS攻击 SynAttackProtect REG_DWORD 2 EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1 EnableDeadGWDetect REG_DWORD 0 KeepAliveTime REG_DWORD 300,000 PerFORMRouterDiscovery REG_DWORD 0 EnableICMPRedirects REG_DWORD 0 四、工作进程隔离:在虚拟主机上经常会出现由于某个用户WEB站点的应用程序出错,进入无限循环,导致服务器资源大量消耗,最终死机的情况,这个问题在以往的IIS中是很难解决的,有时还得借助第三方软件。 但现在,IIS 6.0 引入了工作进程隔离模式,该模式可以在隔离环境中运行所有的 Web 应用程序。当在工作进程隔离模式下运行 IIS 时,可以将应用程序配置成在单独的应用程序池中运行。每个应用程序池在逻辑上表示一个可配置的工作进程,并且链接到池中的应用程序。工作进程彼此独立运行;它们可能失败,但不会影响其他工作进程。应用程序池保护其中的应用程序免受支持其他应用程序池的工作进程的影响。这样,就可以避免应用程序相互影响。 在工作进程隔离模式下,超文本传输协议 (HTTP) 请求被直接路由到服务于已配置的应用程序的内核应用程序池队列。服务于应用程序池的工作进程会将请求直接从该队列中拉出,避免了进程切换的开销。为进一步保护 WWW 服务,IIS 6.0 会隔离关键的万维网发布服务组件,如 HTTP 协议堆栈和 WWW 服务管理和监控,避免其受到在工作进程中运行的第三方代码的影响。HTTP 协议堆栈接受 WWW 服务请求并将其排入队列。当工作进程处于不正常的状态并因此中断处理请求时,HTTP 协议堆栈会继续处理请求。同时,WWW 服务将检测不正常的工作进程并将其关闭。如果要求新工作进程为请求提供服务,WWW 服务会启动一个新工作进程以便从 HTTP 协议堆栈中获取队列中的请求。即使工作进程失败,WWW 服务仍会继续处理请求并保护用户免于丢失服务。打开 Internet信息服务(IIS)管理器,展开服务器,右键点击应用程序池,选择属性。就可以在弹出的对话框中根据自己的系统环境进行进程隔离设置了。 由于系统环境比较多样化,所以很难有一个设置的标准,所以具体的设置请参考Windows 2003的帮助。
五、查看事件查看器:作为一个网管就应该时时刻刻的观察服务器的安全性,而事件查看器可以反映系统80%的安全情况,这需要我们要养成每天分析事件查看器的习惯。一般情况是每天早晚各查看一次,并保留一个星期的日志。 当然关于安全的问题,这是一个永远也说不完的话题,希望本文能起到抛砖引玉的目的。谢谢! 1 类似 ../ 父路径的问题.IIS6 为提高安全性,默认设置是禁止使用父路径,所以你的程序会出错,解决方法也很简单,在IIS6的站点属性中选择“使用父路径”即可。
IIS6==>站点属性==>主目录==>配置==>选项==>启用父路径 这样就可以了, 告诉你个详细的方法,在IIS6里点帮助(F1),然后搜索“父路径”,里面有详细的设置方式,你可以看看!我就是这么弄明白的 关于如何构建免受FSO威胁虚拟主机的文章 : 现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2000 下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。 如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。 在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。 下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。 如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”: 在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.xxx.xxxx/ 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”: 现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置: 在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡: 刚建立的帐号默认是属于“Users”组,选中该组,点“删除”: 现在出现的是如下图所示,此时再点“添加”: 在弹出的“选择 组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”: 出现的就是如下图所示的内容,点“确定”关闭此对话框: 打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”: 弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:\VHOST1”这个文件夹: 暂时先不管刚才的“第一虚拟主机 属性”对话框,切换到“资源管理器”,找到“F:\VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉: 此时会弹出如下图所示的“安全”警告,点“删除”: 此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用“删除”将其清空),然后点“添加”按钮。 将如图中所示的“Administrator”及在前面所创建的新帐号“IUSR_VHOST1”添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将“Guests”组、“IUSR_机器名”这些匿名访问的帐号添加上去! 再切换到前面打开的“第一虚拟主机 属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”: 在弹出的“验证方法”对方框(如下图所示),点“编辑”: 弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”: 在“选择 用户”对话框中找到前面创建的新帐号“IUSR_VHOST1”,双击: 此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码: 再确定一遍密码: OK,完成了,点确定关闭这些对话框。 经此设置后,“第一虚拟主机”的用户,使用 ASP 的 FileSystemObject 组件也只能访问自己的目录:F:\VHOST1 下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。 另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。 禁止IPC连接的注册表文件: 相信能看的懂的一部分人应该知道如何把下面的信息变成 .reg 注册表文件,不懂也没关系先复制 (主阿!但愿“您”会复制) Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "Authentication Packages"=hex(7):6d,00,73,00,76,00,31,00,5f,00,30,00,00,00,00,\ 00 "Bounds"=hex:00,30,00,00,00,20,00,00 "Notification Packages"=hex(7):52,00,41,00,53,00,53,00,46,00,4d,00,00,00,4b,00,\ 44,00,43,00,53,00,56,00,43,00,00,00,57,00,44,00,49,00,47,00,45,00,53,00,54,\ 00,00,00,73,00,63,00,65,00,63,00,6c,00,69,00,00,00,00,00 "Security Packages"=hex(7):6b,00,65,00,72,00,62,00,65,00,72,00,6f,00,73,00,00,\ 00,6d,00,73,00,76,00,31,00,5f,00,30,00,00,00,73,00,63,00,68,00,61,00,6e,00,\ 6e,00,65,00,6c,00,00,00,77,00,64,00,69,00,67,00,65,00,73,00,74,00,00,00,00,\ 00 "LsaPid"=dword:000001dc "SecureBoot"=dword:00000001 "auditbaseobjects"=dword:00000000 "crashonauditfail"=dword:00000000 "disabledomaincreds"=dword:00000000 "everyoneincludesanonymous"=dword:00000000 "fipsalgorithmpolicy"=dword:00000000 "forceguest"=dword:00000000 "fullprivilegeauditing"=hex:00 "limitblankpassworduse"=dword:00000001 "lmcompatibilitylevel"=dword:00000002 "nodefaultadminowner"=dword:00000000 "nolmhash"=dword:00000000 "restrictanonymous"=dword:00000001 "restrictanonymoussam"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\AccessProviders] "ProviderOrder"=hex(7):57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4e,00,\ 54,00,20,00,41,00,63,00,63,00,65,00,73,00,73,00,20,00,50,00,72,00,6f,00,76,\ 00,69,00,64,00,65,00,72,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\AccessProviders\Windows NT Access Provider] "ProviderPath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\ 00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\ 6e,00,74,00,6d,00,61,00,72,00,74,00,61,00,2e,00,64,00,6c,00,6c,00,00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit\PerUserAuditing] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Audit\PerUserAuditing\System] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Data] "Pattern"=hex:37,47,c9,50,e3,8d,c9,9d,ac,99,4f,6e,b2,28,b4,1a [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\GBG] "GrafBlumGroup"=hex:ea,e6,c1,b1,d3,f5,5c,03,ad [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\JD] "Lookup"=hex:e3,56,87,01,32,e6 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Domains] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0] "Auth2"="RASSFM" "ntlmminclientsec"=dword:00000000 "ntlmminserversec"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Skew1] "SkewMatrix"=hex:ed,2c,b1,f1,96,85,a4,16,36,95,b7,2e,c8,1a,b9,82 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SSO] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SSO\Passport1.4] "SSOURL"="http://www.passport.com" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SspiCache] "Time"=hex:10,ce,7f,67,24,d4,c4,01 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SspiCache\digest.dll] "Name"="Digest" "Comment"="Digest SSPI Authentication Package" "Capabilities"=dword:00004050 "RpcId"=dword:0000ffff "Version"=dword:00000001 "TokenSize"=dword:0000ffff "Time"=hex:00,e0,7c,64,58,f4,c2,01 "Type"=dword:00000031 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SspiCache\msapsspc.dll] "Name"="DPA" "Comment"="DPA Security Package" "Capabilities"=dword:00000037 "RpcId"=dword:00000011 "Version"=dword:00000001 "TokenSize"=dword:00000300 "Time"=hex:00,e0,7c,64,58,f4,c2,01 "Type"=dword:00000031 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\SspiCache\msnsspc.dll] "Name"="MSN" "Comment"="MSN Security Package" "Capabilities"=dword:00000037 "RpcId"=dword:00000012 "Version"=dword:00000001 "TokenSize"=dword:00000300 "Time"=hex:00,e0,7c,64,58,f4,c2,01 "Type"=dword:00000031 建一文本文档 .txt 以上内容粘贴进去, 然后文件→另存为→起名叫“随你起.reg”→保存→鼠标双击→确定
|