16.5.3 Web服务器配置

在正确配置PHP语言引擎后,接下来需要检查Web服务器。每一个服务器都有其自身的配置过程,这里给出两个最流行的服务器:Apache HTTP服务器和Microsoft的IIS。

1.Apche HTTP服务器

httpd服务器本身具有大量关于安全的默认安装,但是在产品环境中运行它之前还需要仔细检查一些设置。httpd服务器所有配置选项都保存在httpd.conf文件,该文件存在于httpd基本安装的/conf子目录(也就是,/usr/local/apache/conf或者C:\Program Files\Apache Software Foundation\Apache2.2\conf)。你应该阅读httpd服务器的联机文档中相关的安全设置章节(http://httpd.apache.org/docs-project)。此外,还需要进行如下设置:

■确认httpd不是以超级用户权限执行的(例如,在Windows下可以使用"nobody"或UNIX下的"httpd")。这可以通过httpd.conf文件下的“用户和组”设置实现。

■确认Apache安装目录的文件权限是否正确设置。在UNIX系统,这包括除了文档根目录(默认是htdocs/子目录)以外的所有目录属主都是"root",并且具有755权限。

■确认服务器设置了正确的并发连接数。对于1.3.x版本的httpd用户,需要设置MaxClients(最大客户端数)为系统能够一次处理的合理数值(默认值是比较合理的150,但是如果你期望更高的负载,可以设置更大值)。对于Apache 2.x版本,由于其支持多线程,可能还需要检查ThreadsPerChild选项的设置(默认值是50)。

■通过在httpd.conf引入适当的指令,隐藏一些不希望被看到的文件。例如,要防止.inc文件被看到,可以添加如下所示的语句:


<Files~".inc$">

Order allow,deny

Deny from all

</Files>


当然,正如前面提到的,还需要将这些文件从文档根目录下完全移出来。

2.Micrasoft IIS

配置Apache HTTP服务器不同的是,配置IIS并不需要对文件进行设置,但是仍然需要执行以下操作以确保IIS安装的安全性:

■避免将Web站点设置在与操作系统相同的驱动器。

■使用NTFS文件系统并且删除某些特定位置的写权限。

■删除所有在文档根目录中由IIS默认安装的文件。你将不会使用大部分文件(如果不是所有)。大量的内容安装在\inetpub目录,如果不是联机配置工具(不应该使用它,应该使用isadmin工具),你将不需要它。

■避免使用常规名称。大量自动化程序将寻找文档根目录下一些明显子目录中的脚本和程序,例如,Scripts/、cgi-bin/、bin/等。

此外,阅读IIS文档将有助于了解关于安全的更多信息。