apache在windows2003或win2008环境中的安全设置

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

工具/原料

windows2003server企业版
windows2008 R2企业版
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 www.5ol.com

ServerAlias cd.5ol.com bj.5ol.com tj.5ol.comm sh.5ol.com cq.5ol.com gz.5ol.com

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 www.5ol.com

ServerAlias cd.5ol.com bj.5ol.com tj.5ol.comm sh.5ol.com cq.5ol.com gz.5ol.com

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>

win2003系统下apache、php、mysql安装以及虚拟主机和目录权限设置 在win2003系统下apache、php、mysql安装以及虚拟主机和目录权限设置,即WAPM。 但不同于打包的WAPM软件,此软件部推荐在正式的服务器上面部署。下面开始: 1 安装pache、php、mysql 安装到自己认为合适的目录,三个软件的下载以及安装我不再叙述了,应该看到这篇文章的人对这部分内容都会认为是多余的!

2 虚拟主机设置

打开..\Apache\conf\http.conf

在# Virtual hosts处去掉加载虚拟主机的注释符号

Include conf/extra/httpd-vhosts.conf

在conf/extra/httpd-vhosts.conf配置虚拟主机配置文件内容:

以五网www.5ol.com为例:

# 1 5ol.com

复制代码 代码如下:

<VirtualHost *:80>

ServerAdmin alavin.cui@gmail.com

DocumentRoot "D:/5ol.com"

ServerName www.5ol.com

ServerAlias cd.5ol.com bj.5ol.com tj.5ol.comm sh.5ol.com cq.5ol.com gz.5ol.com

ErrorLog "logs/5ol.com-error.log"

CustomLog "logs/5ol.com-access.log" common

</VirtualHost>

我的服务器为双ip,所以在httpd-vhosts.conf和http.conf中有点不同的配置

#Listen 11.11.11.11:80

Listen 80

就是未指定IP地址,才能正常使用双ip。

3 降低apache的运行权限

3.1 创建一个新的帐户

在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为www.goldhoe.com,加入user组;

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

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

3.4 赋予apache安装目录(比如:E:/apache2.2)以及web目录(比如D:/www.goldhoe.com)apache帐号的可读写权限,去除各磁盘根目录除administror与system以外的所有权限,赋予apache安装 目录所在的磁盘根目录apache帐户的可读取列目录权限

3.5 重新启动apache

注意事项

文中有些网站路经要根据自己的实际情况进行修改,比如e:/apache2.2;D:/webroot;D:/5ol.com;
E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/ 也要根据自己的目录安装情况确定
百度搜索“五网”后,打开它后地址显示的是http://www.5ol.com,在地址后面加上phpinfo.php,就能看到相应的配置信息

本文内容整理自网络, 文中所有观点看法不代表淘大白的立场