web服务器的php安全设置

文中的情形是利用PHP的漏洞远程执行代码下载文件写入服务器并执行.

而正常情况下运行PHP的用户(一般就是Web服务器运行用户)对 Web目录是没有写权限的(除了缓存目录),而为了安全一般都用disable_functions在php.ini里禁用了PHP执行Shell的函数 (也就无法通过运行PHP WebShell回弹Shell执行Shell命令),另外open_basedir也会限制PHP的文件操作目录,明确隔离了Web目录和系统目录.

就算是缓存目录,一般也会配置为不解析PHP,所以即使上传PHP WebShell到缓存目录也无法执行.

如果你非要chmod -R 777 /var/www/html和允许PHP调用Shell命令,那只能说是自己的问题了.

安全的Web目录权限设置:
find -type d -exec chmod 755 {} \;
find -type f -exec chmod 644 {} \;
注意:Web目录用户不能是Web服务器运行用户,一般通过yum/apt-get安装服务的情况下是这样的.
编译安装LAMP服务的注意要自己新建用户并指定用户运行Apache或者Nginx.

在php.ini里禁用执行Shell的函数和限制PHP文件操作目录:
disable_functions = passthru,exec,system,shell_exec,chroot,chgrp,chown,proc_open,proc_get_status,ini_alter,ini_restore,ini_set,dl,pfsockopen,symlink,popen,putenv
open_basedir=/var/www/html/:/tmp/
更多"安全禁用函数"参考:
http://help.aliyun.com/manual?helpId=87
因 为默认情况下PHP的会话文件存放在/tmp下,上传的文件也会临时存放在/tmp下,所以需要open_basedir里设置了/tmp目录,不过无论 是会话文件存放目录还是临时上传目录,都可以在php.ini里自定义,也可以为每个虚拟主机进行自定义,隔离虚拟主机间的文件操作.

转载于:https://my.oschina.net/u/820238/blog/185944

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值