5.17. Suhosin

简介:
		
Step of installation for Suhosin:
1. Download suhosin and install it
#cd /usr/local/
#wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.18.tgz
#tar -zxvf suhosin-0.9.18.tgz
#cd suhosin-0.9.18
#phpize
#./configure
#make && make install
2. Adding a load directive to php.ini
extension=suhosin.so
[suhosin]
suhosin.get.max_value_length = 5120
3. Restart apache service
#/etc/init.d/httpd restart
		
		

Configuration

Logging Configuration
suhosin.log.syslog
suhosin.log.syslog.facility
suhosin.log.syslog.priority
suhosin.log.sapi
suhosin.log.script
suhosin.log.phpscript
suhosin.log.script.name
suhosin.log.phpscript.name
suhosin.log.use-x-forwarded-for
Executor Options
suhosin.executor.max_depth
suhosin.executor.include.max_traversal
suhosin.executor.include.whitelist
suhosin.executor.include.blacklist
suhosin.executor.func.whitelist
suhosin.executor.func.blacklist
suhosin.executor.eval.whitelist
suhosin.executor.eval.blacklist
suhosin.executor.disable_eval
suhosin.executor.disable_emodifier
suhosin.executor.allow_symlink
Misc Options
suhosin.simulation
suhosin.apc_bug_workaround
suhosin.sql.bailout_on_error
suhosin.sql.user_prefix
suhosin.sql.user_postfix
suhosin.multiheader
suhosin.mail.protect
suhosin.memory_limit
Transparent Encryption Options
suhosin.session.encrypt
suhosin.session.cryptkey
suhosin.session.cryptua
suhosin.session.cryptdocroot
suhosin.session.cryptraddr
suhosin.session.checkraddr
suhosin.cookie.encrypt
suhosin.cookie.cryptkey
suhosin.cookie.cryptua
suhosin.cookie.cryptdocroot
suhosin.cookie.cryptraddr
suhosin.cookie.checkraddr
suhosin.cookie.cryptlist
suhosin.cookie.plainlist
Filtering Options
suhosin.filter.action
suhosin.cookie.max_array_depth
suhosin.cookie.max_array_index_length
suhosin.cookie.max_name_length
suhosin.cookie.max_totalname_length
suhosin.cookie.max_value_length
suhosin.cookie.max_vars
suhosin.cookie.disallow_nul
suhosin.get.max_array_depth
suhosin.get.max_array_index_length
suhosin.get.max_name_length
suhosin.get.max_totalname_length
suhosin.get.max_value_length
suhosin.get.max_vars
suhosin.get.disallow_nul
suhosin.post.max_array_depth
suhosin.post.max_array_index_length
suhosin.post.max_name_length
suhosin.post.max_totalname_length
suhosin.post.max_value_length
suhosin.post.max_vars
suhosin.post.disallow_nul
suhosin.request.max_array_depth
suhosin.request.max_array_index_length
suhosin.request.max_totalname_length
suhosin.request.max_value_length
suhosin.request.max_vars
suhosin.request.max_varname_length
suhosin.request.disallow_nul
suhosin.upload.max_uploads
suhosin.upload.disallow_elf
suhosin.upload.disallow_binary
suhosin.upload.remove_binary
suhosin.upload.verification_script
suhosin.session.max_id_length
		

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选项 http://www.hardened-php.net/suhosin/configuration.html




原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
4月前
|
SQL 安全 关系型数据库
postgresql|数据库|【postgresql-12的基于pg_basebackup的主从复制部署】
postgresql|数据库|【postgresql-12的基于pg_basebackup的主从复制部署】
69 0
|
人工智能 Python
人工智能导论——谓词公式化为子句集详细步骤
在谓词逻辑中,有下述定义: 原子(atom)谓词公式是一个不能再分解的命题。 原子谓词公式及其否定,统称为文字(literal)。$P$称为正文字,$\neg P$称为负文字。$P$与$\neg P$为互补文字。 <font color="ddd0000">任何文字的析取式称为子句(clause)。任何文字本身也是子句。</font> 由子句构成的集合称为子句集。 不包含任何文字的子句称为空子句,表示为NIL。 <font color="ddd0000">由于空子句不含有文字,它不能被任何解释满足,所以,空子句是永假的、不可满足的。</font> 在谓词逻辑中,任何一个谓词公式都可以通过应用等
1049 1
人工智能导论——谓词公式化为子句集详细步骤
|
9月前
|
机器学习/深度学习 存储 自然语言处理
使用预先训练的扩散模型进行图像合成
使用预先训练的扩散模型进行图像合成
107 1
|
10月前
|
NoSQL 前端开发 JavaScript
【毕业设计之app系列】电影院订票app设计与实现
【毕业设计之app系列】电影院订票app设计与实现
311 0
|
11月前
|
Java
Java:MybatisPlus方法getOne报错
Java:MybatisPlus方法getOne报错
287 0
|
定位技术
图源超丰富的GIS在线地图小插件
这次给大家提供一个超级棒的arcgis加载在线地图的插件SimpleGIS
509 0
|
消息中间件 存储 数据库
MQ消息队列数据同步解决方案
MQ消息队列数据同步解决方案
439 0
|
Java API Apache
key-value配对:java Pair<L, R>api使用
key-value配对:java Pair<L, R>api使用
key-value配对:java Pair<L, R>api使用
|
存储 数据采集 分布式计算
数据质量问题类型| 学习笔记
快速学习数据质量问题类型
463 0
|
运维 Kubernetes Cloud Native
MSE 结合 Dragonwell,让 Java Agent 更好用
阿里云微服务引擎(MSE)通过 Java Agent/SDK/Service Mesh 等方式,给您带来零接入成本、无侵入的、全生命周期的微服务治理能力。
MSE 结合 Dragonwell,让 Java Agent 更好用