|
- 使用open_basedir 限制虚拟主机跨目录访问
....
[HOST=www.xxxx.com]
open_basedir=/data/site/www.xxx.com/:/tmp/
[HOST=test.xxxx.com]
open_basedir=/data/site/test.xxxx.com/:/tmp/
如上配置的意思是 www.xxxx.com 下的 php 程序被限制在 open_basedir 配置的两个目录下, 不可以访问到其他目录。如果没有做以上的配置,那么 test.xxxx.com 与 www.xxxx.com 的程序可以互相访问.
- 如果其中一个站点有漏洞被***植入了 webshell,那么他可以通过这个站点拿下同一台服务器的其他站点,最后挂***.
[warning]注意:目录最后一定要加上/. 比如你写/tmp,你的站点同时存在/tmp123 等等以/tmp 开头的目录,那么***也可以访问到这些目录,另外, php5.3 以上支持这个写法,5.2 不支持。[/warning]
2.禁用不安全的php函数
disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo
禁止 php 执行以上 php 函数,以上 php 程序可以执行 linux 命令, 比如可以执行 ping、netstat、mysql 等等.如果你的系统有提权 bug,后果你懂得.
3.php用户只读
4.关闭php错误日志
display_errors = On
改为
display_errors = Off
程序一旦出现错误,详细错误信息便立刻展示到用户眼前,其中包含路径、有的甚至是数据库账号密码. 注入***密码基本上都是通过这个报错来猜取。生产环境上强烈关闭它
5.php上传分离
将文件上传到远程服务器,例如 nfs 等。当然也可以调用你们写好的 php 接口. 即使有上传漏洞,那么文件也被传到了静态服务器上。***等文件根本无法执行.
举个例子:
php 站点 www.xxx.com,目录/data/site/www.xxx.com
静态文件站点 static.xxx.com,目录/data/site/static.xxx.com
文件直接被传到了/data/site/static.xxx.com,上传的文件无法通过 www.xxx.com 来访问,只能使用
static.xxx.com 访问,但是 static.xxx.com 不支持 php.
6.关闭php 信息
expose_php = On
改为
expose_php = Off
不轻易透露自己 php 版本信息,防止***针对这个版本的 php 发动***.
7.禁止动态加载链接库
disable_dl = On;
改为
enable_dl = Off;
|
|
|