设为首页 收藏本站
查看: 848|回复: 0

[经验分享] LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块

[复制链接]

尚未签到

发表于 2018-12-12 10:07:09 | 显示全部楼层 |阅读模式
                  限定某个目录禁止解析php

  防止***上传一个目录文件php,网站会从而解析php,对我们的网站有很大的危险。

  因此,我们需要在能上传文件的目录直接禁止解析PHP代码

  
  

  禁止步骤
  1.编辑虚拟主机配置文件:增添内容
  核心配置文件内容
  
  php_admin_flag engine off   //禁止解析PHP这行即可
     //加上这个deny是可以防止解析我们xxx.php(.*)源代码
  Order deny,allow
  Deny from all
  
  
  

  修改完后:
  
改完了配置文件需要重新加载一下:

/usr/local/apache2.4/bin/apachectl -t  (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
  

  创建upload目录:(在/data/wwwroot/111.com/下创建
  cd /data/wwwroot/111.com

  mkdir upload
  复制admin.php到upload下并改名为test.php
  
  

  测试:
  
  

  此时只是显示test.php源代码
  
  
  去掉这个标签内容,再测试,连访问的权限都没有
  
  测试
  
  

                   限制user_agent

  user_agent:为浏览器的标识
  当很多用户同时访问同一个站点,这样会很消耗服务器资源

  
  针对user_agent做访问控制步骤:
  1.编辑虚拟主机配置文件:增添内容
  
  
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]
  RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
  RewriteRule  .*  -  [F]
  
  限制.*curl.或者.*baidu.com.这两个user_agent的访问
  

  

  
改完了配置文件需要重新加载一下:

/usr/local/apache2.4/bin/apachectl -t  (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
  

  测试:


  
  在日志文件可以看出:user_agent是我们的定义的curl
  
  

  指定user_agent进行测试 curl -A(加-A选项)
   curl -A "cansheng" -x192.168.136.133:80 'http://111.com/admin.php' -I

  
  访问日志查看user_agent
  

  curl 的常用选项意义:
  -A :指定user_agent
  -I    :显示状态码
  -x  :相当省略了hosts
  

                              PHP相关配置

  
  

  查看我们的配置文件位置:(111.com虚拟主机)
  (1)网页上查看:
  首先得在 /data/wwwroot/111.com/index.php下编辑添加
  phpinfo();
  
  网页上查看信息:
  
  cp  /usr/local/src/php-5.6.30/php.ini-development /usr/local/php/etc/php.ini
  
  
  复制后则会出现这样的信息
  这就是我们配置文件php.ini的位置
  
  (2)命令行查看
  usr/local/php/bin/php -i|grep -i "loaded configuration file"
  
  (上面的PHP Warning:这个不是报错。需要取消的话编辑php.ini  。找到data.timezone
  
  把PHP里的一些函数禁掉:
  步骤:
  1.修改配置文件:vim /usr/local/php/etc/php.ini
  增添要禁止的函数

  
  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()函数后再次访问111.com/index.php(内有phpinfo())则不会显示函数的内容:
  
  
  
  配置error_log (不让错误信息显示在浏览器中)

  
  1.修改display_errors = Off
  修改以后就不会把错误信息显示在浏览器中
  2.定义错误日志的路径:
  (1)确保:log_errors =On

  
  (2)路径:error_log = /tmp/log/php/php_errors.log(自定义路径)

  (3)定义error_log级别:error_reporting
  
  
  创建 错误日志路劲文件:
  
  并修改权限:
  
  
  测试:
  
  
  
  
  配置open_basedir:(安全选项)
  open_basedir:作用是将网站限制在指定的目录里,就算***黑了这个网址也只能在这个目录下操作,影响不了其他目录下的网站。(一台服务器可以跑多个网站)
  
  步骤:
  1.修改配置文件,增加内容。
  增加限定所在目录(多个目录用“:”隔开

  
  
  
  测试:
  故意把限定目录改成不存在的一个目录:
  
  
  运行: curl -x192.168.136.133:80 111.com/index.php -I
  (index.php是在111.com目录下的)
  报错。
  错误日志内容显示:
  
  
  正确修改完后
  
  访问正常:
  
  
  如果我们的服务器上有很多个网站都在同一个目录,那么直接修改php.ini就不是这么合适。php.ini是针对所有的站点的。
  解决方法:
  对单个虚拟主机设置open_basedir
  步骤:
  修改虚拟主机配置文件:
   vim  /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  增添内容:
  
  php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"
  
  php_admin_value  可以定义php.ini里面的参数:
  

  
  这样两台虚拟主机都限定在各自的目录下
  (/tmp 目录基本都得添加到限制目录中,这个是因为一些临时限制文件一般的都是先存放在/tmp,不加tmp则类似图片上传也不能正确使用)
  

  (切记:每次修改完配置文件都要检测和加载
/usr/local/apache2.4/bin/apachectl -t  (检测)
/usr/local/apache2.4/bin/apachectl graceful (加载)
  

  

                                   PHP扩展模块安装

  PHP动态扩展模块
  当我们的需求变更时,我们的模块在一开始配置完成后没有变更时的模块,那么就需要动态扩展:
  
  查看PHP目前都加载了什么模块
  /usr/local/php/bin/php -m
  
  
  
  下面安装一个redis的模块( 放在/usr/local/src/目录下)
  1.先下载redis 的包:
  
  2.修改一下名字:
  
  mv develop phpredis-develop.zip
  
  3.解压:
  unzip phpredis-develop.zip
  

  4.进入到包里:
  
  cd phpredis-develop
  

  5.生成configure文件
  /usr/local/php/bin/phpize
  
  yum install -y autoconf
  
  安装完成后再执行/usr/local/php/bin/phpize
  
  

  6.执行
  ./configure --with-php-config=/usr/local/php/bin/php-config
  
  7.make

  8.make  install
  
  安装完后:生成有redis.so这个文件,这正是我想要的
  但是此时我们的php并没有加载到这个模块
  
  
  9.配置,让php加载这个redis模块:
  (1)查看扩展模块存放目录,(我们可以在php.ini中去自定义该路径)
  /usr/local/php/bin/php -i |grep extension_dir
  
  下载的模块都是默认放在这里的:
  
  (2)编辑php.ini
  vim /usr/local/php/etc/php.ini
  增加一行配置(可以放到文件最后一行)
  
  extension = redis.so  
  
  
  最后就可以查看到php加载了这个模块
  
  (编译一个扩展模块的时候,如果如果自带的源码包里(php)的ext目录下有我们想要的模块,那么就可以直接在ext编译它 ,不用下载,先进入该包然后执行生成configure文件这里开始的步骤
  )

  
  
  
  
  
  
  
  
  
  
  
  
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650426-1-1.html 上篇帖子: PHP 银联支付 下篇帖子: php 快递100接口
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表