国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > php-fpm的搭建跟加固方法

php-fpm的搭建跟加固方法

時(shí)間:2023-04-18 23:42:02 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-04-18 23:42:02 來源:網(wǎng)站運(yùn)營

php-fpm的搭建跟加固方法:

php-fpm安裝

nginx本身不能處理PHP,它只是個(gè)web服務(wù)器,當(dāng)接收到請求后,如果是php請求,則發(fā)給php解釋器處理,并把結(jié)果返回給客戶端。 nginx一般是把請求發(fā)fastcgi管理進(jìn)程處理,fascgi管理進(jìn)程選擇cgi子進(jìn)程處理結(jié)果并返回被nginx。

那什么又是cgi呢?

CGI(Common Gateway Interface)。CGI是外部應(yīng)用程序(CGI程序)與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將Web的一組簡單的靜態(tài)超媒體文檔變成一個(gè)完整的新的交互式媒體。

簡單的說,就是:cgi就是專門用來和web 服務(wù)器打交道的。web服務(wù)器收到用戶請求,就會(huì)把請求提交給cgi程序(php的fastcgi),cgi程序根據(jù)請求提交的參數(shù)作應(yīng)處理(解析php),然后輸出標(biāo)準(zhǔn)的html語句返回給web服服務(wù)器,再返回給客戶端,這就是普通cgi的工作原理。

安裝

yum安裝

yum install php php-mysql php-fpm安裝成功。

php-fpm配置文件路徑:/etc/php-fpm.d/www.conf

php配置文件路徑:/etc/php.ini

說明:

php-mysql,這個(gè)是后續(xù)鏈接mysql需要的

修改php配置

php.ini

將 ;cgi.fix_pathinfo=1 改為 cgi.fix_pathinfo=1 只要把前面的分號去掉就可以了;

fix_pathinfo是用來干嘛的呢?

為CGI提供真正的PATH_INFO / PATH_TRANSLATED支持,不打開,nginx是解析不了路徑的。

www.conf

將 user = apache group = apache

改為 user = nginx group = nginx

nginx配置php-fpm解析php請求

注:nginx安裝參考

/etc/nginx/conf.d目錄下新增php-fpm.conf,內(nèi)容配置如下

