Linux基础(day46)

11.28 限定某个目录禁止解析php

访问控制 – 禁止php解析目录概要

  • 核心配置文件内容
<Directory /data/wwwroot/www.123.com/upload>
       php_admin_flag engine off
   </Directory>
  • curl测试时直接返回了php源代码,并未解析

案例

  • 假设有一个目录是能够上传图片,可是可能被有心之人上传php上去,由于httpd开放了php模块,因此若是被人上传了木马文件(php类型),httpd就有可能会进行执行,一旦执行,就会让对方得到咱们服务器的root权限,或者是被恶意删除或修改一些参数,致使服务器瘫痪或者是被攻击
  • 案例:
    • 一台服务器,网站被入侵,但不知道是什么缘由,不知道怎么入侵的,也不知道入侵到什么程度,只知道他们公司的数据库泄露了,数据是一些电话号码,黑客并无去删除数据,由于他知道这个服务器的数据库里,电话号码天天都在增加,它就能够源源不断的得到新的电话号码,得到的电话号码能够卖给第三方;
  • 分析:
    • 把一个没有在这个服务器提交过的电话号码,在这个服务器的网站上提交一次,结果,立刻就有人打电话过来,证实,黑客得到电话号码,到打电话给新的用户,这套体系,已经彻底自动化了(天天都会去抓取一个新的电话号码来队列,而后立刻卖给第三方,第三方立刻打电话给这个用户),因此就猜想,网站的程序(php)存在漏洞,另外一种可能就是sql注入的漏洞(能够把查询的sql经过一些特殊的提交,提交到服务器上,服务器就会把这个sql语句转换成正常的查询,最终得到一些数据回来);可是sql注入漏洞,很容易修复,只要在网站提交的入口,增长一些特殊符号的过滤,就能彻底的阻断sql注入的漏洞。
  • 解决方法:
    • 首先抓包,监控数据的查询,由于电话号码是经过查询了数据来的,写一个死循环的脚本,每隔一分钟抓一次查询数据,抓完之后生成一个日志文件,
    • 查看日志之后,发现有一条sql查询,和网站源生的查询不同,经过日志定位到了时间点,而后就去web服务器上查看时间点的访问日志,经过日志查看到了一个很是特殊的请求,名字是以php结尾的文件,并且这个php文件是在图片的目录下进行访问的,而后去查看这个php 文件,发现这个文件内容,是获取服务器的权限,至关于在服务器开了一个后门;这个问题产生的根本缘由,就是由于上传图片目录并无禁止解析php

sql注入

  • 所谓SQL注入,就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来讲,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它能够经过在Web表单中输入(恶意)SQL语句获得一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 好比先前的不少影视网站泄露VIP会员密码大多就是经过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击..

访问控制 – 禁止php解析

  1. 打开虚拟主机主机配置文件
[root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

把代码放入到配置文件中
 <Directory /data/wwwroot/111.com/upload>
         ##把upload目录下全部的php禁止解析
        php_admin_flag engine off        //禁止解析php
        <FilesMatch (.*)\.php(.*)>        //如今这里全部访问php都会是403
        ##这里的 .用\脱义
        Order allow,deny                //若是不作这个deny,就会直接访问到源代码,这样就不太友好
        Deny from all
        </FilesMatch>
  </Directory>
而后保存退出
  1. 检查配置文件是否存在语法错误,并从新配置文件
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 111.com]#
  1. 建立upload目录,新建php文件
[root@hf-01 111.com]# mkdir upload
[root@hf-01 111.com]# ls
123.php  admin  index.php  QQ111.jpg  upload
[root@hf-01 111.com]# cp 123.php upload/
[root@hf-01 111.com]#
  1. curl访问
[root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Tue, 26 Dec 2017 16:09:43 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 111.com]#
  1. 这时在去虚拟主机配置文件中注释掉FilesMatch
