摘 要:首先分析了虚拟主机的安全防范,分析了虚拟方式的选择,阐释了虚拟主机系统建设具体思路。
关键词:应拟主机 系统 建设方案
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2011)04-0067-02
虚拟主机,也称虚拟服务器或共享服务器,是指使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成多台“虚拟”的主机,每一台虚拟主机又都具有独立的域名或IP地址,具有完整的Internet服务器(WWW、FTP、E mail等)功能,同时,虚拟主机之间完全独立,互不干扰,用户可以自行管理各自的虚拟主机,在外界看来,每一台虚拟主机就跟一台独立主机的表现完全一样。简单地说,虚拟主机就是多站点服务器,以使多个用户共用一台服务器,达到降低建站成本和维护费用的目的川.但这同时给网站安全防护提出了更高的要求,因为一旦其中一个站点被入侵,则可能使整个服务器上的资源都受到破坏,所以采取安全对策来保护虚拟主机的安全就显得非常有实际意义。
1、虚拟主机的安全防范
虚拟主机的安全漏洞,我们可看出黑客的入侵,实际上由头到尾都是极为普通的,没有什么高技术的成分,也没有现在人家都喜欢用的什么什么漏洞,什么什么溢出,只是由一个普通用户的弱口令开始,慢慢地发展到了整个主机群被控于―个入侵者的手中。事实上,操作系统和各种相关服务本身并没有什么漏洞,问题主要还是发生在CGI程序的编写,维护中的疏忽,管理员对安全问题不敏感等方面。一般来说,主机一开始是由一些资深的工程师配置,之后也会根据已发现的漏洞做修补,系统本身的漏洞比较少。但在以后的管理过程中,是由下一层技术人员负责,这一层的人往往技术面不广,人家叫干什么就干什么,不会有很大的责任压力,为此,需要增强安全防范意识,采取切实安全防范措施,以免把文全问题越捅越大。
安装系统时,选择NTFS文件系统格式,因为NTFS文件系统具有很高的安全性,对今后服务器的设置也会带来许多便利。同时,要规划好硬盘分区,比如C盘用来安装操作系统,D盘存放WEB站点文件和数据库文件,E盘存放115日志文件、临时文件等,F盘存放WEB站点的备份数据,可以根据实际情况合理设置分区。合理的分区,不仅给今后工作带来方便,也可以提高系统的安全和稳定性。同时,在D盘为不同WEB站点设置不同的文件夹,方便今后的站点设置与维护。
保障Windows系统虚拟主机的安全,需要做大量的动作,这些动作都是一些基本的工作,但是必须重视它,因为它直接关系到系统的安全和稳定性。但网络安全时刻变化,要时刻保持替惕,经常更新安全知识,勤工作,才能提供稳定可靠的虚拟主机服务。
2、虚拟方式的选择
虚拟主机的方式有:IP型虚拟主机,名字型虚拟主机,端口型虚拟主机
由于现有IPV4资源已相当有限,如采用IP型虚拟方式显然浪费太大,所以采用了第二种及第三种共用的方式即:同时开通少
量的IP端口,在每种端口上分别架设支持不同脚本的服务器,这样可以分担服务器负载,提高性能。
3、虚拟主机系统建设具体思路
3.1 利用Web服务器组实现多脚本的支持以及用户网站的发布
在实际中php的支持采用mod_php4方式,perl的支持采用cgi方式,jsp&servlet则直接通过Tomcat+jdk1.5得到支持,asp则由IIS直接支持。
为了方便的构建服务,防止耦合性过高带来的将来更新维护的困难,因此决定Apache、Tomcat及IIS并存分端口的形式构建Web服务器。各Web服务器的端口,支持脚本和主发布目录。实例中将所有脚本的网站发布目录都设在主Web发布目录www内。各类脚本拥有其子目录,用户目录则作为相应脚本目录的子目录,因为用户主目录存在于相应网站发布目录内,所以用户网站也将被Web服务器发布到网上,这样他人就可以通过用户网址直接查看到用户发布的网站内容。
3.2 将Serv-U及MySQL整合
设计采用了ODBC数据源方式将Serv-U与MySQL集成。这样Serv-U的所有帐户及组信息,还有访问策略信息都将存储在MySQL数据库中。Serv-U FTP帐户的数据库存取,是实例采用的重要技术,这样对数据库的正确操作就能实现对Serv-U的管理,从而实现FTP帐户的在线申请,用户流量控制及空间限额等功能。对数据库的正确操作将实现对FTP服务器的管理。因此只要按照Serv-U创建帐户的方式在数据库中进行同样的操作也能实现创建帐户的功能,这样就可以实现FTP帐户的在线申请,无需管理员参与。用户空间申请成功后系统在Serv-U中为用户创建帐户并将用户的发布目录添加到Serv-U帐户中,限制用户FTP登陆时只能进入自已的
Web发布目录,管理自已的文件。这样用户就可以通过FTP直接登陆到自已的网站空间进行网站空间的管理,整合结构如图1。
图1 文件服务器与数据库整合结构
3.3 用户数据库分配及在线管理
要为用户提供虚拟Web主机,必须为用户提供数据库支持,因为现今的网站已不再是多年前的纯静态网站,用户需要更新网站数据,实现动态的功能,必须要使用数据库来进行数据的存取。用户成功申请帐户时系统会为用户创建与用户名相应的数据库,创建数据库帐户,并将该数据库授权给该用户,该数据库用户仅能访问自已的数据库。管理员可以访问到所有的数据库,包括用户数据库及系统数据库。用户数据库管理采用
PHP软件phpMyAdmin在线管理,非常方便。
3.4 B/S管理系统”NewWebServer”设计
建立管理系统的有五个目的:用户空间的在线申请;用户的自我管理;管理员对用户的在线管理;管理员对系统配置;系统信息统计。
”NewWebServer”是利用JAVA技术JSP&Servlet编写的B/S管理系统。它将虚拟Web主机服务器系统和FTP系统联系起来共同组成了功能强大的虚拟主机系统。
组重要代码分析:
3.4.1 MySQL多用户管理
//创建数据库
sql="create database"+dbname;
stmt.execute(sql);
//创建数据库用户
sql="GRANT USAGE ON*.*TO""+dbusername+""@"%"IDENTIFIED BY""+dbpassword+""WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0";
stmt.execute(sql);
//授权用户使用为其创建的数据库
sql="GRANT ALL PRIVILEGES ON'"+dbname+"'.*TO""+dbusername+""@"%"";
stmt.execute(sql);
这样在用户在登陆phpMyAdmin时就只能访问到自已的数据库了.
重点提示:@后面可跟%或localhost
%:表示任意位置,即用户可以从网上的任意位置连接到服务器的数据库
localhost:表示用户只能通过MySQL数据库所在的服务器连接MySQL
为了让用户在登入phpMyAdmin时必须输入用户名和密码,须要将phpMyAdmin目录下的config.inc.php文件中一项改为$cfg
['Servers'][$i]['auth_type']='http';(注:要使用这个功能php的安装必须以mod_php的方式安装)
同样在删除用户时
//收回该用户数据库权限并删除该用户
sql="REVOKE ALL PRIVILEGES ON*.*FROM""+username+""@"%"";
stmt.execute(sql);
System.out.println("5.用户权限已收回");
Sql="DELETE FROM mysql.user WHERE User='"+username+"'AND Host='%'";
Stmt.execute(sql);
其它的都是一些逻辑及对数据库表的简单操作,详情可参看系统源码
3.4.2 B/S管理系统的安全性
B/S管理系统的帐户同样也是Serv-U的帐户,同时在验证密码时采用了正则表达式,消除了SQL注入攻击的可能
if(UserName.length()