lnmp架構下php安全配置共享

  1.  使用open_basedir 限制虛擬主機跨目錄訪問php

    ....mysql

    [HOST=www.xxxx.com]linux

    open_basedir=/data/site/www.xxx.com/:/tmp/web

    [HOST=test.xxxx.com]sql

    open_basedir=/data/site/test.xxxx.com/:/tmp/shell


    如上配置的意思是 www.xxxx.com 下的 php 程序被限制在 open_basedir 配置的兩個目錄下, 不能夠訪問到其餘目錄。若是沒有作以上的配置,那麼 test.xxxx.com 與 www.xxxx.com 的程序能夠互相訪問.數據庫

  2. 若是其中一個站點有漏洞被***植入了 webshell,那麼他能夠經過這個站點拿下同一臺服務器的其餘站點,最後掛***.安全

    [warning]注意:目錄最後必定要加上/. 好比你寫/tmp,你的站點同時存在/tmp123 等等以/tmp 開頭的目錄,那麼***也能夠訪問到這些目錄,另外, php5.3 以上支持這個寫法,5.2 不支持。[/warning]服務器


2.禁用不安全的php函數ide

disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo


禁止 php 執行以上 php 函數,以上 php 程序能夠執行 linux 命令, 好比能夠執行 ping、netstat、mysql 等等.若是你的系統有提權 bug,後果你懂得.


3.php用戶只讀


4.關閉php錯誤日誌

display_errors = On

改成

display_errors = Off

程序一旦出現錯誤,詳細錯誤信息便馬上展現到用戶眼前,其中包含路徑、有的甚至是數據庫帳號密碼. 注入***密碼基本上都是經過這個報錯來猜取。生產環境上強烈關閉它


5.php上傳分離

將文件上傳到遠程服務器,例如 nfs 等。固然也能夠調用大家寫好的 php 接口. 即便有上傳漏洞,那麼文件也被傳到了靜態服務器上。***等文件根本沒法執行.

舉個例子:

php 站點 www.xxx.com,目錄/data/site/www.xxx.com

靜態文件站點 static.xxx.com,目錄/data/site/static.xxx.com

文件直接被傳到了/data/site/static.xxx.com,上傳的文件沒法經過 www.xxx.com 來訪問,只能使用

static.xxx.com 訪問,可是 static.xxx.com 不支持 php.


6.關閉php 信息

expose_php = On

改成

expose_php = Off

不輕易透露本身 php 版本信息,防止***針對這個版本的 php 發動***.


7.禁止動態加載連接庫

disable_dl = On;

改成

enable_dl = Off;

相關文章
相關標籤/搜索