Windows+Apache+PHP安全配置和优化笔记
Apache在Linux下应用的比较多,这里的配置基于Windows NT,因为国内大多数站长都是使用的Windows服务器。
前段时间,我的手机壁纸网站服务器IIS崩溃,一时没有找到原因,重装IIS也没有解决问题,所以临时使用Apache做为WebServer。
这里记录下配置笔记。
首先是Apache的安全配置:
- 如果不需要目录浏览,禁用目录浏览
Options FollowSymLinks - 如果不需要.htaccess功能,能起到非常重要的安全保护并加快程序响应速度
AllowOverride none - 禁用不用或者不安全的模块
- 启用Apache的错误日志功能
ErrorLog “D:/wamp/logs/apache_error.log” - 启用PHP的目录权限限制,严格控制跨目录访问权限
php_admin_value open_basedir “E:/wamp/www.4wei.cn” - 修改Apache的默认用户组和用户
<IfModule !mpm_winnt_module>
User daemon
Group daemon
</IfModule> - 禁止显示Apache的版本信息和系统信息
ServerTokens ProductOnly
ServerSignature Off
其次,是Apache在Windows下的优化配置,主要是mpm_winnt的配置:
- 主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 5000
</IfModule> - mpm_winnt的详细说明和配置请参考
http://www.javatang.com/archives/2008/02/19/0801260.html
最后,是PHP的一些安全设置:
- 请保证你的PHP版本已经升级为最新版,这样可以解决很多棘手安全问题
- 可以考虑启用安全模式,如果程序没有严格要求的话
- 必须禁用一些高危函数,其中,可以保留phpinfo这个函数
disable_functions = exec,passthru,shell_exec,system,popen,proc_open,proc_close,curl_exec,curl_multi_exec,parse_ini_file,show_source,dl,passthru,escapeshellarg,escapeshellcmd
- 禁用危险类
disable_classes = “com”
- 禁止显示PHP的版本
expose_php = Off - 禁用全局变量,这是一个非常可怕的问题,PHP6中已经删除此项设置
register_globals = Off
现在用Nginx的用户不少,权限配置不是很完善,可以参考下文:
http://www.xpb.cn/blog/665.html