Linux服务器中Apache与PHP安全设置笔记

说明: LAMP系统以安全和高效而闻名,但缺省的安装配置依然有部分权限设置过于宽松,导致系统存在安全隐患, 尤其是对于提供支持PHP功能的虚拟域名空间租用服务的系统,就一定要加强相关的安全设置.

本文原来是工作过程中的笔记,主要是针对RedHat Linux版本的设置特点,所介绍的配置选项部分是从Google上寻找,部分是我的经验心得,均在CentOS4.4中调试通过. 讀者如有兴趣,请参考使用; 若有更好更全面的见解,也欢迎不吝赐教(chengkinhung@gmail.com);

PHP安全设置的参考资料: (網主Stefan Esser原是teso成员,是目前搞php安全最牛的人之一)
http://www.hardened-php.net/hardening_patch.14.html


################################################################################
請注意: 本文所描述的选项配置只涉及两个文件: php.ini和httpd.conf;

參考網址: http://us2.php.net/configuration.changes

對于提供公共網絡服務的ISP,基于安全性理由,建議apache和php都使用最小權限的公用设置.針對特定用戶所提出的涉及安全性能的特殊要求, 可以在不改变全局性的共用设置的情況下,通過利用Apache Virtualhost的PHP扩展功能來實現. 只需在相應用戶的Virtualhost的設置段落中插入php_value,php_admin_value或php_admin_flag指令,就可以使該用戶具有與全局設置不同的權限和行為.

針對Apache的特定虛擬用戶進行單獨配置的相关语法如下:

php_admin_value name 1|0|string                (value控制具体的参数)
php_admin_flag name on|off                (flag控制on或off,適用于Apache2.20版本)

請注意: 上述針對虛擬用戶的設置命令,可以直接設置在<VirtualHost>單元里面,或者設置在相應用戶的<Directory>單元里面.

例如,要将ernest这个用户的register_globals功能打开,并且将upload_max_filesize调高到5M,同時關閉safe_mode,但又不影响其他用户,就可以在该用户的VirtualHost里面加如下幾行:

<VirtualHost 222.222.222.222>
        php_value upload_max_filesize 5M
        php_value register_globals 1

        php_value safe_mode 0
        php_flag safe_mode Off

        php_admin_value safe_mode 0        #(for Apache2.20)
        php_admin_flag safe_mode Off         #(for Apache2.20)
</VirtualHost>

在php.ini配置文件中的大部分功能,均可以用这种方式来调整,调整后应重新启动apache,然后就可以在phpinfo中看到中间栏的Local Value同右边栏位的Master Value是不同值.

請注意: 有些参数值的设定方法跟它们在php.ini配置文件中的设置方法可能不一样,例如上面的"register_globals 1", 原来在php.ini中应是"register_globals On".
################################################################################

相关推荐