server { listen 80; server_name 192.168.189.134; location ~ .php$ { try_files $uri =404; root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

這個(gè)配置的意思是 在瀏覽器中訪問的.php文件,實(shí)際讀取的是 $document_root(網(wǎng)站根目錄)下的.php文件 -- 也就是說當(dāng)訪問127.0.0.1/index.php的時(shí)候,需要讀取網(wǎng)站根目錄下面的index.php文件,如果沒有配置這一配置項(xiàng)時(shí),nginx不回去網(wǎng)站根目錄下訪問.php文件,所以返回空白

SCRIPT_FILENAME這個(gè)參數(shù)在fastcgi_params也有,默認(rèn)是$fastcgi_script_name,可以看出只是添加了網(wǎng)站根目錄

啟動(dòng)php-fpm

開啟自啟動(dòng)

sudo systemctl enable php-fpm

測試是否設(shè)置成功

/usr/share/nginx/html目錄下新建phpinfo.php文件,內(nèi)容如下:

<?php echo 6666666666; phpinfo(); ?>

重啟nginx

sudo systemctl restart nginx

訪問http://192.168.189.134/phpinfo.php

可以訪問,已經(jīng)成功安裝了。

加固

php-fpm降權(quán)

修改/etc/php-fpm.d/www.conf將 user = apache group = apache改為 user = nobody group = nobody

php啟動(dòng)安全模式

PHP 環(huán)境提供的安全模式是一個(gè)非常重要的內(nèi)嵌安全機(jī)制,PHP 安全模式能有效控制一些 PHP 環(huán)境中的函數(shù)(例如system()函數(shù),官網(wǎng)有個(gè)列表),對大部分的文件操作函數(shù)進(jìn)行權(quán)限控制,同時(shí)不允許對某些關(guān)鍵文件進(jìn)行修改(例如 /etc/passwd)。默認(rèn)的 php.ini 配置文件并沒有啟用安全模式

php5.4以前的版本修改/etc/php.ini

safe_mode = on

php5.4就移除安全模式了,下面是官網(wǎng)的說明

下面是安全模式下的功能

用戶組安全

當(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):

safe_mode_gid = off

安全模式下執(zhí)行程序主目錄

如果啟用了安全模式后,想要執(zhí)行某些程序的時(shí)候,可以指定需要執(zhí)行程序的主目錄,例如:

safe_mode_exec_dir = /usr/bin一般情況下,如果不需要執(zhí)行什么程序,建議您不要指定執(zhí)行系統(tǒng)程序的目錄。您可以指定一個(gè)目錄,然后把需要執(zhí)行的程序拷貝到這個(gè)目錄即可,例如:

safe_mode_exec_dir = /temp/cmd但是,更推薦您不要執(zhí)行任何程序。這種情況下,只需要將執(zhí)行目錄指向網(wǎng)頁目錄即可:

safe_mode_exec_dir = /usr/www

安全模式下包含文件

如果您需要在安全模式下包含某些公共文件,您只需要修改以下選項(xiàng)即可:

safe_mode_include_dir = /usr/www/include/一般情況下,PHP 腳本中包含的文件都是在程序已經(jīng)寫好的,可以根據(jù)您的具體需要進(jìn)行設(shè)置。

設(shè)置 doc_root

修改/etc/php.ini

doc_root = /usr/share/nginx/hml/

上圖是修改后的,訪問的phpinfo.php不在這個(gè)目錄下,所以不被解析并訪問

查看日志,現(xiàn)在不能打開這個(gè)php,起到限制php的執(zhí)行目錄,doc_root目錄以外的php無法被解析

修改為正確的路徑

doc_root = /usr/share/nginx/html/

重啟pgp-fpm

可以被解析并訪問

控制 PHP 腳本能訪問的目錄

修改/etc/php.ini

open_basedir = /usr/share/nginx/htm/

訪問的phpinfo.php不在上面的目錄下,則禁止訪問

修改為正確路徑則訪問成功

關(guān)閉危險(xiǎn)函數(shù)

如果您啟用了安全模式,那么可以不需要設(shè)置函數(shù)禁止,但為了安全考慮,還是建議您進(jìn)行相關(guān)設(shè)置。例如,您不希望執(zhí)行包括system()等在內(nèi)的執(zhí)行命令的 PHP 函數(shù),以及能夠查看 PHP 信息的phpinfo()等函數(shù),那么您可以通過以下設(shè)置禁止這些函數(shù):

disable_functions=phpinfo

上面做測試禁用了phpinfo,重啟php-fpm

phpinfo.php里面使用了這個(gè)函數(shù),我們看下是否能執(zhí)行

沒有php的信息,函數(shù)被禁用了。

關(guān)閉 PHP 版本信息在 HTTP 頭中的泄露

暴露給黑客的信息越少,攻擊成功就會(huì)越高,php版本也是一樣的,不知道版本就不能針對具體版本進(jìn)行研究入侵了。

修改/etc/php.ini文件如下

expose_php=off

重啟php-fpm

我們驗(yàn)證是否設(shè)置成功了,圖片可看出生效了,沒有了php版本信息

錯(cuò)誤信息控制

display_errors = Offerror_reporting = E_WARNING & E_ERROR

錯(cuò)誤日志

一般 PHP 環(huán)境在沒有連接到數(shù)據(jù)庫或者其他情況下會(huì)有錯(cuò)誤提示信息,錯(cuò)誤信息中可能包含 PHP 腳本當(dāng)前的路徑信息或者查詢的 SQL 語句等信息,這類信息如果暴露給黑客是不安全的,因此建議您禁止該錯(cuò)誤提示:

修改/etc/php.ini

display_errors = Off #如果您確實(shí)要顯示錯(cuò)誤信息,一定要設(shè)置顯示錯(cuò)誤信息的級別。例如,只顯示警告以上的錯(cuò)誤信息: error_reporting = E_WARNING & E_ERROR

打開錯(cuò)誤信息提示

關(guān)閉錯(cuò)誤信息提示

對比上面的錯(cuò)誤信息,打開狀態(tài)直接暴露了phpinfo.php的路徑了,給黑客很好的信息了。

關(guān)閉注冊全局變量

在 PHP 環(huán)境中提交的變量,包括使用 POST 或者 GET 命令提交的變量,都將自動(dòng)注冊為全局變量,能夠被直接訪問。這對您的服務(wù)器是非常不安全的,因此建議您將注冊全局變量的選項(xiàng)關(guān)閉,禁止將所提交的變量注冊為全局變量。

register_globals = off注意: 該選項(xiàng)參數(shù)在 PHP 5.3 以后的版本中已被移

防護(hù)SQL注入攻擊

php5.4以前的版本,有一個(gè)自動(dòng)將進(jìn)入 PHP 腳本的數(shù)據(jù)進(jìn)行轉(zhuǎn)義的過程。

當(dāng)打開時(shí),所有的 '(單引號),"(雙引號),*/*(反斜線)和 NULL 字符都會(huì)被自動(dòng)加上一個(gè)反斜線進(jìn)行轉(zhuǎn)義。這和 addslashes() 作用完全相同。最好在編碼時(shí)不要轉(zhuǎn)義而在運(yùn)行時(shí)根據(jù)需要而轉(zhuǎn)義,被稱為魔術(shù)引號(Magic Quote),不過php5.4開始就被移除了.

php5.4以前的版本修改配置/etc/php.ini

magic_quotes_gpc = On以上內(nèi)容希望幫助到大家,更多PHP大廠PDF面試文檔,PHP進(jìn)階架構(gòu)視頻資料,PHP精彩好文可以關(guān)注公眾號:PHP開源社區(qū),或者訪問:

精華PHP技術(shù)文章整理合集——PHP框架篇

精華PHP技術(shù)文合集——微服務(wù)架構(gòu)篇

精華PHP技術(shù)文合集——分布式架構(gòu)篇

精華PHP技術(shù)文合集——高并發(fā)場景篇

精華PHP技術(shù)文章整理合集——數(shù)據(jù)庫篇

關(guān)鍵詞:方法

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