[root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

 <Directory /data/wwwroot/111.com/upload>
     ##把upload目录下全部的php禁止解析
        php_admin_flag engine off
        #<FilesMatch (.*)\.php(.*)>
        ##这里的 .用\脱义
        #Order allow,deny
        #Deny from all
        #</FilesMatch>
    </Directory>
而后保存退出
  1. 检查配置文件是否存在语法错误,并从新配置文件
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 111.com]#
  1. 这时候访问php,会发现没法解析php
[root@hf-01 111.com]# !curl
curl -x127.0.0.1:80 '111.com/upload/123.php'
<?php
echo "123.php";
[root@hf-01 111.com]#
  1. 在浏览器中访问http://111.com/upload/123.php,会提示直接下载,这是由于没法解析php

输入图片说明

  1. 这时候再打开虚拟主机配置文件,取消FilesMatch注释
<Directory /data/wwwroot/111.com/upload>
     ##把upload目录下全部的php禁止解析
        php_admin_flag engine off
        <FilesMatch (.*)\.php(.*)>
        ##这里的 .用\脱义
        Order allow,deny
        Deny from all
        </FilesMatch>
    </Directory>
  1. 检查配置文件是否存在语法错误,并从新配置文件
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 111.com]#
  1. 这时再去浏览器访问php,会直接显示Forbidden

输入图片说明

  1. 即便去访问一个不存在的php文件,也会显示显示Forbidden

总结

  • 禁止php解析操做,其实就是为了服务器更加安全,特别是针对能够写的目录
  • 可写的目录,通常是不须要解析php,这个须要牢记,通常静态文件存放的目录是不容许解析php 的

11.29 限制user_agent

访问控制 – user_agent目录概要

  • user_agent能够理解为浏览器标识
  • 核心配置文件内容
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F]
    </IfModule>
  • curl -A "123123" 指定user_agent

经常使用知识介绍

  • 有时候,网站会受到一种叫 cc 攻击,CC攻击就是黑客,经过软件,肉鸡同时去访问一个站点,超过服务器的并发,就会致使站点宕机;经过肉鸡,软件去访问站点,就是普通的访问,没有什么特殊的,只是让站点超过并发致使严重超负荷而宕机,因此没办法去进行控制;所谓CC攻击都会有一个规律的特征,就是user_agent是一致的,好比同一个IP、同一个标识、同一个地址;遇到这种规律的user_agent频繁访问的状况咱们就能够断定他就是CC攻击,咱们就能够经过限制他的user_agent 减轻服务器压力,只须要让他从正常访问的200,限制为403,就能减轻服务器的压力,由于403仅仅是一个请求,只会使用到不多的带宽,毕竟他没有牵扯到php 和mysqlphp

  • cc攻击html

    • 攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和假装就叫:CC(ChallengeCollapsar)。
    • CC主要是用来攻击页面的。你们都有这样的经历,就是在访问论坛时,若是这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就至关可观。
    • 一个静态页面不须要服务器多少资源,甚至能够说直接从内存中读出来发给你就能够了,可是论坛就不同了,我看一个帖子,系统须要到数据库中判断我是否有读帖子的权限,若是有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,若是数据库的数据容量有200MB大小,系统极可能就要在这200MB大小的数据空间搜索一遍,这须要多少的CPU资源和时间?若是我是查找一个关键字,那么时间更加可观,由于前面的搜索能够限定在一个很小的范围内,好比用户权限只查用户表,帖子内容只查帖子表,并且查到就能够立刻中止查询,而搜索确定会对全部的数据进行一次判断,消耗的时间是至关的大。
    • CC就是充分利用了这个特色,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些须要大量数据操做,就是须要大量CPU时间的页面).这一点用一个通常的性能测试软件就能够作到大量模拟用户并发。
  • 肉鸡 (受黑客远程控制的电脑)mysql

    • 肉鸡也称傀儡机,是指能够被黑客远程控制的机器。好比用”灰鸽子”等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客能够随意操纵它并利用它作任何事情。
    • 肉鸡一般被用做DDOS攻击。能够是各类系统,如windows、linux、unix等,更能够是一家公司、企业、学校甚至是政府军队的服务器。

