PHP環(huán)境安全加固配置
一、啟用 PHP 的安全模式
PHP 環(huán)境提供的安全模式是一個(gè)非常重要的內(nèi)嵌安全機(jī)制,PHP 安全模式能有效控制一些 PHP 環(huán)境中的函數(shù)(例如system()
函數(shù)),對大部分的文件操作函數(shù)進(jìn)行權(quán)限控制,同時(shí)不允許對某些關(guān)鍵文件進(jìn)行修改(例如 /etc/passwd)。但是,默認(rèn)的 php.ini 配置文件并沒有啟用安全模式。
可以通過修改 php.ini 配置文件啟用 PHP 安全模式:
1
|
safe_mode = on
|
二、用戶組安全
當(dāng)啟用安全模式后,如果safe_mode_gid
選項(xiàng)被關(guān)閉,PHP 腳本能夠?qū)ξ募M(jìn)行訪問,且相同用戶組的用戶也能夠?qū)υ撐募M(jìn)行訪問。
因此,建議將該選項(xiàng)設(shè)置為關(guān)閉狀態(tài):
1
|
safe_mode_gid = off
|
該選項(xiàng)參數(shù)僅適用于 Linux 操作系統(tǒng)。
如果不進(jìn)行該設(shè)置,可能無法對服務(wù)器網(wǎng)站目錄下的文件進(jìn)行操作。
三、安全模式下執(zhí)行程序主目錄
如果啟用了安全模式后,想要執(zhí)行某些程序的時(shí)候,可以指定需要執(zhí)行程序的主目錄,例如:
1
|
safe_mode_exec_dir = /usr/bin
|
一般情況下,如果不需要執(zhí)行什么程序,建議您不要指定執(zhí)行系統(tǒng)程序的目錄。可以指定一個(gè)目錄,然后把需要執(zhí)行的程序拷貝到這個(gè)目錄即可,例如:
1
|
safe_mode_exec_dir = /data/www/cmd
|
但是,更推薦不要執(zhí)行任何程序。這種情況下,只需要將執(zhí)行目錄指向網(wǎng)頁目錄即可:
1
|
safe_mode_exec_dir = /data/www
|
四、安全模式下包含文件
如果需要在安全模式下包含某些公共文件,只需要修改以下選項(xiàng)即可:
1
|
safe_mode_include_dir = /data/www/include/
|
一般情況下,PHP 腳本中包含的文件都是在程序已經(jīng)寫好的,可以根據(jù)具體需要進(jìn)行設(shè)置。
五、控制 PHP 腳本能訪問的目錄
使用open_basedir
選項(xiàng)能夠控制 PHP 腳本只能訪問指定的目錄,這樣能夠避免 PHP 腳本訪問不應(yīng)該訪問的文件,一定程度下降低了 phpshell 的危害。一般情況下,可以設(shè)置為只能訪問網(wǎng)站目錄:
1
|
open_basedir = /data/www
|
六、關(guān)閉危險(xiǎn)函數(shù)
如果啟用了安全模式,那么可以不需要設(shè)置函數(shù)禁止,但為了安全考慮,還是建議進(jìn)行相關(guān)設(shè)置。例如,不希望執(zhí)行包括system()
等在內(nèi)的執(zhí)行命令的 PHP 函數(shù),以及能夠查看 PHP 信息的phpinfo()
等函數(shù),那么您可以通過以下設(shè)置禁止這些函數(shù):
1
|
disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
|
如果想要禁止對于任何文件和目錄的操作,可以關(guān)閉以下文件相關(guān)操作。
1
|
disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite, chgrp,chmod, chown
|
以上設(shè)置可以抵制大部分的 phpshell 威脅。
七、關(guān)閉 PHP 版本信息在 HTTP 頭中的泄露
為了防止黑客獲取服務(wù)器中 PHP 版本的信息,禁止該信息在 HTTP 頭部內(nèi)容中泄露:
1
|
expose_php = off
|
這樣設(shè)置之后,黑客在執(zhí)行telnet <domain> 80
嘗試連接服務(wù)器的時(shí)候,將無法看到 PHP 的版本信息。
八、錯(cuò)誤信息控制
一般 PHP 環(huán)境在沒有連接到數(shù)據(jù)庫或者其他情況下會有錯(cuò)誤提示信息,錯(cuò)誤信息中可能包含 PHP 腳本當(dāng)前的路徑信息或者查詢的 SQL 語句等信息,這類信息如果暴露給黑客是不安全的,因此禁止該錯(cuò)誤提示:
1
|
display_errors = Off
|
如果確實(shí)要顯示錯(cuò)誤信息,一定要設(shè)置顯示錯(cuò)誤信息的級別。例如,只顯示警告以上的錯(cuò)誤信息:
1
|
error_reporting = E_WARNING & E_ERROR
|
強(qiáng)烈建議您關(guān)閉錯(cuò)誤提示信息。
九、錯(cuò)誤日志
在關(guān)閉錯(cuò)誤提示信息后,對于錯(cuò)誤信息進(jìn)行記錄,便于排查服務(wù)器運(yùn)行異常的原因:
1
|
log_errors = On
|
同時(shí),需要設(shè)置錯(cuò)誤日志存放的目錄:
1
|
error_log = /data/logs/php_error.log
|
該文件必須設(shè)置允許 Apache 或者 nginx 用戶或用戶組具有寫的權(quán)限。
責(zé)任編輯:售電衡衡
-
碳中和戰(zhàn)略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國家發(fā)改委、國家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè)
-
碳中和戰(zhàn)略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
深度報(bào)告 | 基于分類監(jiān)管與當(dāng)量協(xié)同的碳市場框架設(shè)計(jì)方案
2020-07-21碳市場,碳排放,碳交易 -
碳市場讓重慶能源轉(zhuǎn)型與經(jīng)濟(jì)發(fā)展并進(jìn)
2020-07-21碳市場,碳排放,重慶
-
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國家發(fā)改委、國家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
2020年二季度福建省統(tǒng)調(diào)燃煤電廠節(jié)能減排信息披露
2020-07-21火電環(huán)保,燃煤電廠,超低排放
-
四川“專線供電”身陷違法困境
2019-12-16專線供電 -
我國能源替代規(guī)范法律問題研究(上)
2019-10-31能源替代規(guī)范法律 -
區(qū)域鏈結(jié)構(gòu)對于數(shù)據(jù)中心有什么影響?這個(gè)影響是好是壞呢!