随着Internet越来越普及,各种各样的虚拟主机也越来越多,由于虚拟主机需要同时向大量不同的用户提供安全的网络应用环境,因此搭建一个虚拟主机平台除了需要架设WEB和FTP服务器,还涉及到一些虚拟主机环境所特有的问题。以下就对这些特有的问题进行归纳和分析。我个人认为在建立虚拟主机时主要需要注意以下三个大方面: 1.用户与磁盘空间和域名的绑定;. L4 h) T1 C8 F& B' K
2.用户使用磁盘空间的容量限制(磁盘配额);, _+ G6 K9 ?3 ` \& c( E
3.IIS和用户环境的安全问题(我使用的是Windows Server系统);# q+ G! G0 O7 y/ T+ J- D
下面我就以这三个方面在Windows 2003 Enterprise Server具体如何实现做一个详细的介绍。
2 Y. c) P# C* @' p5 Z 一、用户与磁盘空间和域名的绑定
5 X# }" |- D' D( ~: r* O' L5 A, l 先打开计算机管理(要是服务器已经升成为AD模式,就打开Active Directory用户与计算机),点击展开本地用户和组,右键单击用户模块分别创建两个用户帐号。我这里建立的用户帐号依次为test1、test2。注意,为了安全考虑,请在组的模块中新建一个组。把用于虚拟主机的用户归纳到里面,并把用户原来隶属于的User组删除。(作为一个称职的管理员,需要注意的小细节是很多的,不然一个错误的细节就会引起灾难)如图1:+ u/ y3 ~# Y# g2 I8 f" |5 }! J1 U
图1:建立虚拟主机的用户组 建立好帐号后,就在FTP空间目录下先建立一个LocalUser文件夹。然后对应所使用的帐号建立子文件夹。如:要是FTP空间指定的是D:\ WEB_Space文件夹,那就在这个文件夹下创建一个LocalUser文件夹。接着建立两个子文件夹:test1、test2.如图2:2 O' c* [: s$ ]- A) B( |3 |5 f4 g4 Y5 B
图2:建立LocalUser文件夹 由于刚才我们建立用户帐号时,把它们单独的归纳到一个组中,这时就需要在FTP空间根目录属性的安全选项卡中把这个组添加进去,用户将无法通过FTP访问。如图3:
9 f2 o$ L: j! _/ r图3:设置用户组权限 接着我们需要建立FTP 用户隔离站点。这个功能是以前版本的IIS中FTP站点所没有的,FTP 用户隔离为 Internet 服务提供商 (ISP) 和应用服务提供商提供了解决方案,使他们可以为客户提供上载文件和 Web 内容的个人 FTP 目录。FTP 用户隔离通过将用户限制在自己的目录中,来防止用户查看或覆盖其他用户的 Web 内容。
% V6 z) J+ T8 _; e. ? 因为顶层目录就是 FTP 服务的根目录,用户无法浏览目录树的上一层。在特定的站点内,用户能创建、修改或删除文件和文件夹。FTP 用户隔离是站点属性,而不是服务器属性。无法为每个 FTP 站点启动或关闭该属性。所以在建立FTP站点的时候就应该选择好,不然站点建立以后,将无法修改。
4 g( F2 ~5 V9 c1 a T% Q) a' ? 不隔离用户:该模式不启用 FTP 用户隔离。该模式的工作方式与以前版本的 IIS 类似。由于在登录到 FTP 站点的不同用户间的隔离尚未实施,该模式最适合于只提供共享内容下载功能的站点或不需要在用户间进行数据访问保护的站点。4 G$ ]+ _0 ^) ^6 h; a: G
隔离用户:该模式在用户访问与其用户名匹配的主目录前,根据本机或域帐户验证用户。所有用户的主目录都在单一 FTP 主目录下,每个用户均被安放和限制在自己的主目录中。不允许用户浏览自己主目录外的内容。如果用户需要访问特定的共享文件夹,您可以再建立一个虚拟根目录。该模式不使用 Active Directory 目录服务进行验证。 注意 当使用该模式创建了上百个主目录时,服务器性能会下降。5 O; x+ n1 u, v7 G
用 Active Directory 隔离用户:该模式根据相应的 Active Directory 容器验证用户凭据,而不是搜索整个 Active Directory,那样做需要大量的处理时间。将为每个客户指定特定的 FTP 服务器实例,以确保数据完整性及隔离性。当用户对象在 Active Directory 容器内时,可以将 FTPRoot 和 FTPDir 属性提取出来,为用户主目录提供完整路径。
/ K, C5 k$ j" [( Z* m. l 如果FTP 服务能成功地访问该路径,则用户被放在代表 FTP 根位置的该主目录中。用户只能看见自己的 FTP 根位置,因此受限制而无法向上浏览目录树。如果 FTPRoot 或 FTPDir 属性不存在,或它们无法共同构成有效、可访问的路径,用户将无法访问。
% ? W7 }( ^( m; x. T8 u/ f' w F. i 打开Internet信息服务(IIS)管理器,点击展开服务器,右键单击FTP站点,新建一个FTP站点,在建立向导中,因为我的服务器不是Active Directory模式,所以我们选择隔离用户这个选项。如图4:8 |) M2 |: n# K6 N J
图4:FTP用户隔离选项 完成建立向导后,开打新建立的FTP站点属性,点击属性中的安全用户选项卡,把允许匿名连接关闭。确定后退出。
' {& @$ E0 w! M# Q( ~8 L 最后是域名的绑定,域名绑定有两种定义,第一种是直接使用完整域名绑定WEB服务,如在服务器上提供www.test1.com和[url=http://www.zhongdushi.cn/www.test2.com]www.test2.com[/url]空间服务,第二种是开设子域名服务,如提供test1.yesky.com和test2.yesky.com空间服务。这两种在工作原理上是一样的,但第二种在操作上有一些不同。需要自己服务器的DSN支持。' m# l+ s. G9 Q$ E
) N, a: Z- ?# R- B' c 首先我们让我们来了解一下关于域名(DNS)的基本知识,在我们要了解DNS,首先要了解几个名词:域名空间;根域;顶级域;二级域;主机名;区域。8 }8 g* @, w/ K9 f6 q; v& O
域名空间:是DNS名的结构统称,他的结构主要是由根域,顶级域,二级域和主机名组成。
) Y: b* H9 D, W, W# M 根域:是处在整个结构的顶级,是用点(.)表示的。由国外的几个公司管理的。55555没有我们的份~郁闷!!)' Y1 |% e0 c! g! L% ~3 J
顶级域:是由2-3个英文字母组成,并且有着一定的意义,一般采用相对意义的英文单词缩写或相对代码。如:COM是指商业机构,GOV是指政府机构,CN是指中国……0 i$ P% }. o6 L, D. Z& U' q9 I% P
二级域:是由一些域名提供商出租给个人或企业、机构的服务。如www.souod.com这个域名中souod就属于二级域。3 P5 X& r/ C3 V- b9 T6 R
主机名:是用来表示Internet或内部网的计算机名称,但大家注意一点,在Internet上,有的时候主机名指代表一台服务器的IP地址,而不是服务器的名称,这一点是和内部网有区别的!) k2 z, `# M4 H6 @9 ^1 e3 g
区域:是域名空间中的一个离散部分。区域主要是用来把一个域名变成可管理的几个部分,如: www.souod.com这个域名我们可以把他划分成www和souod.com这两个部分。这样,我们就可以利用souod.com这部分生成不同的主机名。如mail.souod.com;bbs.souod.com等等。这一点比较重要。3 |% U4 K a+ e0 |
DSN服务工作的流程我们可以把它称作名字解析过程,它共分为两种:正向搜索和反向搜索。正向搜索是把一个域名解析成一个IP,我们这里就用Internet上的www.niyaole.cn域名做一个案例。+ o+ ]" w, H7 o
我们先在IE浏览器中输入www.niyaole.cn这个域名,然后计算机将自动把这个域名传递给本地DNS服务器(也就是指在本机网卡属性中TCP/IP协议的DSN服务器输入框里输入的IP地址所对应的服务器),DNS服务器收到信息后,将在自己的区域表中搜索有没有该域名所对应的IP!有则返回,若没有,它则会把搜索的信息传递给国外的几个根域DSN服务器之一,请求解析该域名。7 `0 T% S% f( b. T$ r' H
根域DSN服务器则返回一条对COM域DNS服务器的IP地址给本地DNS服务器引用(由于niyaole.com的顶级域是COM所以返回COM域DNS服务器的IP地址),本地DNS服务器在根据IP地址给COM域DNS服务器发送一条www.niyaole.cn域名解析请求的信息,COM域DNS服务器返回一条对DSN服务器的IP地址指引,然后本地DNS服务器再根据收到的IP地址给yeDSN服务器,发送一条www.niyaole.cn域名解析请求的信息,DSN服务器根据请求反馈给www的IP地址,本地服务器再把这个IP反馈给我们。这时解析完成,我们也就打开了www.niyaole.cn的网页。
9 a: ~3 t9 \1 n 反向搜索正好相反,它是把一个IP地址解析成一个域名,常看见的诸如Windows 2003下的Nslookup命令工具。由于DNS服务是按域名而不是按IP地址索引的,反向搜索一搜索就会搜索所有的信息,很消耗资源。为了避免这种情况,DNS服务创建了一个叫in-addr.arpa的特殊二级域,它使用的是与其他域名空间结构相同的方法,但它不采用域名,而是采用IP地址。* N# \; x; O, c6 O
注意,要想做Internet上第二种虚拟主机,最好向域名提供商申请DNS转移权,要求提供商把DNS解析权指定到你的DNS服务器上,这样你就能自己利用Windwos Server的DSN服务随意开设子域名了,不然你每次要用一个新的子域名都要向域名提供商申请,那是很麻烦的,而且DSN在自己的服务器上还有很多好处,如开设MAIL服务等等。
" n: f3 [+ o, C; o9 f 先来打开DNS管理器,点击展开服务器,在正向查找区域新建一个区域。选择创建主要区域,输入你申请的域名,注意,只要输入我上面所说的区域就可以了,如yesky.com、sina.com.cn。完成。如图5:8 B0 C8 [$ _: N. Z
图5:创建主要区域 创建好区域后,就在你创建的区域里创建主机。最好创建的主机名与你的用户名相同,这样方便管理。当然,如果你的系统已经升级到AD模式,那这步可以跳过,因为在AD模式下,你每创建一个帐户,就会自动的生成对应的主机名称。如图6:7 ~& j* z1 r, B1 H+ B8 F' B B
图6:创建主机 所有的主机都创建好了后,就打开Internet信息服务(IIS)管理器,在WEB站点下创建新的WEB站点。在站点创建向导的IP地址和端口设置对话框中输入需要绑定的完整域名,如www.test.com、test1.test.com、test12.test.com,创建完成后,域名就和空间绑定了。如图7:- S/ N8 O, e, m+ j! p
图7:域名和空间的绑定 在DNS中有多少个主机,就可以建立多少个子域名WEB站点。也可以用域名提供商提供的直接指定IP的域名。但这里需要注意的是,一旦服务器中Internet信息服务(IIS)管理器里出现了带主机头的站点后,有时将会导致没有主机头的站点出错,这个问题很奇怪,可是能DNS映射引起的。/ R7 @ X# K& N5 j: p; G& W
二、用户使用磁盘空间的容量限制(磁盘配额)
5 r3 c) Q* U' W& W0 I: k* X
5 E: J5 }6 p% D+ f 在配置之前,让我们先了解一下磁盘配额管理的一些基础知识,以便我们更容易理解它的工作方法。Windows 2003磁盘配额会跟踪每个用户在每个盘符中的使用情况。并根据用户的磁盘配额进行控制。因为配额是以每个用户做为单位进行跟踪的,所以不管用户在这个盘符下的任何地方储存文件都会被记录。磁盘配额共有二个比较显著的特点:
' g, q$ M& K' }2 L/ H, j) N8 e# H 1.根据每个用户所拥有的文件和文件夹来计算使用磁盘的空间量。当一个新建、复制、保存文件到开启了磁盘配额的盘符上,或获得盘符上某文件所有权时,系统就自动从磁盘配额管理所限定的空间中扣减该用户的空间容量。 O: E9 E' S4 ?( _
2.系统在计算用户使用磁盘空间时是忽略压缩的,它按照未压缩的字节计算用户使用的硬盘空间,而不管用户实际使用了多少磁盘空间。这样做是因为现在很多不同的文件类型在压缩的时候所压缩的比例不同。会造成文件长度的很大差异,给磁盘管理带来很大的工作负担。6 z0 x1 W$ D. d8 H! g
注意,磁盘配额必须建立在NTFS格式的盘符上。不然无法使用。+ U+ @7 a0 t. i* I
选择你FTP空间所在的盘符,打开盘符的属性对话框,单击配额选项卡,选择启用配额管理复选框,开启磁盘配额管理。这是原本一些灰色不能使用的属性开始能使用了。请根据情况修改它们:如图8:
% P& C$ U5 f1 l: m5 ^8 J图8:修改磁盘配额 拒绝将磁盘空间给超过配额限制的用户:选择这个复选框,当用户超过了分配的磁盘空间时,他们就会收到一个空间已用完的消息,而且不能在往空间里面写任何东西( H+ `6 x5 h7 z3 H* |1 {$ t/ ]6 Z/ H, G& B: p
不限制磁盘使用:当你不打算限制用户磁盘空间时,单击这个选项。
: U( M/ |) \% x- W 将磁盘空间限制为:配置用户可以使用的磁盘空间容量% V% U b2 L0 l
将警告等级设置为:配置在用户登陆空间时,如果空间使用已经达到警告空间等级,将会发送一个信息给该用户,提醒用户空间快使用完了
1 q& f" s% J; M( u' b# j7 I. x 配额项:单击这个按钮可以打开配额项对话框,在这个对话框中,可以通过配置菜单分别定制每个用户磁盘空间。也可以删除老用户空间配额限制。另外它的主界面就是一个用户配额监控器。如图9:
# o8 ~5 K7 k( @0 w }1 l7 a图9:用户配额监控器 设置好后确定-关闭属性窗口,这时用户的磁盘配额就已经设置好了。还是比较简单的。
5 A1 J2 J" G& A$ M9 ~; ^ 三、IIS和用户环境的安全问题( K& K! G5 |7 ^: n
$ `+ b& x, m9 y 记得一位资深的安全人士曾经说过,从Windows 2000 Server开始,本身的系统漏洞和网络漏洞已经不是那么多了,甚至可以说Windows本身安全系数已经超越了LINUX系统本身,(这里我只是引用语句,希望不会引发Windows和LINUX向来的争论)但由于Windows周边产品漏洞和不安全因数太多,尤其是IIS服务。才导致人人说它不安全。
9 [; o/ U9 `4 r( R 由于系统的安全问题实在是太过于庞大,所分的体系也非常多,不可能面面具到,所以我根据个人经验说几个和虚拟主机密切相关的安全问题,但由于这些问题要想得到彻底的解决说明的话,那需要太多的篇幅,这里我也只能指出这些问题,和解决这些问题的思路。: |. ~1 L* l0 s0 q! r! v/ t
支持ASP系统的IIS安全问题:5 a1 ^. y# T* v7 H* Q& V
在支持ASP的IIS系统中,主要问题有两个,一个是由于ASP页面的输入框引起的安全攻击。在ASP页面中,我们经常可以看见输入框,如登录帐号、密码、查询、手机等等..这些控件其实是很危险的,因为这些控件的后台往往是连接着数据库,(SQL、Oracle等)有经验的程序员可以通过这些输入框输入数据库命令,在通过系统本身的数据库执行后,得到数据库帐号和密码。那也意味着离得到SYSTEM或Administrator帐号不远了。
. N" H2 u8 b; F) F2 H$ Z 所以,一般在做ASP页面时,我们在有这些输入框的窗口上都做一些限制,如最多只能输入多少个字符、哪些特殊字符不允许输入等等。但现在很少有网站能做到滴水不漏的,可能也是因为工作量太大的缘故吧:( 第二个问题是FileSystemObject这个组件为 ASP 提供了对默认的Windows Server服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作。权限实在是太大。也导致一些恶意虚拟主机租借用户利用这个ASP组件来攻击和控制系统。所以在不是必要的情况下,请不要启用它。太危险了。' \1 a+ M, I# n5 Q4 a
基本系统设置安全问题:
+ v3 e9 D& w7 e5 D1 J 一、端口设置。端口是计算机和外部网络相连的逻辑接口,也是计算机的第一道屏障,由于做虚拟主机的系统一般不需要开太多的端口,所以可以在网卡属性、Internet协议(TCP/IP)属性、高级、选项、TCP/IP筛选属性里进行添加。不过Windows Server TCP/IP筛选设置做的有点问题:只允许开哪些端口,不允许关哪些端口,郁闷吧。
: I0 I/ ~% F5 N* V" N 二、IIS设置:首先,把C盘中的默认的IIS目录Inetpub彻底删掉,在Internet信息服务(IIS)管理器中将默认WEB网站给停止,从新建立你所需要的WEB发布站点,但注意,请把你要发布站点的目录建立在其他盘符,并不要给其命名一些相对简单或容易猜中的名字,如WEB、IIS、Inetpub等。其次,在Internet信息服务(IIS)管理器中删除在你虚拟主机上不想用到的文件名映射,如,你的系统只需要支持ASP和HTML的话,那只要保留这个两个文件名映射就可以了,其他的都可以删除,步骤为在Internet信息服务(IIS)管理器中右击主机、属性、WWW服务、编辑、主目录配置、应用程序映射,然后就开始一个个删吧。最后在的应用程序调试书签内将脚本错误消息改为发送文本就基本可以了。' ^6 l6 J3 K; E3 h' h
三、预防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: n8 H* z& `5 p9 o% X) ]2 m" b8 N
四、工作进程隔离:在虚拟主机上经常会出现由于某个用户WEB站点的应用程序出错,进入无限循环,导致服务器资源大量消耗,最终死机的情况,这个问题在以往的IIS中是很难解决的,有时还得借助第三方软件。
( b6 F9 l2 T. V) @2 c& {
/ _3 C6 Y, ]0 i9 P+ a8 b' q 但现在,IIS 6.0 引入了工作进程隔离模式,该模式可以在隔离环境中运行所有的 Web 应用程序。当在工作进程隔离模式下运行 IIS 时,可以将应用程序配置成在单独的应用程序池中运行。每个应用程序池在逻辑上表示一个可配置的工作进程,并且链接到池中的应用程序。工作进程彼此独立运行;它们可能失败,但不会影响其他工作进程。应用程序池保护其中的应用程序免受支持其他应用程序池的工作进程的影响。这样,就可以避免应用程序相互影响。& z, i" d& O, A8 _( {+ E& Q/ j# c; S* L
在工作进程隔离模式下,超文本传输协议 (HTTP) 请求被直接路由到服务于已配置的应用程序的内核应用程序池队列。服务于应用程序池的工作进程会将请求直接从该队列中拉出,避免了进程切换的开销。为进一步保护 WWW 服务,IIS 6.0 会隔离关键的万维网发布服务组件,如 HTTP 协议堆栈和 WWW 服务管理和监控,避免其受到在工作进程中运行的第三方代码的影响。8 v$ s* v8 e2 c; n: h
HTTP 协议堆栈接受 WWW 服务请求并将其排入队列。当工作进程处于不正常的状态并因此中断处理请求时,HTTP 协议堆栈会继续处理请求。同时,WWW 服务将检测不正常的工作进程并将其关闭。如果要求新工作进程为请求提供服务,WWW 服务会启动一个新工作进程以便从 HTTP 协议堆栈中获取队列中的请求。即使工作进程失败,WWW 服务仍会继续处理请求并保护用户免于丢失服务。打开 Internet信息服务(IIS)管理器,展开服务器,右键点击应用程序池,选择属性。就可以在弹出的对话框中根据自己的系统环境进行进程隔离设置了。如图10:" s2 y2 d; n* a1 `+ l& H) `, t
图10:Internet信息服务(IIS)管理器 由于系统环境比较多样化,所以很难有一个设置的标准,所以具体的设置请参考Windows 2003的帮助。- i, o: L, v+ g8 }" X e
五、查看事件查看器:作为一个网管就应该时时刻刻的观察服务器的安全性,而事件查看器可以反映系统80%的安全情况,这需要我们要养成每天分析事件查看器的习惯。一般情况是每天早晚各查看一次,并保留一个星期的日志。 |