无泪之城(SevenEleven)
有一个城市叫无泪之城。因为里面的人只有欢笑,没有泪水。可是后来变了,这个城市依然叫无泪之城,可是是因为这个城市里的人的眼泪,都流光了。

记得一位资深的安全人士曾经说过,从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),然后搜索“父路径”,里面有详细的设置方式,你可以看看!我就是这么弄明白的

posted on 2004-11-14 01:48  ^鬼才^  阅读(1017)  评论(0编辑  收藏  举报