Windows+Apache+PHP安全配置和优化笔记

2010-10-20 王健宇 service

Apache在Linux下应用的比较多,这里的配置基于Windows NT,因为国内大多数站长都是使用的Windows服务器。
前段时间,我的手机壁纸网站服务器IIS崩溃,一时没有找到原因,重装IIS也没有解决问题,所以临时使用Apache做为WebServer。
这里记录下配置笔记。
首先是Apache的安全配置:

  1. 如果不需要目录浏览,禁用目录浏览
    Options FollowSymLinks
  2. 如果不需要.htaccess功能,能起到非常重要的安全保护并加快程序响应速度
    AllowOverride none
  3. 禁用不用或者不安全的模块
  4. 启用Apache的错误日志功能
    ErrorLog “D:/wamp/logs/apache_error.log”
  5. 启用PHP的目录权限限制,严格控制跨目录访问权限
    php_admin_value open_basedir “E:/wamp/www.4wei.cn”
  6. 修改Apache的默认用户组和用户
    <IfModule !mpm_winnt_module>
    User daemon
    Group daemon
    </IfModule>
  7. 禁止显示Apache的版本信息和系统信息
    ServerTokens ProductOnly
    ServerSignature Off

其次,是Apache在Windows下的优化配置,主要是mpm_winnt的配置:

  1. 主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化
    <IfModule mpm_winnt.c>
    ThreadsPerChild 250
    MaxRequestsPerChild 5000
    </IfModule>
  2. mpm_winnt的详细说明和配置请参考

    http://www.javatang.com/archives/2008/02/19/0801260.html

最后,是PHP的一些安全设置:

  1. 请保证你的PHP版本已经升级为最新版,这样可以解决很多棘手安全问题
  2. 可以考虑启用安全模式,如果程序没有严格要求的话
  3. 必须禁用一些高危函数,其中,可以保留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

  4. 禁止显示PHP的版本
    expose_php = Off
  5. 禁用全局变量,这是一个非常可怕的问题,PHP6中已经删除此项设置
    register_globals = Off

标签: 禁止显示PHP的版本 修改Apache的默认用户组和用户

评论:

Cucole.
2010-10-23 16:16
我觉得张宴写弄得那个集成环境不错.
有朋友的VPS测试用得很爽.
不过不喜欢apache的臃肿...
王健宇
2010-10-23 17:17
@Cucole.:张宴写的是不错,但是他一直没有更新,软件有很多bug都没解决,我试过用easyphp也不错,老外的。

发表评论:

Powered by emlog sitemap