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

        $arg = $_GET["arg"]; 
        eval("$var = $arg;"); 
        echo "$var =".$var; 

?> 
suhosin有三个选项控制eval 
 
suhosin.executor.eval.whitelist        白名单 
suhosin.executor.eval.blacklist        黑名单 
suhosin.executor.disable_eval        禁用eval 
很多程序需要eval,所以我们不能禁用,使用黑名单禁止一些危险的函数 
 
 
编辑php.ini 
[Suhosin] 
suhosin.executor.eval.blacklist=phpinfo,fputs,fopen,fwrite 
根据实际情况自行设定 
 
 
 
包含漏洞 
 
suhosin.executor.include.max_traversal       包含的最大目录深度,在包含的文件名中有多少个../就禁止,例如值为2时,../../etc/passwd会禁止,值为3则允许,对于大多数程序,这个值设为4或5比较合适 
suhosin.executor.include.whitelist        允许包含的URL,用逗号分隔 
suhosin.executor.include.blacklist        禁止包含的URL,用逗号分隔 

 

 
 
上传漏洞 
 
suhosin.upload.max_uploads 
suhosin.upload.disallow_elf 
suhosin.upload.disallow_binary 
suhosin.upload.remove_binary 
suhosin.upload.verification_script        上传文件检查脚本 
可以自己写一个脚本检查上传文件是否有webshell特征,然后suhosin.upload.verification_script 的值是这个脚本的绝对路径 
 
注入漏洞 
 
suhosin.sql.bailout_on_error        还不支持 -_-# 
 
其他更深入的防护措施,还有待研究,参考suhosin选项 
http://www.hardened-php.net/suhosin/configuration.html 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值