虚拟主机设置手记
要求: 支持ASP、ASP.NET、PHP、PERL、能收发邮件、能通过FTP上传下载; 环境及所需软件: Windows 2003 Enterprise Edition + SP1、IIS6.0、.NET Framework v1.1.4322、Microsoft SQL Server 2000 + sp4、php4.4.0解压版、Mysql4.0.26解压版、phpMyAdmin2.6.4 from windows、ActivePerl 5.8.6、Mdaemon Pro 8.1.3、WebAdmin3.1.6、Gene6 FTP Server 3.6.0、w3 JMail 4.3 Personal、密码产生器V1.6、HashCalc2.01(以上软件请自行准备,尊重他人劳动成果,有钱地ppl请买正版*_^)
【全文】
要求:
支持ASP、ASP.NET、PHP、PERL、能收发邮件、能通过FTP上传下载;
环境及所需软件:
Windows 2003 Enterprise Edition + SP1、IIS6.0、.NET Framework v1.1.4322、Microsoft SQL Server 2000 + sp4、php4.4.0解压版、Mysql4.0.26解压版、phpMyAdmin2.6.4 from windows、ActivePerl 5.8.6、Mdaemon Pro 8.1.3、WebAdmin3.1.6、Gene6 FTP Server 3.6.0、w3 JMail 4.3 Personal、密码产生器V1.6、HashCalc2.01(以上软件请自行准备,尊重他人劳动成果,有钱地ppl请买正版*_^)
首先说明我安装软件的目录名及很多目录的名称建立方法:密码产生器生成随机字符串,复制后粘贴到hashcalc中计算,得到的32位MD5字符串加上原来目录名称即成为现有目录名。如生成的“npU5BhdUb^W(E\zQ'”的MD5值为“4cb691f3acabdb3ea428199e141a3da3”,则原来的"c:\program files\winrar"变成了"f:\5cd7c29b154074add98a443937bcea6b_soft\4cb691f3acabdb3ea428199e141a3da3_winrar",下面为了方便,就不这么麻烦了,如果有,简称为前缀
配置步骤:
1、基本系统安装:
-磁盘格式NTFS、4个分区(系统区、WEB区、MAIL区、其他区);
-安装win2003+sp1到C盘;安装IIS6.0(Internet信息服务管理器、公用文件、WWW服务)、ASP.NET;
-安装ms sql 2000 及 SP4补丁到F;
-安装w3 JMail到F;
-开启磁盘配额;
-去比尔大叔家升级;
-安全权限设置:
-祭出windows优化大师,进行一些系统的优化和安全设置。在打开本地安全策略,本地策略,审核策略,打开以下内容:
-审核策略更改 成功,失败
-审核系统事件 成功,失败
-审核登陆事件 成功,失败
-审核帐户登陆事件 成功,失败
-审核帐户管理 成功,失败
-审核其他为失败
打开帐户策略,按个人喜好设置
-C、D、E、F权限为administrators和system完全控制,其他全部删除
-C:\Documents and Settings\Administrator目录添加administrator完全控制
-C:\Documents and Settings\NetworkService目录添加network service组完全控制
-C:\Program Files\Common Files目录添加everyone读取和运行、列出文件夹目录、读取
-C:\WINDOWS目录添加everyone读取和运行、列出文件夹目录
-C:\WINDOWS\TEMP添加everyone的完全控制权限
-C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录添加IIS_WPG和NETWORK SERVICE完全控制
- C:\WINDOWS\IIS Temporary Compressed Files添加IIS_WPG完全控制
-C:\WINDOWS\system32\LogFiles目录删除everyone的权限
-C:\WINDOWS\system32\dllcache目录删除everyone的权限
-C:\WINDOWS\system32\config目录删除everyone的权限
-C:\WINDOWS\system32\inetsrv\History目录删除everyone的权限
-C:\WINDOWS\system32\inetsrv\iisadmpwd目录删除everyone的权限
-C:\WINDOWS\system32\inetsrv\MetaBack目录删除everyone的权限
-C:\WINDOWS\system32\inetsrv\ASP Compiled Templates目录添加IIS_WPG和NETWORK SERVICE完全控制
-C:\WINDOWS\system32\下的exe文件和vbs等文件的权限中去掉everyone的访问权限
-打开服务管理器,按“登陆为”排序,记下本地服务(local service)和网络服务(network service)启动的服务对应的程序名,然后找到这些个程序,为这些程序加上local service或network service读取和运行、读取的权限。
-D盘建立目录website,目录建立 前缀_xxxx.com 目录,目录下建立error(放错误页面)、logs(放日志文件)、www(放网站文件)三个文件夹,如果有需要还可建立如data(放mssql数据库)
-打开IIS管理器,修改各网站对应的主目录,如d:\website\前缀_xxxx.com\www;修改该站点对应的日志文件存放目录如d:\website\前缀_xxxx.com\logs,如果需要自定义错误,请修改自定义错误页面地址到对应地址如d:\website\前缀_xxxx.com\error
-建立帐户 xxxx,再产生20位密码,所属组为guests,选中web目录d:\website\前缀_xxxx.com\www,添加该帐户的完全控制权限。多个站点建立多个对应用户,各自在对应根目录的www目录添加对应用户的控制权限
2、ASP支持:
-打开IIS管理器,web服务扩展,允许ASP,允许Internet数据连接器。选中“网站”,属性,主目录,配置,选项,勾选启用父路径
3、ASP.NET支持:
-打开IIS管理器,web服务扩展,允许ASP.NET,在需要启用.NET的站点添加network service组的完全控制权限,这样,所有开通了.NET权限的站点都可以互相访问。还好我的目录名是你猜我不到,不然还真有点信不过的安全性。
4、PHP+Mysql支持:
-php解压到F:\php,并为该目录添加everyone的读取和运行、列出文件夹目录、读取的权限(也可只将可以启动的站点的用户加入,而不用everyone);
-mysql解压到F:\mysql;
-运行f:\mysql\bin\winmysqladmin.exe,自动将mysql添加为系统服务。
-复制f:\php\php.ini-dist到c:\windows\目录下,修改文件名为php.ini,打开php.ini,找到extension_dir,修改为extension_dir="f:\php\extensions";
-复制f:\php\php4ts.dll到c:\windows\system32\目录下,注意看看权限;
-打开IIS管理器,web服务扩展,添加一个新的web服务扩展,扩展名写个“php”,要求的文件选择"f:\php\sapi\php4isapi.dll",勾选设置扩展状态为允许;
-选中网站,属性,ISAPI筛选器,添加,名称“PHP”,可执行文件选择"f:\php\sapi\php4isapi.dll";
-主目录,配置,添加映射,可执行文件选择"f:\php\sapi\php4isapi.dll",扩展名“.php”;
-文档,添加index.php到默认内容文档;
-iisreset,看看刚添加的ISAPI筛选器中的PHP是否绿色,绿色则正常,出错请自行寻找答案;
-web目录中建立1.php,内容如下,访问http://localhost/1.php,看能否返回数据;出错请自行寻找答案
<?php
phpinfo();
?>
-解压phpMyAdmin到web目录,网上有将phpmyadmin改做多用户版的,可以参考;访问phpMyAdmin,管理mysql;
5、PERL支持:
-安装activeperl到f:\usr,完成后会自动添加web服务扩展和映射(.pl、.plx),为该目录添加everyone的读取和运行、列出文件夹目录、读取的权限,web服务扩展设置为允许,根据.plx映射添加.cgi的映射
-web目录建立1.pl内容如下,访问,看能否返回数据,出错请自行寻找答案
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<p><table cellspacing=1 bgcolor=#000000>\n";
for($i=0; $i<=$#ARGV; $i++){
print "<tr bgcolor=#FFFFF0><td><FONT FACE=Fixedsys COLOR=#FF0000>\$ARGV[$i]</FONT></td><td><FONT FACE=Fixedsys>$ARGV[$i]</FONT></td></tr> \n";
}
print "<tr bgcolor=#FFFFF0><td bgcolor=#00A0D0 align=center><FONT FACE=Fixedsys COLOR=#FFFF90>主机环境变数名称</FONT></td><td bgcolor=#00A0D0 align=center><FONT FACE=Fixedsys COLOR=#FFFF90>变数内含值</FONT></td></tr>\n";
foreach $env (sort keys %ENV){
print "<tr bgcolor=#FFFFF0><td><FONT FACE=Fixedsys COLOR=#FF0000>$env</FONT></td><td><FONT FACE=Fixedsys>\n";
if($ENV{$env}){
print "$ENV{$env}";
}else{
print " ";
}
print "</FONT></td></tr>\n";
}
print "</table>\n";
print "</BODY></HTML>";
exit;
6.FTP Server的安装:
-默认安装到F即可,至于设置,找个汉化版的看一遍就知道大概了。如建立用户 前缀_xxxx.com,生成密码,主目录设置为d:\website\前缀_xxxx.com
-如果你熟悉使用serv-u,也可以使用
7.Mail Server安装
-默认安装Mdaemon到E;
-安装WebAdmin;
-个人觉得让WebAdmin和WorldClient独立运行比较好。因为不需要设置额外的权限下面仍将介绍如何在IIS6下运行;
-配置WorldClient运行在IIS6下:
打开Mdaemon,ctrl+w,选择WorldClient is running under iis(alt+w);打开IIS管理器,新建应用程序池Mdaemon,打开其属性,性能,去掉“在空闲此段时间后关闭工作进程”和“核心请求队列限制为”前面的勾;标识,预定义帐户改为本地服务;在默认站点下建立虚拟目录mail,指向 E:\MDaemon\WorldClient\HTML ,勾选读取、脚本资源访问;打开mail属性,文档,添加WorldClient.dll,删除其他;主目录,执行权限为脚本和可执行文件,应用程序池为Mdaemon;添加web服务扩展,扩展名填Mdaemon_WorldClient,要求的文件为 E:\MDaemon\WorldClient\HTML\WorldClient.dll;选中E:\Mdaemon,添加local service组的完全控制权限;新建一个帐户,对e:\Mdaemon目录具有完全控制权限;打开IIS管理器,修改mail虚拟目录的匿名访问用户为刚设用户
-配置WebAdmin运行于IIS6下:
打开Mdaemon,ctrl+I,勾选"webadmin is running under iis"(alt+w);建立名为webadmin的虚拟目录,指向E:\MDaemon\WebAdmin\Templates;打开webadmin的属性,主目录,应用程序池选择Mdaemon,这里执行权限填纯脚本即可;配置,添加映射,扩展名".wdm",可执行文件选择E:\MDaemon\WebAdmin\Templates\WebAdmin.dll,勾选“检查文件是否存在”;文档,添加默认文档“login.wdm”,删除其他默认文档;添加web服务扩展,要求的文件为E:\MDaemon\WebAdmin\Templates\WebAdmin.dll扩展名填Mdaemon_WebAdmin;设置目录权限,同上,设置IIS中运行权限,同上
-不能在多个站点下设置以上步骤,请注意
-邮件服务器建好之后,将域名MX记录指向该服务器IP,如xxxx.com,ip:x.x.x.x,添加mx记录xxxx.comàx.x.x.x,即可正常收发邮件
-通过webadmin或界面建立次域时,同时建立别名postermaster@xxxx.com和aubse@xxxx.com指向xxxx.com的一个信箱地址,以免Mdaemon在事件查看器中留下警告信息
8.ms sql server 2000
-安装ms sql server到F;
使用系统帐户登陆查询分析器,运行以下脚本,删除所有危险的扩展.
use master
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_dropextendedproc 'xp_dirtree'
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_fixeddrives'
exec sp_dropextendedproc 'xp_loginconfig'
exec sp_dropextendedproc 'xp_enumerrorlogs'
exec sp_dropextendedproc 'xp_getfiledetails'
exec sp_dropextendedproc 'Sp_OACreate'
exec sp_dropextendedproc 'Sp_OADestroy'
exec sp_dropextendedproc 'Sp_OAGetErrorInfo'
exec sp_dropextendedproc 'Sp_OAGetProperty'
exec sp_dropextendedproc 'Sp_OAMethod'
exec sp_dropextendedproc 'Sp_OASetProperty'
exec sp_dropextendedproc 'Sp_OAStop'
exec sp_dropextendedproc 'Xp_regaddmultistring'
exec sp_dropextendedproc 'Xp_regdeletekey'
exec sp_dropextendedproc 'Xp_regdeletevalue'
exec sp_dropextendedproc 'Xp_regenumvalues'
exec sp_dropextendedproc 'Xp_regread'
exec sp_dropextendedproc 'Xp_regremovemultistring'
exec sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask
go
9.其他:
-一个站点需要什么服务就提供什么服务,其他服务全部删除或停用。需要和不需要的服务,自己看着办。
-防火墙、杀毒软件见仁见智,你喜欢什么就用什么。
-注册表权限
-ZendOptimizer最新版2.5.7不支持php4.4.0,
-防盗链wbal
-终端服务的端口转向连接设置
参考资料和其他安全设置文章:
http://www.altn.com/support/knowledge_base_article.asp/Number/KBA%2D01558