lnmp下php安全配置詳解(禁用不安全php函數與php上傳分離等)

來源:互聯網
上載者:User
本文介紹了lnmp架構下php安全配置的方法,包括禁用不安全PHP函數、關閉php錯誤記錄檔、php上傳分離、關閉php資訊、禁止動態載入連結庫、禁用開啟遠程url等安全措施。

php安全配置的幾個方面:

1、使用open_basedir限制虛擬機器主機跨目錄訪問

[HOST=www.xingzuo51.com]open_basedir=/data/site/www.xingzuo51.com/:/tmp/[HOST=test.xingzuo51.com]open_basedir=/data/site/test.xingzuo51.com/:/tmp/

說明:www.xingzuo51.com下的php程式被限制在open_basedir配置的兩個目錄下, 不可以訪問到其他目錄。如果沒有做以上的配置,那麼test.xingzuo51.com與www.xingzuo51.com的程式可以互相訪問。如果其中一個網站有漏洞被駭客植入了webshell,可以通過這個網站拿下同一台伺服器的其他網站,最後掛木馬。

注意:目錄最後一定要加上/。比如寫/tmp,網站同時存在/tmp123等等以/tmp開頭的目錄,那麼駭客也可以訪問到這些目錄,另外, php5.3以上支援這個寫法,5.2不支援。

2、禁用不安全PHP函數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、關注軟體安全資訊積極關注linux核心、php安全等資訊並及時採取錯誤

4、php使用者唯讀這 個方法是我最推崇的方法,但是執行之前一定要和php工程師商量. 為什嗎?例如網站www.xingzuo51.com根目錄使用者與組為nobody,而運行php的使用者和組為phpuser。目錄許可權為755,檔案許可權為 644. 如此,php為唯讀,無法寫入任何檔案到網站目錄下。也就是說使用者不能上傳檔案,即使有漏洞, 駭客也傳不了後門, 更不可能掛木馬. 這麼幹之前告知程式員將檔案快取改為nosql記憶體緩衝(例如memcached、redis等),上傳的檔案通過介面傳到其他服務 器(靜態伺服器)。備忘:程式產生本機快取是個非常糟糕的習慣,使用檔案快取速度緩慢、浪費磁碟空間、最重要一點是一般情況下伺服器無法橫向擴充

5、關閉php錯誤記錄檔

display_errors = On改為display_errors = Off

程式一旦出現錯誤,詳細錯誤資訊便立刻展示到使用者眼前,其中包含路徑、有的甚至是資料庫帳號密碼. 注入滲透密碼基本上都是通過這個報錯來猜取。生產環境上強烈關閉它

6、php上傳分離將檔案上傳到遠程伺服器,例如nfs等。當然也可以調用你們寫好的php介面. 即使有上傳漏洞,那麼檔案也被傳到了靜態伺服器上。木馬等檔案根本無法執行.

例子:php網站www.xingzuo51.com,目錄/data/site/www.xingzuo51.com靜態檔案網站static.xingzuo51.com,目錄/data/site/static.xingzuo51.com檔案直接被傳到了/data/site/static.xingzuo51.com,上傳的檔案無法通過www.xingzuo51.com來訪問,只能使用static.xingzuo51.com訪問,但是static.xingzuo51.com不支援php.

7、關閉php資訊

expose_php = On改為expose_php = Off

不輕易透露自己php版本資訊,防止駭客針對這個版本的php發動攻擊.

8、禁止動態載入連結庫

disable_dl = On;改為enable_dl = Off;

9、禁用開啟遠程url

allow_url_fopen = On改為allow_url_fopen = Off

其實這點算不上真正的安全,並不會導致web被入侵等問題,但是這個非常影響效能, 筆者認為它屬於狹義的安全問題.

以下方法將無法擷取遠程url內容

$data = file_get_contents("http://www.baidu.com/");

擷取本地檔案內容:

$data = file_get_contents("1.txt");

如果網站訪問量不大、資料庫也運行良好,但是web伺服器負載出奇的高,請直接檢查下是否有這個方法。

php擷取遠程web的內容,建議使用curl。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.