8.7

1、限定某个目录禁止解析PHP

  核心配置文件

  <Directory /data/wwwroot/www.123.com/upload>

    php_admin_flag engin off    //禁止解析php

    <filesmatch *.php(.*)>     //避免直接访问到源代码

    Order allow,deny

    Deny from all

    </filesmatch>

  </Directory>

  如果不禁止访问源码,则在禁止解析php后,进行访问时,会直接显示源代码

  禁止访问源码后,再进行访问时,则不会显示源码

 2、限制user_agent

  user_agent可以理解为浏览器标识

  为了防御CC攻击,CC攻击的特点是所有数据包的user_agent是一致的

  核心配置文件

  <IfModule mod_rewrite.c>

    RewriteEngine on 

    RewriteCond %{HTTP_USER_ANENT} .*curl.*[NC,OR]       //与下一句是或的关系,如果不加OR,就为与的关系,NC是忽略大小写

    RewriteCond %{HTTP_USER_ANENT} .*baidu.com.*[NC]      //与上一句是或的关系

    RewriteRule .* -[F]                      //参数F是指forbidden

  </IfModule>

  此时使用curl进行访问时,会显示为403

  而模拟user_agent进行访问时,则可以正常访问

  查看访问日志,可以看出此请求的user_agent是被指定的

  使用curl -A可以指定user_agent

  使用curl -e “http://    可以指定referer

  使用curl -x,省略hosts

  使用-I选项,只查看状态码

3、PHP相关配置

  查看php配置文件位置

  /usr/local/php/bin/php -i |grep -i "loaded configuration file"    此种方法有时不够准确

  使用phpinfo是最准确:在站点目录下,创建phpinfo页面,通过浏览器查看配置文件在哪,然后再进行修改

  1.在站点目录下创建phpinfo页面

  2.访问phpinfo页面,查找配置页面位置,由下图可以看出配置文件位置为/usr/local/php7/etc,但并未调用配置文件

  3.复制配置文件模版到/usr/local/php7/etc目录下

  cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini

  4.重新加载配置/usr/local/apache2.4/conf/apachectl graceful,然后刷新浏览器页面,可以看到页面的配置文件

   5.打开配置文件,修改配置文件,可以对以下参数进行配置

  disable_function        安全参数,可以禁止某些不安全的函数

  可以在disable_function中禁止以上不安全函数

  定义data.timezone    定义时区,可以定义到重庆或上海

 

  定义日志相关参数。

  默认情况下,会将错误信息打印在浏览器上, 这样会造成系统安全性降低

  可以通过修改参数display_error = Off来解决,重新加载配置文件后,再进行访问时,就无法在浏览器页面查看到错误信息

  使用curl进行访问时,没有任何输出

  如果需要查看错误信息,可以通过配置错误日志来解决。

  log_error = On    //打开错误日志记录开关

  error_log = /tmp/php_errors.log    //定义错误日志路径

  error_ reporting =  E_NOTICE          //E_ALL表示记录所有的错误日志,生产环境中建议使用E-NOTICE

   然后就可以查看到/tmp目录下生产了日志文件,且日志文件的属主和属组都是daemon

  通过查看httpd的信息,可以发现daemon是httpd的属主,标明错误日志是以该进程的属主来进行的,因此如果以后发现无法生成日志文件,可以查看该进程是否有写权限

  open_basedir      //隔离站点的目录,用来防止由于某个站点出现问题而连累其他站点,增加该选项后,用户只能在该目录下操作

  open_basedir = /data/wwwroot/111.com:/tmp/

   当服务器上一个目录下存在多个站点时,该参数无法起到作用。可以在虚拟主机配置文件中进行修改,增加如下配置

  php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/",可以在每个配置文件中的虚拟主机配置进行配置,以此来解决一个目录下存在多个站点

原文地址:https://www.cnblogs.com/w494129131/p/9427142.html