访问控制 – user_agent

  1. 打开虚拟主机配置文件
    • 在两个条件中用OR作了一个链接符,理解起来就是 匹配第一条规则或者第二条规则;若是不加OR就是而且的意思,必须两个条件同时匹配之后才会执行
    • NC表示忽略大小写,由于user_agent,可能会是大写的,好比:Mozilla/5.0,他首字母就是大写的
    • RewriteRule .* - [F] 这里的F表示Forbidden
[root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]        //条件
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]        //条件
        RewriteRule  .*  -  [F]
    </IfModule>
  1. 而后检查是否存在语法错误,并从新加载配置文件
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 111.com]#
  1. 去访问的时候,会显示403,这是由于限制了user_agent
[root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Tue, 26 Dec 2017 20:52:15 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 403 Forbidden
Date: Tue, 26 Dec 2017 20:53:30 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 111.com]#
  1. 查看访问日志
[root@hf-01 logs]# tail -5 /usr/local/apache2.4/logs/123.com-access_20171227.log
192.168.74.1 - - [27/Dec/2017:04:32:09 +0800] "GET /123.php HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.74.1 - - [27/Dec/2017:04:32:10 +0800] "GET /123.php HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.74.1 - - [27/Dec/2017:04:32:17 +0800] "GET /upload/123.php HTTP/1.1" 403 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [27/Dec/2017:04:52:15 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:04:53:30 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
[root@hf-01 logs]#
  1. 测试是不是由于user_agent才会被信任的
  2. 首先自定义user_agent
  • curl -A参数,去自定义
模拟user_agent,去访问会看到状态码为200 能够正常访问
[root@hf-01 111.com]# curl -A "hanfeng hanfeng" -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 200 OK
Date: Tue, 26 Dec 2017 21:17:47 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@hf-01 111.com]# curl -A "hanfeng hanfeng" -x127.0.0.1:80 '111.com/123.php'
123.php[root@hf-01 111.com]# 
[root@hf-01 111.com]#
  1. 查看访问日志,会看到user_agent是hanfeng hanfeng
