apache的安全配置看一下網站的根目錄/data/www/有一個/data/www/data/目錄看一下她的權限php
[root@zhangmengjunlinux data]# ls -al /data/www/data/html
總用量 68linux
drwxr-xr-x 15 daemon root 4096 1月 1 11:30 .web
drwxr-xr-x 13 root root 4096 12月 27 02:10 ..apache
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 addonmd5vim
drwxr-xr-x 12 daemon root 4096 12月 31 16:33 p_w_upload緩存
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 avatar安全
drwxr-xr-x 2 daemon root 4096 12月 8 10:39 backup_a7ac7c服務器
drwxr-xr-x 2 daemon root 4096 12月 31 16:39 cacheapp
drwxr-xr-x 3 daemon daemon 4096 12月 27 02:08 diy
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 download
-rw-r--r-- 1 daemon root 0 12月 8 10:39 index.htm
-rw-r--r-- 1 root root 20 1月 1 11:30 info.php
-rw-r--r-- 1 daemon daemon 0 12月 27 02:08 install.lock
drwxr-xr-x 2 daemon root 4096 12月 8 10:39 ipdata
drwxr-xr-x 2 daemon root 4096 1月 1 10:36 log
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 plugindata
-rw-r--r-- 1 daemon daemon 0 1月 1 11:34 sendmail.lock
-rw-r--r-- 1 daemon root 772 12月 8 10:39 stat_setting.xml
drwxr-xr-x 2 daemon daemon 4096 12月 31 17:43 sysdata
drwxr-xr-x 2 daemon root 4096 1月 1 11:34 template
drwxr-xr-x 2 daemon root 4096 12月 27 02:08 threadcache
實際上apache運行的用戶就是daemon,咱們爲何要把它改爲屬主daemon,由於咱們在安裝apache的時候有去驗證通過檢測,若是你這個沒有寫權限的話你是不可能成功安裝的,爲何/data/目錄須要去寫呢,由於咱們在data目錄下會生成一些緩存文件、臨時文、附件,好比說咱們的網站有可能上傳一些圖片,咱們來測一下,發一個帖子,那帖子發完以後,咱們去網站的根目錄下查找
[root@zhangmengjunlinux data]# cd /data/www/data/p_w_upload/forum/
[root@zhangmengjunlinux forum]# ls 咱們在這裏看到生成一個新的目錄
201512 201601
[root@zhangmengjunlinux forum]# cd 201601/
[root@zhangmengjunlinux 201601]# ls
01 index.html
[root@zhangmengjunlinux 201601]# cd 01/
[root@zhangmengjunlinux 01]# ls
103719rkd74osszda4f673.jpg index.html
咱們能夠看到它生成了一個新的圖片,那麼這個圖片就是咱們剛剛上傳的圖片,不妨咱們去WEB訪問一下
www.test.com/data/attachemnt/forum/201601/01/103719rkd74osszda4f673.jpg 圖片的地址如今是Forbidden由於咱們作了防盜鏈,如今咱們遇到一個問題,這些 目錄data目錄它意味着能夠被用戶去寫,若是網站有漏洞的話,被被一我的上傳了***文件,若是被執行了怎麼辦,不當心一點執行了服務器被***了,能夠得到一些權限,那這個時候咱們就應該給它作一些限制,要麼你不容許它上傳,要麼你即便它上傳以後,咱們不容許它作任何的操做,兩種狀況,那麼第一種你是不能夠作的,由於你一旦限制了任何的用戶都不能正常上傳,那這個確定是不合適的,那咱們只能用第二種方法,去限制它進行解析,它即便上傳了一個***文件,可是它不能正常的去解析,那麼也就意味着咱們沒有風險,怎麼去限制呢,那好比說咱們就針對這個data目錄去作一個限制,禁止解析
#vim /usr/local/apache2/conf/extra/httpd-vhost.conf
首先咱們先要定義它的路徑
<Directory /data/www/data/>
咱們要把PHP的解析引擎關掉,不讓它解析了
php_admin_flag engine off
而且咱們再作一個限制,你即便不能解析了,可是咱們還能夠訪問啊,訪問的時候它就會把你的源代碼下載走
簡單關閉PHP引擎就這麼一行:php_admin_flag engine off
那麼如今也就意味着網站的目錄data下的全部目錄包括子目錄,咱們先作一個實驗
[root@zhangmengjunlinux 01]# cd /data/www/data/
[root@zhangmengjunlinux data]# ls
info.php
[root@zhangmengjunlinux data]# vim info.php
<?php
phpinfo();
>?
保存退出
去web測試 www.test.com/data/info.php
你會發現它會直接把文件下載下來,這個確定是不對的,好比說你這個目錄裏就有一些PHP文件,結果用戶一訪問的時候就直接把他們下載下來了,這確定是不對的咱們要怎麼作呢。若是不去禁止解析 www.test.com/data/info.php 它能夠正常顯示的,能解析的,那假如這個文件時某一個***上傳的,結果呢一刷新發現它正常解析了,它就很顯然的發現了你的服務器上的配置是怎麼編譯的和一些路徑還有哪些模塊,這是很危險的事情,因此咱們有必要給它作一些限制,而後限制以後咱們還要不讓它這php去下載,直接給它禁掉
<filesmatch "(.*)php">
Order deny,allow
Deny from all
allow from 127.0.0.1
</filesmatch>
那麼再次刷新的時候它是403 Forbidden了,然而呢咱們用127.0.0.1去訪問的時候,發現它解析不出來
[root@zhangmengjunlinux data]# curl -x127.0.0.1:80 www.test.com/data/info.php -I
HTTP/1.1 200 OK
Date: Fri, 01 Jan 2016 04:53:57 GMT
Server: Apache/2.2.31 (Unix) PHP/5.3.27
Last-Modified: Fri, 01 Jan 2016 03:30:26 GMT
ETag: "e3f3c-14-5283d646fc554"
Accept-Ranges: bytes
Content-Length: 20
Cache-Control: max-age=0
Expires: Fri, 01 Jan 2016 04:53:57 GMT
Content-Type: application/x-httpd-php
這是如何去解析PHP的