Linux下PHP+Apache的26个必知的安全设置(5)

disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

第13个设置项:PHP Fastcgi/CGI - cgi.force_redirect命令

PHP可与FastCGI协同工作。 Fascgi减少了Web服务器占用的内存资源,但是仍为你提供了整个PHP语言具有的速度和功能。你可以配置Apache2+PHP+FastCGI或cgi,如这里描述的那样。配置命令cgi.force_redirect可以防止任何人使用http://www.cyberciti.biz/cgi-bin/php/hackerdir/backdoor.php这样的地址,直接调用PHP。出于安全原因,应启用cgi.force_redirect。编辑/etc/php.d/security.ini,执行以下命令:

出于安全原因,在典型的*Apache+PHP-CGI/FastCGI*环境中,启用cgi.force_redirect

cgi.force_redirect=On

第14个设置项:PHP用户和用户组ID

mod_fastcgi是面向Apache Web服务器的cgi模块。它可以连接至外部的FASTCGI服务器。你要确保PHP以非根目录用户的身份来运行。如果PHP以根目录或100以下UID的身份来运行,它可以访问及/或处理系统文件。你必须使用Apache的suEXEC或mod_suPHP,以非特权用户的身份来执行PHP CGI。suEXEC功能让Apache用户们能够以有别于调用Web服务器的用户ID的用户ID来运行CGI程序。在该示例中,我的php-cgi以phpcgi用户的身份来运行,Apache以apache用户的身份来运行:

#psaux |grepphp-cgi

示例输出:

phpcgi   6012 0.0 0.4 225036 60140 ?    S  Nov22 0:12 /usr/bin/php-cgi
phpcgi   6054 0.0 0.5 229928 62820 ?    S  Nov22 0:11 /usr/bin/php-cgi
phpcgi   6055 0.1 0.4 224944 53260 ?    S  Nov22 0:18 /usr/bin/php-cgi
phpcgi   6085 0.0 0.4 224680 56948 ?    S  Nov22 0:11 /usr/bin/php-cgi
phpcgi   6103 0.0 0.4 224564 57956 ?    S  Nov22 0:11 /usr/bin/php-cgi
phpcgi   6815 0.4 0.5 228556 61220 ?    S  00:52 0:19 /usr/bin/php-cgi
phpcgi   6821 0.3 0.5 228008 61252 ?    S  00:55 0:12 /usr/bin/php-cgi
phpcgi   6823 0.3 0.4 225536 58536 ?    S  00:57 0:13 /usr/bin/php-cgi

你可以使用spawn-fcgi等工具,以phpcgi用户的身份(先要为系统添加phpcgi用户)来创建远程和本地FastCGI进程:

# spawn-fcgi -a 127.0.0.1 -p 9000 -u phpcgi -g phpcgi -f /usr/bin/php-cgi

现在,你可以配置Apache、Lighttpd和Nginx web服务器了,使用在127.0.0.1ip地址处端口9000上运行的php FastCGI。

第15个设置项:限制PHP对文件系统的访问

open_basedir命令设置了允许PHP使用fopen()和其他函数来访问哪些目录的文件。如果文件在open_basdir定义的路径外面,PHP就拒绝打开该文件。你无法使用符号链接作为变通办法。比如说,只允许访问/var/www/html目录、不允许访问/var/www、/tmp或/etc目录:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5093.html