前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

作者头像
用户1215343
发布2018-02-05 19:11:05
1.2K0
发布2018-02-05 19:11:05
举报
文章被收录于专栏:linux运维学习linux运维学习

限定某个目录禁止解析php

  • 虚拟主机配置文件添加的核心配置内容:
代码语言:javascript
复制
    <Directory /data/wwwroot/111.com/upload>
        php_admin_flag engine off //在upload目录下禁止解析php
        <FilesMatch *\.php(.*)> //这行以及以下两行的意思就是
        //让php的文件访问受到限制,防止php文件的源代码被查看
        Order allow,deny
        Deny from all
        </FilesMatch>
    </Directory>
这里写图片描述
这里写图片描述
  • 保存后记得测试语法以及加载配置文件。在/data/wwwroot/111.com/目录下创建upload目录,在upload下创建编辑php文件,内容可以为:
代码语言:javascript
复制
<?
echo "123.php";
?>
  • curl测试时直接返回了php源代码,并未解析 此时没有加上FilesMatch那几行配置,只有php_admin_flag engine off这行配置,所以访问时返回了php源代码,并未解析:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

加上FilesMatch几行配置之后,访问php文件会出现403状态码,所以访问受到限制,就无法去解析php,也无法看到php的源代码:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
  • PS:一般静态文件目录下是不允许存放php的

限制user_agent

user_agent可以理解为浏览器标识,针对user_agent来限制一些访问,比如可以限制一些不太友好的搜索引擎“爬虫”,你之所以能在百度搜到一些论坛,就是因为百度会派一些“蜘蛛爬虫”过来抓取网站数据。“蜘蛛爬虫”抓取数据类似于用户用浏览器访问网站,当“蜘蛛爬虫”太多或者访问太频繁,就会浪费服务器资源。另外,也可以限制恶意请求,这种恶意请求我们通常称作cc攻击,他的原理很简单,就是用很多用户的电脑同时访问同一个站点,当访问量或者频率达到一定层次,会耗尽服务器资源,从而使之不能正常提供服务。这种cc攻击其实有很明显的规律,其中这些恶意请求的user_agent相同或者相似,那我们就可以通过限制user_agent发挥防攻击的作用。

  • 下面是针对user_agent来做访问限制的核心配置文件内容:
代码语言:javascript
复制
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]
        //OR是或者的意思,user_agent匹配curl或者匹配baidu.com
        //NC是忽略大小写
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F] //F是Forbidden
    </IfModule>
这里写图片描述
这里写图片描述
  • curl -A “xie xie” 指定user_agent 如果不指定user_agent,那么curl作为user_agent会被限制访问
这里写图片描述
这里写图片描述

使用参数 -A 指定了别的user_agent后就可以访问 PS:curl的 -A是指定user_agent -e 是指定referer -I 查看状态码

这里写图片描述
这里写图片描述

PHP相关配置

  • 查看php配置文件位置 /usr/local/php/bin/php -i|grep -i “loaded configuration file” 第一行为警告信息,可以忽略,取消这个警告需要编辑php.ini,找到date.timezone并设置为:date.timezone = Asia/Shanghai
这里写图片描述
这里写图片描述

如果没有就需要进入源码包里:cd /usr/local/src/php-5.6.30/ 在源码包里复制php.ini到php的安装目录中:cp php.ini-development /usr/local/php5/etc/php.ini

  • PHP有诸多内置的函数,有一些函数(exec)会直接调取linux系统命令,如果开放将会非常危险。因此,基于安全考虑应该把一些存在安全风险的函数禁掉,编辑php.ini:vim /usr/local/php/etc/php.ini,搜索找到disable_functions,disable_functions默认是空的,把eval等所有函数加上。 disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo 很多企业会把phpinfo也加上禁掉,因为有时候会不小心写了一个phpinfo的一个页面上传到线上去,然后被一些黑客扫到,能够看到你系统的一些目录。
这里写图片描述
这里写图片描述

配置完disable_functions之后访问网站就会出现这样:

这里写图片描述
这里写图片描述
  • display_errors如果为on就会出现上图网站中错误信息,这容易被人看到你的系统目录,所以需要把display_errors改为Off:
这里写图片描述
这里写图片描述
  • log_errors 是否记录错误日志,在配置文件中是On开启的 error_log 设定错误日志的路径
这里写图片描述
这里写图片描述

error_reporting 设定错误日志的级别,E_All 为所有类型的日志,不管是提醒还是警告都会记录。一般为E_ALL & ~E_NOTICE,排除掉notice相关的日志

这里写图片描述
这里写图片描述
  • open_basedir的作用是将网站限定在指定目录里,就算该站点被黑了,黑客只能在该目录下面有所作为,而不能左右其他目录。如果你的服务器只有一个站点那可以直接在php.ini中设置open_basedir参数。但如果服务器上跑的站点比较多,那在php.ini中设置就不合适了,因为在php.ini中只能定义一次,也就是说所有站点都一起定义限定的目录,那这样似乎起不到隔离多个站点的目的。 open_basedir可以是多个目录,用:分隔,这里设定的是只可以在1111.com目录和tmp目录下活动
这里写图片描述
这里写图片描述

用curl测试,发现500状态码,日志里也说明了只允许在1111.com目录和tmp目录下活动

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
  • 可以在Apache虚拟主机配置文件中添加下列的配置语句,可以针对不同的虚拟主机设置不同的open_basedir,除此之外像error_log之类的也可以定义(PS:为什么要带tmp,因为默认的临时文件是放在tmp,如果不加tmp,就是把tmp限制了,它连自己的临时文件都写不了): php_admin_value open_basedir “/data/wwwroot/111.com:/tmp/”

扩展 apache开启压缩 http://ask.apelearn.com/question/5528 apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292 apache options参数 http://ask.apelearn.com/question/1051 apache禁止trace或track防止xss http://ask.apelearn.com/question/1045 apache 配置https 支持ssl http://ask.apelearn.com/question/1029

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 限定某个目录禁止解析php
  • 限制user_agent
  • PHP相关配置
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档