26.7. 避免安全性问题

对公共因特网开放的万维网服务器需要不断加强管理。对于软件和意外的错误配置,安全问题似乎都是不可避免的。有关如何处理这些问题,在此有一些提示。

26.7.1. 最新软件

在 Apache 软件中发现漏洞时,SUSE 将会发出安全忠告。其中包含修正漏洞的说明,用户应该尽快地采纳这些说明意见。SUSE 安全性声明可以从以下位置处获取:

26.7.2. DocumentRoot 权限

在 SUSE Linux 中,默认情况下,DocumentRoot 目录 (/srv/www/htdocs) 和 CGI 目录 (/srv/www/cgi-bin) 都属于用户和组 root。您不能更改这些权限。如果任何用户都可写入这些目录,则任何用户都可以将文件放入这些目录中。之后,具有 wwwrun 权限(该权限允许用户随意访问文件系统资源)的 Apache 可能会执行这些文件。使用 /srv/www 的子目录可存放虚拟主机的 DocumentRoot 和 CGI 指令,并确保目录和文件属于用户和组 root

26.7.3. 文件系统访问权

默认情况下,对整个文件系统的访问在 /etc/apache2/httpd.conf 中是被拒绝的。不应该覆盖这些指令,而是要特别启用 Apache 能够读取的所有目录的访问权(请参见第 26.2.1.2.3 节 “基本虚拟主机配置”获取详细信息)。如此操作后,请确保任何重要文件(例如密码或系统配置文件)均不能从外部读取。

26.7.4. CGI 脚本

Perl、PHP、SSI 或任何其它编程语言中的交互脚本基本上可以运行任意命令,因此存在通常的安全性问题。从服务器执行的脚本只能从服务器管理员信任的源安装,允许用户运行他们拥有的所有脚本通常不是好的做法。还建议对所有脚本执行安全性审计。

为了尽可能简化脚本的管理,通常会将 CGI 脚本的执行限制于特定目录而不是全局使用它们。指令 ScriptAliasOption ExecCGI 用于配置。SUSE Linux 默认配置不允许从任何位置执行 CGI 脚本。

所有 CGI 脚本都会充当同一个用户运行,所以不同的脚本可能会彼此冲突。模块 suEXEC 允许您在不同的用户和组下运行 CGI 脚本。

26.7.5. 用户目录

启用用户目录(使用 mod_userdir 或 mod_rewrite)时,一定不要使用 .htaccess 文件,这些这些文件能够允许用户覆盖安全性设置。至少应该使用指令 AllowOverRide 来限制用户的注册。在 SUSE Linux 中,.htaccess 文件是默认启用的,但是用户在使用 mod_userdir(请参见 /etc/apache2/mod_userdir.conf 配置文件)时不能覆盖任何 Option 指令。