[root@hf-01 111.com]# !tail
tail -5 /usr/local/apache2.4/logs/123.com-access_20171227.log
192.168.74.1 - - [27/Dec/2017:04:32:17 +0800] "GET /upload/123.php HTTP/1.1" 403 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [27/Dec/2017:04:52:15 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:04:53:30 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:05:17:47 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 - "-" "hanfeng hanfeng"
127.0.0.1 - - [27/Dec/2017:05:19:40 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "hanfeng hanfeng"
[root@hf-01 111.com]#

curl命令

  • curl命令是一个利用URL规则在命令行下工做的文件传输工具
    • -A ,指定user-agent,设置用户代理发送给服务器
    • -e ,指定referer,就是来源网址
    • -I ,仅仅查看它的状态码
    • -x ,在指定的端口上使用HTTP代理

11.30/11.31 php相关配置

PHP相关配置目录概要

  • 查看php配置文件位置
  • /usr/local/php/bin/php -i|grep -i "loaded configuration file"
  • date.timezone
  • 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
  • error_log, log_errors, display_errors, error_reporting
  • open_basedir
  • php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

PHP相关配置

  • 查看php配置文件的位置
    • 经过浏览器,访问phpinfo找到配置文件的路径
    • 也能够用/usr/local/php/bin/php -i |grep -i “loaded configuration file”找到他的路径;可是有些状况“php -i ”是不许的,由于Apache他是调用了php 的一模块,并且“php -i” 只是php 的一个程序,它和libphp5.so可能有关系也可能没有关系;
  • 案例:
    • 有时改了php.ini,改动了也重启了服务,结果配置仍是不生效;由于使用“php -i” 找到的配置文件和在web上的phpinfo找到的php.ini不是同一个,若是想要准确的找到php.ini配置文件,就在对应的站点目录下,建立一个phpinfo的php文件,在web上打开,在phpinfo上找到的,才是最准确的
[root@hf-01 111.com]# ls
11.png  123.php  admin  index.php  inedx.php  upload
[root@hf-01 111.com]# vi index.php
[root@hf-01 111.com]# cd /usr/local/src/php-5.6.30/
[root@hf-01 php-5.6.30]# cp php.ini-development /usr/local/php/etc/php.ini
[root@hf-01 php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 php-5.6.30]# 

这时用浏览器访问看到配置文件的路径
  • 设置安全函数
    • disable_functions //安全函数
    • eval 以前提到的一句话木马涉及到的函数,若是把这个函数禁用,那么那个木马将不会生效
  • 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 以上是比较危险的函数

设置PHP文件

  1. 打开PHP文件,禁掉一些危险的函数,默认配置文件里面是空的(这里使用的是php5),
[root@hf-01 php-5.6.30]# vim /usr/local/php/etc/php.ini

搜索 /disable
在disable_functions =后禁掉一些危险的函数

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涉及到服务器不少php 的配置相关,若是一不当心上传到了线上,那么久很容易被黑客查到,进行对应的攻击 设置时区
  1. 从新加载配置文件
[root@hf-01 php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 php-5.6.30]#
  1. 再去浏览器访问111.com/index.php,会显示phpinfo是被禁掉了

输入图片说明

  1. 打开php配置文件
  • 定义date.timezone时区,若是不定义,有时候会有一些告警信息
  • display_errors = On,(On显示,Off不显示),这个意思就会把错误的信息直接显示在浏览器上,这样就会把目录给暴露出来,因此这里更改为display_errors = Off
[root@hf-01 php-5.6.30]# vim /usr/local/php/etc/php.ini

搜索/timezone
在date.timezone定义时区
须要删除 ; 分号
date.timezone = Asia/shanghai

搜索/display
须要删除 ; 分号
将display_errors = On更改成display_errors = Off

而后保存退出
  1. 检查配置文件是否存在语法错误,并从新加载配置文件
[root@hf-01 php-5.6.30]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 php-5.6.30]#
  1. 这时候再去用浏览器访问111.com/index.php,会看到的是白页,这就是由于display_errors=Off

输入图片说明

  1. 打开配置文件
  • 定义错误日志log_errors = On——>on表示打开
  • 定义错误日志文件路径error_log= /tmp/php_errors.log
  • error_reporting = E_ALL定义日志的级别,默认是ALL,表示把全部的errors都记录下来,这是最不严谨的
    • 在生产环境中,使用; E_ALL & ~E_NOTICE (Show all errors, except for notices)
搜索/log_errors,将错误日志文件打开
log_errors = On

搜索/error_log,将错误日志文件定义到tmp目录下
须要删除 ; 分号
error_log = /tmp/php_errors.log

而后保存退出
  1. 检查配置文件是否存在语法错误,并从新加载配置文件
  2. 这时再去访问一遍,会看到tmp目录下生成了php_errors.log
[root@hf-01 php-5.6.30]# curl -A "a" -x127.0.0.1:80 http://111.com/index.php
[root@hf-01 php-5.6.30]# ls /tmp/
mysql.sock  php_errors.log

10 查看php_errors.log文件,会看到属主属组是daemonlinux

[root@hf-01 php-5.6.30]# ls -l /tmp/php_errors.log 
-rw-r--r-- 1 daemon daemon 135 12月 27 07:30 /tmp/php_errors.log
[root@hf-01 php-5.6.30]#
  1. daemon其实是httpd的属主,php_errors.log日志文件是以httpd这个进程的身份去生成的
[root@hf-01 php-5.6.30]# ps aux |grep httpd
root      2539  0.0  1.2 258304 12708 ?        Ss   04:26   0:01 /usr/local/apache2.4/bin/httpd -k graceful
daemon    3685  0.0  0.9 545132  9580 ?        Sl   07:30   0:00 /usr/local/apache2.4/bin/httpd -k graceful
daemon    3686  0.0  0.9 545132  9580 ?        Sl   07:30   0:00 /usr/local/apache2.4/bin/httpd -k graceful
daemon    3687  0.0  1.2 610668 12388 ?        Sl   07:30   0:00 /usr/local/apache2.4/bin/httpd -k graceful
root      3776  0.0  0.0 112676   984 pts/0    R+   07:33   0:00 grep --color=auto httpd
[root@hf-01 php-5.6.30]#
  • 有时候,定义了一个错误日志,可是这个错误日志始终没有生成,那么就须要检查一下定义错误日志所在的目录,到底httpd有没有写权限
  • 最保险的办法,就是在所在目录建立一个错误日志的文件,而后赋予它777的权限,这样就不须要担忧这个文件httpd是否有写权限了
[root@hf-01 php-5.6.30]# grep error_log /usr/local/php/etc/php.ini 
; server-specific log, STDERR, or a location specified by the error_log
; Set maximum length of log_errors. In error_log information about the source is
error_log = /tmp/php_errors.log
;error_log = syslog
; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=
[root@hf-01 php-5.6.30]#
- 能够先建立好/tmp/php_errors.log文件,而后赋予chmod 777权限
  1. 查看文件日志
[root@hf-01 php-5.6.30]# cat /tmp/php_errors.log      //会告诉你由于安全的缘由,这个函数已经被禁掉了
[26-Dec-2017 23:30:19 UTC] PHP Warning:  phpinfo() has been disabled for security reasons in /data/wwwroot/111.com/index.php on line 2
[root@hf-01 php-5.6.30]#

安全相关的参数

  • 一台服务器上,运行了多个站点,有一台服务器假如代码有问题,结果这个站点被黑客攻击了,被黑客拿到了权限,黑客拿了权限确定会继续往里渗透,继续往里渗透,就会有可能渗透到其余的站点,同时致使其余的站点被黑
  • open_basedir,它是一个安全选项,限制不能串岗
  • php.ini文件中的内容是针对全部虚拟主机进行的配置!!!
  1. 打开php配置文件
[root@hf-01 php-5.6.30]# vim /usr/local/php/etc/php.ini

搜索/open_basedir,并上删除 ; 号
open_basedir = /data/wwwroot/111.com:/tmp
而后保存退出
  1. 检查配置文件是否存在语法错误,并从新加载配置文件
  2. 再来访问,会显示正常
[root@hf-01 php-5.6.30]# curl -A "a" -x127.0.0.1:80 http://111.com/index.php -I
HTTP/1.1 200 OK
Date: Wed, 27 Dec 2017 00:04:36 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@hf-01 php-5.6.30]#
  1. 如果服务器上跑了N多个站点,那应该怎么去作限制呢?
  2. 应该针对站点,这些网站去作open_basedir ,但php.ini是作不到的,由于php.ini是针对全部站点的
  3. 但咱们能够在虚拟主机配置文件中设置,在apache虚拟主机配置文件中去设置/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  • 在这里能够针对不一样虚拟主机限制不一样的open_basedir
[root@hf-01 php-7.1.6]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"
而后保存退出
  1. 检查配置文件语法错误,并从新加载配置文件
[root@hf-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 php-7.1.6]#
  1. curl测试
[root@hf-01 php-7.1.6]# curl -A "a" -x127.0.0.1:80 http://111.com/index.php
111.com[root@hf-01 php-7.1.6]#

扩展

  1. apache开启压缩web

  2. apache2.2到2.4配置文件变动sql

  3. apache options参数shell

  4. apache禁止trace或track防止xss数据库

  5. apache 配置https 支持sslapache

相关文章
相关标签/搜索