Total Pageviews

Tuesday, 13 November 2012

使用Suhosin保护PHP

一、什么是Suhosin?

Suhosin是一个PHP程序的保护系统。它的设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷。 Suhosin有两个独立的部分,使用时可以分开使用或者联合使用。第一部分是一个用于PHP核心的补丁,它能抵御缓冲区溢出或者格式化串的弱点;第二部 分是一个强大的PHP扩展,包含其他所有的保护措施。

二、下载地址

使用Gentoo linux或者 FreeBSD的朋友,可以ports中找到Suhosin。使用OpenSuSE linux ,Mandriva Linux,Debian Linux的朋友在发行版发布的包中找到Suhosin
http://www.hardened-php.net/suhosin/download.html
打开后,下载Suhosin Extension 0.9.31,Suhosin Patch要对应PHP的版本下载

三、特性列表

1)引擎保护(仅补丁)
  1. 保护内部的内存管理抵御缓冲区溢出
  2. 防止Zend哈希表被破坏
  3. 防止Zend链接列表被破坏
  4. 保护PHP核心及其扩展抵御格式化串弱点
  5. 某些libc realpath() 产生的错误
2)各种特性
  1. 模拟器保护模式
  2. 增加两个函数sha256()和sha256_file()到PHP核心中
  3. 所有平台,加入CRYPT_BLOWFISH到函数crypt()中
  4. 打开对phpinfo()页的透明保护
  5. SQL数据库用户保护(测试阶段)
3)运行时保护
  1.  加密cookies
  2. 防止不同种类的包含漏洞(不允许远程URL包含(黑/白名单);不允许包含已上传的文件;防止目录穿越攻击)
  3. 允许禁止preg_replace() /e 修改选项
  4. 允许禁止eval()函数
  5. 通过配置一个最大执行深度,来防止无穷递归
  6. 支持每个vhost配置黑白名单
  7. 为代码执行提供分离的函数黑白名单
  8. 防止HTTP响应拆分漏洞
  9. 防止脚本控制memory_limit选项
  10. 保护PHP的superglobals,对于函数extract() import_request_vars()
  11. 防止mail()函数的新行攻击
  12. 防止preg_replace()的攻击
4)Session 保护
  1. 加密session数据
  2. 防止session被劫持
  3. 防止超长的session id
  4. 防止恶意的session id
5)过滤特性
6)日志特性(略)

四、安装Suhosin

1)下载,地址上面已经给出
2)解压和打补丁

# tar jxvf php-5.2.10.tar.bz2
# gunzip suhosin-patch-5.2.10-0.9.7.patch.gz
# cd php-5.2.10
# patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch
# ./configure –your-options
# make
# make install

安装扩展
# tar zxvf suhosin-0.9.31.tgz
# cd subosin-0.9.31
# phpize
# ./configure –with-php-config=/usr/local/php/bin/php-config(这个路径根据自己实际情况设置)
# make
# make install
然后编辑php.ini 加入extension=suhosin.so
重启httpd.