用Windows 2003搭建自己的虚拟主机平台(三)
二、用户使用磁盘空间的容量限制(磁盘配额)在配置之前,让我们先了解一下磁盘配额管理的一些基础知识,以便我们更容易理解它的工作方法。Windows 2003磁盘配额会跟踪每个用户在每个盘符中的使用情况。并根据用户的磁盘配额进行控制。因为配额是以每个用户做为单位进行跟踪的,所以不管用户在这个盘符下的任何地方储存文件都会被记录。磁盘配额共有二个比较显著的特点:
1.根据每个用户所拥有的文件和文件夹来计算使用磁盘的空间量。当一个新建、复制、保存文件到开启了磁盘配额的盘符上,或获得盘符上某文件所有权时,系统就自动从磁盘配额管理所限定的空间中扣减该用户的空间容量。
2.系统在计算用户使用磁盘空间时是忽略压缩的,它按照未压缩的字节计算用户使用的硬盘空间,而不管用户实际使用了多少磁盘空间。这样做是因为现在很多不同的文件类型在压缩的时候所压缩的比例不同。会造成文件长度的很大差异,给磁盘管理带来很大的工作负担。
注意,磁盘配额必须建立在NTFS格式的盘符上。不然无法使用。
选择你FTP空间所在的盘符,打开盘符的属性对话框,单击配额选项卡,选择启用配额管理复选框,开启磁盘配额管理。这是原本一些灰色不能使用的属性开始能使用了。请根据情况修改它们:如图8:
(图8)
拒绝将磁盘空间给超过配额限制的用户:选择这个复选框,当用户超过了分配的磁盘空间时,他们就会收到一个空间已用完的消息,而且不能在往空间里面写任何东西
不限制磁盘使用:当你不打算限制用户磁盘空间时,单击这个选项。
将磁盘空间限制为:配置用户可以使用的磁盘空间容量
将警告等级设置为:配置在用户登陆空间时,如果空间使用已经达到警告空间等级,将会发送一个信息给该用户,提醒用户空间快使用完了
配额项:单击这个按钮可以打开配额项对话框,在这个对话框中,可以通过配置菜单分别定制每个用户磁盘空间。也可以删除老用户空间配额限制。另外它的主界面就是一个用户配额监控器。如图9:
(图9)
三、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)管理器,展开服务器,右键点击应用程序池,选择属性。就可以在弹出的对话框中根据自己的系统环境进行进程隔离设置了。如图10:
(图10)
由于系统环境比较多样化,所以很难有一个设置的标准,所以具体的设置请参考Windows 2003的帮助。
五、查看事件查看器:作为一个网管就应该时时刻刻的观察服务器的安全性,而事件查看器可以反映系统80%的安全情况,这需要我们要养成每天分析事件查看器的习惯。一般情况是每天早晚各查看一次,并保留一个星期的日志。
当然关于安全的问题,这是一个永远也说不完的话题,希望本文能起到抛砖引玉的目的。谢谢!
注:本文一些名词解释和定义来自Microsoft。