1、创建专用账户
原因:默认情况下,Apache在Windows下作为服务安装时会以“System”账户运行,如果Web服务器的所有资源都在本地系统上,这样做问题比较少,但是将会具有很大的安全权限来影响本地机器,因此千万不能开启System帐号的网络权限。
步骤:
在计算机管理的本地用户和组里面创建一个帐户,例如命名为apache
,密码设置为apacheuser
,加入guests
组(如果出现权限问题,可以赋予user
权限)。
打开“开始”菜单 > “管理工具” > “本地安全策略”,在“用户权限分配”中选择“作为服务登录”,添加apache
用户。
在计算机管理里选择服务,找到apache2.2
,先停止服务,右击 > 属性,选择“登录”,把单选框从“本地系统账户”切换到刚刚创建的apache
账户,然后输入密码apacheuser
并点确定。
2、调整目录权限
赋予必要权限:
赋予Apache安装目录(如D:\apache2.2
)以及Web目录(如D:\wwwroot
)的apache
账号可读写权限。
去除各磁盘根目录除administrator
与system
以外的所有权限。
赋予Apache安装目录所在的磁盘根目录(如D:盘
)的apache
账户读取列目录权限。
启动Apache:
启动Apache,一切正常后,进行以下配置。
3、PHP相关配置
临时上传目录和session保存目录:
在php.ini
中指定PHP临时上传目录和session保存目录,并给予目录完全控制权限。
示例:
```ini
upload_tmp_dir = "D:/wwwroot/Tmp/uploadtmp/"
session.save_path = "D:/wwwroot/Tmp/sessiontmp/"
```
其他目录权限:
给予D:\php
目录读取与运行的权限。
给予Zend安装目录读取与运行的权限。
4、限制访问目录
修改httpd.conf:
修改Apache安装目录下conf
文件夹下的httpd.conf
,加上以下内容以限制PHP的访问目录:
```apache
php_admin_value open_basedir "D:/wwwroot"
php_admin_value safe_mode On
```
虚拟主机配置:
示例配置将PHP读写权限限制在E:\smis
目录下:
```apache
<VirtualHost *:80>
ServerName www.abc.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>
```
FAQs
问题1:为什么要创建专用账户来运行Apache而不是使用System账户?
答:使用System账户运行Apache会给予其很大的安全权限,这可能会影响整个本地机器的安全性,通过创建专用账户,可以限制Apache的权限,从而减少潜在的安全风险。
问题2:如何确保Apache能够正常启动并运行?
答:确保Apache正常启动的关键在于正确配置新创建的专用账户的权限,需要给Apache安装目录和Web目录赋予可读写权限,同时去除不必要的磁盘根目录权限,在php.ini
中正确配置PHP的临时上传目录和session保存目录也是关键步骤。
在Windows Server 2003下配置Apache服务器以确保文件夹和目录权限的安全,涉及以下几个方面:
1. 配置Apache服务器
确保Apache服务器已正确安装在Windows Server 2003上。
1.1 确保服务器版本和安全更新
确保安装的是最新版本的Apache,因为旧版本可能存在安全漏洞。
安装最新的安全更新和补丁。
1.2 配置虚拟主机
创建虚拟主机配置文件,如httpd.conf
中的<VirtualHost>
部分。
为每个网站设置独立的文档根目录。
2. 设置文件夹和目录权限
2.1 文件权限
使用Windows的文件权限设置来控制哪些用户可以访问哪些文件。
为Apache用户(通常是IUSR_机器名组)设置适当的读、写和执行权限。
2.2 目录权限
使用Directory
指令在.htaccess
文件中或主配置文件中设置目录权限。
使用Order
、Allow
和Deny
指令来控制访问。
3. 配置.htaccess
文件
3.1 设置密码保护
使用AuthType
、AuthName
、Require
等指令来设置密码保护。
创建.htpasswd
文件存储用户名和密码。
3.2 配置文件压缩
使用mod_deflate
模块来压缩静态和动态内容,减少传输数据量。
3.3 限制直接脚本访问
使用<FilesMatch>
指令限制对特定文件的直接访问。
4. 配置文件所有权和访问控制列表(ACL)
4.1 文件所有权
确保Apache运行的用户(通常是IUSR_机器名组)有适当的文件和目录访问权限。
4.2 访问控制列表(ACL)
使用Windows的ACL功能来设置更精细的权限控制。
5. 防火墙和网络安全
5.1 防火墙配置
配置Windows Server 2003的防火墙,只允许来自可信网络的HTTP和HTTPS流量。
5.2 安全审计
使用Windows日志记录功能来审计对服务器和文件的访问。
6. 定期检查和更新
定期检查日志文件,查找可疑活动。
定期更新Apache服务器和Windows操作系统的安全补丁。
在Windows Server 2003下配置Apache服务器,确保文件夹和目录权限的安全,需要综合考虑服务器配置、文件权限、目录权限、安全策略和网络安全等多个方面,通过合理配置和定期维护,可以有效提高Apache服务器在Windows Server 2003下的安全性。