日期:2014-05-17  浏览次数:20672 次

apache在windows2003下的安全设置

众所周知,在windows下当Apache第一次被安装为服务后,它会以用户“System”(本地系统账号)运行。如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很大的安全 权限来影响本地机器,因此千万不能开启System帐号的网络权限!

于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限:

1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为apacheuser,加入guests组(如果出现问题,可以赋予user权限);

?

2.打开开始->管理工具->本地安全策略,在用户权限分配中选择“作为服务登陆”,添加apache用户;

?

3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找 选择apache,输入密码apacheuser,然后点确定(这个时候apache还不能正常启动,一般情况肯定会报错:Apache2.2 服务因 1 (0x1) 服务性错误而停止。);

?

4.赋予apache安装目录(比如:D:/apache2.2)以及web目录(比如D:/wwwroot)apache帐号的可读写权限,去除 各磁盘根目录除administror与system以外的所有权限,赋予apache安装目录所在的磁盘根目录apache帐户的可读取列目录权限(我 开始觉得没必要,但后来发现:这是导致上面出错的关键。)

?

5.启动apache,一切OK了。

?

6.php.ini中指定的PHP临时上传目录和session保存目录,并给予目录apache完全控制权限,例如:
upload_tmp_dir = "D:/wwwroot/Tmp/uploadtmp/"
session.save_path = "D:/wwwroot/Tmp/sessiontmp/"

?

7.给予D:/php目录读取与运行的权限;

?

8.给予zend安装目录读取与运行的权限;

?

9.限制读取访问的目录,修改apache安装目录下conf文件夹下的httpd.conf,加上:
php_admin_value open_basedir "D:/wwwroot"
php_admin_value safe_mode On

?

httpd.conf配置(假如将PHP读写权限限制在E:\smis目录下)

Apache2.0配置示例:
<VirtualHost *:80>
ServerName [url]www.abc.com[/url]
DocumentRoot "E:/smis"
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</VirtualHost>




Apache2.2配置示例:

<VirtualHost *:80>
ServerName [url]www.abc.com[/url]
DocumentRoot "E:/smis"
</VirtualHost>
<Directory "E:/smis">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/"
php_admin_value safe_mode On
</Directory>

?

好了...这下应该基本问题都解决了。突然发现我很落后,网上apache+win的文章好少啊,说明大家都不会把apache用在windows下,我寒啊...以至于今天权限配置花费我好多时间...摸索加整理...

1 楼 calatustela 2010-02-10  
补充一下:
如果需要使用到Mysql数据库。
需要把system32目录下的libmysql.dll,php_mysql.dll两个dll文件给新建的apache用户赋可读取/执行权限

如果使用了Zend优化,还需要赋Windows/temp目录的读取写入权限。
2 楼 nifan 2011-01-25  
我按楼主的教程一步一步做了,最后apache启动不了,赋予users权限也启动不了。