限定某個目錄、禁止解析php限制user_agent及 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解析

  • 打開虛擬主機主機配置文件
[root@yong-02 111.com]# vim /usr/local/apache2/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>

而後保存退出
  • 檢查配置文件是否存在語法錯誤,並從新配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 建立upload目錄,新建php文件
[root@yong-02 111.com]# mkdir upload
[root@yong-02 111.com]# ls 
123.php  1.php  admin  images  index.php  qq123.png  upload
[root@yong-02 111.com]# cp 123.php upload/
[root@yong-02 111.com]# ls upload/
123.php
  • curl訪問403 Forbidden
[root@yong-02 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Fri, 01 Jun 2018 14:14:20 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1
  • 這時在去虛擬主機配置文件中註釋掉FilesMatch
[root@yong-02 111.com]# vim /usr/local/apache2/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>
而後保存退出
  • 檢查配置文件是否存在語法錯誤,並從新配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 這時候訪問php,會發現沒法解析php 直接顯示源代碼
[root@yong-02 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php'
<?php
echo "123.php";

  • 這時候再打開虛擬主機配置文件,取消FilesMatch註釋
<Directory /data/wwwroot/111.com/upload>
     ##把upload目錄下全部的php禁止解析
        php_admin_flag engine off
        <FilesMatch (.*)\.php(.*)>
        ##這裏的 .用\脫義
        Order allow,deny
        Deny from all
        </FilesMatch>
    </Directory>
  • 檢查配置文件是否存在語法錯誤,並從新配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 這時再去瀏覽器訪問php,會直接顯示Forbidden
  • 即便去訪問一個不存在的php文件,也會顯示顯示Forbidden

總結

  • 禁止php解析操做,其實就是爲了服務器更加安全,特別是針對能夠寫的目錄
  • 可寫的目錄,通常是不須要解析php,這個須要牢記,通常靜態文件存放的目錄是不容許解析php 的

訪問控制 – 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

  • 打開虛擬主機配置文件
    • 在兩個條件中用OR作了一個鏈接符,理解起來就是 匹配第一條規則或者第二條規則;若是不加OR就是而且的意思,必須兩個條件同時匹配之後纔會執行
    • NC表示忽略大小寫,由於user_agent,可能會是大寫的,好比:Mozilla/5.0,他首字母就是大寫的
    • RewriteRule .* - [F] 這裏的F表示Forbidden
[root@yong-02 111.com]# vim /usr/local/apache2/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>
  • 而後檢查是否存在語法錯誤,並從新加載配置文件
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 111.com]# /usr/local/apache2/bin/apachectl graceful
  • 去訪問的時候,會顯示403,這是由於限制了user_agent
[root@yong-02 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Fri, 01 Jun 2018 14:38:08 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@yong-02 111.com]# curl -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 403 Forbidden
Date: Fri, 01 Jun 2018 14:38:17 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1
  • 查看訪問日誌
[root@yong-02 111.com]# tail -5 /usr/local/apache2/logs/111.com-access_20180601.log 
192.168.180.1 - - [01/Jun/2018:22:25:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4482.400 QQBrowser/9.7.13001.400"
192.168.180.1 - - [01/Jun/2018:22:25:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4482.400 QQBrowser/9.7.13001.400"
192.168.180.1 - - [01/Jun/2018:22:25:29 +0800] "GET /upload/1fasdfas.php HTTP/1.1" 403 228 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4482.400 QQBrowser/9.7.13001.400"
127.0.0.1 - - [01/Jun/2018:22:38:08 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [01/Jun/2018:22:38:17 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
  • 測試是不是由於user_agent纔會被信任的
  • 首先自定義user_agent
  • curl -A參數,去自定義
模擬user_agent,去訪問會看到狀態碼爲200 能夠正常訪問
[root@yong-02 111.com]# curl -A "liyueyong liyueyong" -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 200 OK
Date: Fri, 01 Jun 2018 14:40:20 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@yong-02 111.com]# curl -A "liyueyong liyueyong" -x127.0.0.1:80 '111.com/123.php'
123.php[root@yong-02 111.com]#
  • 查看訪問日誌,會看到user_agent是hanfeng hanfeng
[root@yong-02 111.com]# tail -5 /usr/local/apache2/logs/111.com-access_20180601.log 
192.168.180.1 - - [01/Jun/2018:22:25:29 +0800] "GET /upload/1fasdfas.php HTTP/1.1" 403 228 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4482.400 QQBrowser/9.7.13001.400"
127.0.0.1 - - [01/Jun/2018:22:38:08 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [01/Jun/2018:22:38:17 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [01/Jun/2018:22:40:20 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 - "-" "liyueyong liyueyong"
127.0.0.1 - - [01/Jun/2018:22:40:29 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "liyueyong liyueyong"

curl命令

  • curl命令是一個利用URL規則在命令行下工做的文件傳輸工具
    • -A ,指定user-agent,設置用戶代理髮送給服務器
    • -e ,指定referer,就是來源網址
    • -I ,僅僅查看它的狀態碼
    • -x ,在指定的端口上使用HTTP代理

 

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@yong-02 111.com]# ls
123.php  1.php  admin  images  index.php  qq123.png  upload
[root@yong-02 111.com]# vim index.php 
[root@yong-02 111.com]# cd /usr/local/src/php-7.1.6/
[root@yong-02 php-7.1.6]# cp php.ini-development /usr/local/php7/etc/php.ini
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl graceful 
[root@yong-02 php-7.1.6]# 


這時用瀏覽器訪問看到配置文件的路徑
  • 設置安全函數
    • 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文件

  • 打開PHP文件,禁掉一些危險的函數,默認配置文件裏面是空的(這裏使用的是php7),
[root@yong-02 php-7.1.6]# vim /usr/local/php7/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 的配置相關,若是一不當心上傳到了線上,那麼久很容易被黑客查到,進行對應的攻擊 設置時區
  • 從新加載配置文件
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl graceful
  • 再去瀏覽器訪問111.com/index.php,會顯示phpinfo是被禁掉了

  • 打開php配置文件
  • 定義date.timezone時區,若是不定義,有時候會有一些告警信息
  • display_errors = On,(On顯示,Off不顯示),這個意思就會把錯誤的信息直接顯示在瀏覽器上,這樣就會把目錄給暴露出來,因此這裏更改爲display_errors = Off
[root@yong-02 php-5.6.32]# vim /usr/local/php/etc/php.ini 

搜索/timezone
在date.timezone定義時區
須要刪除 ; 分號
date.timezone = Asia/Shanghai

搜索/display
須要刪除 ; 分號
將display_errors = On更改成display_errors = Off

而後保存退出
  • 檢查配置文件是否存在語法錯誤,並從新加載配置文件
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl graceful
  • 這時候再去用瀏覽器訪問111.com/index.php,會看到的是白頁,這就是由於display_errors=Off

  • 打開配置文件 vim /usr/local/php7/etc/php.ini 
  • 定義錯誤日誌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

而後保存退出
  • 檢查配置文件是否存在語法錯誤,並從新加載配置文件
  • 這時再去訪問一遍,會看到tmp目錄下生成了php_errors.log
[root@yong-02 php-7.1.6]# curl -A "a" -x127.0.0.1:80 http://111.com/index.php
[root@yong-02 php-7.1.6]# ls /tmp/
pear
php_errors.log
  • 查看php_errors.log文件,會看到屬主屬組是daemon
[root@yong-02 php-7.1.6]# ll /tmp/php_errors.log 
-rw-r--r-- 1 daemon daemon 137 6月   1 23:54 /tmp/php_errors.log
  • daemon其實是httpd的屬主,php_errors.log日誌文件是以httpd這個進程的身份去生成的
[root@yong-02 php-7.1.6]# ps aux |grep httpd
root      1336  0.0  0.7 258888 13660 ?        Ss   21:58   0:01 /usr/local/apache2/bin/httpd -k start
daemon    3758  0.0  1.0 680948 18968 ?        Sl   23:54   0:00 /usr/local/apache2/bin/httpd -k start
daemon    3759  0.0  0.5 545716 10348 ?        Sl   23:54   0:00 /usr/local/apache2/bin/httpd -k start
daemon    3760  0.0  0.5 545716 10348 ?        Sl   23:54   0:00 /usr/local/apache2/bin/httpd -k start
root      3891  0.0  0.0 112676   984 pts/0    R+   23:56   0:00 grep --color=auto httpd
  • 有時候,定義了一個錯誤日誌,可是這個錯誤日誌始終沒有生成,那麼就須要檢查一下定義錯誤日誌所在的目錄,到底httpd有沒有寫權限
  • 最保險的辦法,就是在所在目錄建立一個錯誤日誌的文件,而後賦予它777的權限,這樣就不須要擔憂這個文件httpd是否有寫權限了
[root@yong-02 php-7.1.6]# grep error_log /usr/local/php7/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@yong-02 php-7.1.6]# touch /tmp/php_errors.log ; chmod 777 /tmp/php_errors.log 

- 能夠先建立好/tmp/php_errors.log文件,而後賦予chmod 777權限
  • 查看文件日誌
[root@yong-02 php-7.1.6]# cat /tmp/php_errors.log       //會告訴你由於安全的緣由,這個函數已經被禁掉了
[01-Jun-2018 23:54:36 Asia/Shanghai] PHP Parse error:  syntax error, unexpected end of file in /data/wwwroot/111.com/index.php on line 4

安全相關的參數

  • 一臺服務器上,運行了多個站點,有一臺服務器假如代碼有問題,結果這個站點被黑客攻擊了,被黑客拿到了權限,黑客拿了權限確定會繼續往裏滲透,繼續往裏滲透,就會有可能滲透到其餘的站點,同時致使其餘的站點被黑
  • open_basedir,它是一個安全選項,限制不能串崗
  • php.ini文件中的內容是針對全部虛擬主機進行的配置!!!

打開php配置文件linux

[root@yong-02 php-7.1.6]# vim /usr/local/php7/etc/php.ini 

搜索/open_basedir,並上刪除 ; 號
open_basedir = /data/wwwroot/111.com:/tmp
而後保存退出
  • 檢查配置文件是否存在語法錯誤,並從新加載配置文件
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl graceful
  • 再來訪問,會顯示正常
[root@yong-02 php-7.1.6]# curl -A "a" -x127.0.0.1:80 111.com/index.php -I
HTTP/1.1 200 OK
Date: Fri, 01 Jun 2018 16:22:43 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8
  1. 如果服務器上跑了N多個站點,那應該怎麼去作限制呢?
  2. 應該針對站點,這些網站去作open_basedir ,但php.ini是作不到的,由於php.ini是針對全部站點的
  3. 但咱們能夠在虛擬主機配置文件中設置,在apache虛擬主機配置文件中去設置/usr/local/apache2/conf/extra/httpd-vhosts.conf
  • 在這裏能夠針對不一樣虛擬主機限制不一樣的open_basedir
[root@yong-02 php-7.1.6]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"
而後保存退出
  • 檢查配置文件語法錯誤,並從新加載配置文件
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 php-7.1.6]# /usr/local/apache2/bin/apachectl graceful
  • curl測試
[root@yong-02 php-7.1.6]# curl -A "a" -x127.0.0.1:80 111.com/index.php
111.com[root@yong-02 php-7.1.6]# curl -A "a" -x127.0.0.1:80 111.com/2.php
123[root@yong-02 php-7.1.6]#
相關文章
相關標籤/搜索