网站首页 > 技术文章 正文
我秀站外合作有一个需求:需在一台web服务器上增加一个虚拟主机用来做图片资源站,所用程序为第三方,担心有后门程序,因此希望最好隔断与原机器其他服务的关系。
思考了一下,确实有一些风险存在。目前我们服务器上都统一使用nobody用户启动nginx和php,包括web目录,这些机器上部分有多个域名在一起运行。这样至少存在一个问题:如果某一个虚拟主机站点有问题,其web目录如/diska/htdocs_1被注入恶意程序,那么其他的站点目录如/diska/htdocs_2域名也很可能难以幸免地通过这个恶意程序被访问到。分开不同用户权限,固然可以解决这个问题。但同时也意味需要徒增一个特定用户,想找一个类似chroot功能。经过搜索查找,nginx中可以增加一个配置项“fastcgi_param PHP_VALUE xxxx”达成这功能:
server {
listen 80 ;
……
location ~ \.(php|phtml) {
……
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";
……
}
}
配置项加入在需要设置vhost中,冒号":"为分隔多个路径。当然也可以加入到 fastcgi_params中让nginx全局调用。
这样实现了虚拟主机限制在各自的web目录中,当某一个域名下出现漏洞或被攻击时,同一服务器下的其他应用域名不会因此而导致程序文件被查看或修改,避免“跨站”影响。
在查找过程中,同时发现如被入侵,虽然禁锢了对其他web目录的操作,但php程序还可以调用系统的命令进行一些操作。进一步加强安全,降低webshell调用的系统命令,可在php.ini下加入以下选项:
disable_functions = rmdir,exec,system,passthru,shell_exec
以上,我和松哥通过一些探针脚本进行测试验证,成功通过检测。
如果没上述的设置,那么恶意的脚本能直接通过浏览器访问到其他站点目录的内容,甚至可以本地调用系统命令启动一些基于php启动权限拥有者可以启动的端口。
供参考。
**注** 网上一些资料说在php5.2版本下,这些设置是不生效的。特意试了一下,真的如此。幸好我们的普遍在5.3以上。
- 上一篇: 【JVS·智能BI】可视化图表(7):指标卡片
- 下一篇: 黑客入侵系统第一步“信息收集”过程详解
猜你喜欢
- 2025-06-22 Apache SkyWalking 轻松处理亿级流量的分布式系统监控工具
- 2025-06-22 应用安全如何保障?来自字节跳动的实践分享
- 2025-06-22 如何在云服务器上建个网站?
- 2025-06-22 Hax:提供免费IPv6服务器,隧道服务、WebSSH及SFTP
- 2025-06-22 通过GA和EP环氧环,对合成壳聚糖珠再生能力的测试
- 2025-06-22 一站式链路追踪:阿里云的端到端解决方案
- 2025-06-22 wordpress博客网站加载过慢的解决办法
- 2025-06-22 三分钟速配透视宝让企业与APM一见钟情
- 2025-06-22 零基础也可以搭建属于自己的网站
- 2025-06-22 HHvm建站环境搭建方法:Nginx、lnmp/lamp等安装部署
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- python编写软件 (14)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- dfn (14)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)
- android退出应用 (21)