原文地址:http://www.myhack58.com/Article/60/61/2013/37209.htm
根據(jù)生產(chǎn)環(huán)境不斷反饋,發(fā)現(xiàn)不斷有PHP網(wǎng)站被掛木馬,絕大部分原因是因?yàn)闄?quán)限設(shè)置不合理造成。因?yàn)榉?wù)器軟件,或是 php 程序中存在漏洞都是難免的,在這種情況下,如果能正確設(shè)置linux網(wǎng)站目錄權(quán)限, php 進(jìn)程權(quán)限,那么網(wǎng)站的安全性實(shí)際上是可以得到保障的。
那么,造成網(wǎng)站被掛木馬的原因是什么?
ftp 連接信息被破解,對(duì)這個(gè)原因,可行的辦法就是使用非常復(fù)雜的FTP 用戶名(不要使用常用的用戶名),如果是固定作業(yè),可考慮使用 iptables防火墻限制來(lái)源 IP 。但是一些情景下,可能需要使用 VPN 以便遠(yuǎn)程維護(hù)。 即網(wǎng)站維護(hù)者需要使用 FTP 修改網(wǎng)站文件時(shí),必須先登錄到 IDC 機(jī)房的 VPN 服務(wù)器上,再進(jìn)行后續(xù)的操作。
網(wǎng)站服務(wù)器軟件/ 配置 /php 程序存在漏洞,被利用,在討論這個(gè)問(wèn)題前,先說(shuō)明文件及進(jìn)程權(quán)限的幾個(gè)概念:
FTP用戶對(duì)網(wǎng)站目錄具有最大修改權(quán)限,那么網(wǎng)站的文件所有者一定屬于 FTP, 這是毋庸置疑的 , 否則如何修改文件呢?
php-fpm進(jìn)程,Nginx進(jìn)程對(duì)網(wǎng)站文件至少需要有讀取權(quán)限,例如,以下命令即可查看這兩個(gè)進(jìn)程所使用的賬號(hào):
通過(guò)上圖,我們可以發(fā)現(xiàn),nginx 和 php-fpm 子進(jìn)程賬號(hào)是 nobody 。
我們?cè)俨榭淳W(wǎng)站文件目錄的權(quán)限:
發(fā)現(xiàn)網(wǎng)站文件所有者是www 賬號(hào),那說(shuō)明:
但是我們發(fā)現(xiàn),有不少系統(tǒng)管理員為了省事,違背了Linux 最小化權(quán)限的原則,設(shè)置 php-fpm 進(jìn)程以網(wǎng)站文件所有者賬號(hào)運(yùn)行,當(dāng)然這樣可能會(huì)方便 php 開(kāi)發(fā)人員( php-fpm 進(jìn)程對(duì)整個(gè)網(wǎng)站目錄具有可寫(xiě)權(quán)限),但是這樣一來(lái), Linux 體系的文件系統(tǒng)權(quán)限原則將被打破,所有的安全措施將形同虛設(shè)。可以想象的是,萬(wàn)一 php 程序中有漏洞,攻擊者上傳木馬,便可以修改網(wǎng)站的所有文件,網(wǎng)站首頁(yè)被黑,也就不足為怪了。
退一步,如果我們?cè)O(shè)置了較嚴(yán)格的權(quán)限,就算php 程序中存在漏洞,那么攻擊者也只能篡改權(quán)限為 777 的目錄,其它的文件是無(wú)法被改寫(xiě)的,網(wǎng)站不就就得更安全了嗎?
核心總結(jié):php-fpm 子進(jìn)程所使用的用戶,不能是網(wǎng)站文件所有者。 凡是違背這個(gè)原則,則不符合最小權(quán)限原則。
經(jīng)過(guò)我參閱網(wǎng)上關(guān)于nginx, php-fpm 配置的文章教程和市面上的一些書(shū)籍,發(fā)現(xiàn)有不少人受這些文章的誤導(dǎo),直接讓 php-fpm 子進(jìn)程以網(wǎng)站所有者賬號(hào)運(yùn)行,例如張宴的《實(shí)戰(zhàn) nginx 取代 apache 的高性能 Web 服務(wù)器》一書(shū)的 52 頁(yè)中,存在以下設(shè)置:
www www
官方提供的配置文件中,php-fpm 子進(jìn)程使用 nobody 用戶,這完全是合理的,無(wú)須修改。
那么nginx 的子進(jìn)程用戶,如何設(shè)置合理?我的建議是也使用 nobody (對(duì)錯(cuò)誤日志寫(xiě)入等無(wú)影響),設(shè)置方法如下:
nginx.conf文件第一行設(shè)置為 user nobody; , 再執(zhí)行 nginx -s reload 即可。
php-fpm子進(jìn)程用戶設(shè)置方法:
編輯文件php-fpm.conf (一般位于 /usr/local/php/etc/php-fpm.conf 視安裝參數(shù)為準(zhǔn)),找到 user 、group 兩個(gè)參數(shù)的定義,將其設(shè)置為nobody( 默認(rèn)已經(jīng)是 nobody) ,再重啟 php-fpm 進(jìn)程即可。
網(wǎng)站可寫(xiě)目錄的特殊注意
這里的可寫(xiě),是相對(duì)php-fpm 子進(jìn)程而言。一個(gè)網(wǎng)站最容易出安全問(wèn)題的即是可寫(xiě)目錄,如果可寫(xiě)目錄權(quán)限能控制嚴(yán)格,安全系數(shù)也將大大提高。 我們認(rèn)為,一個(gè)網(wǎng)站可寫(xiě)目錄主要分為以下幾種:
也就是說(shuō)對(duì)網(wǎng)站開(kāi)發(fā)人員而言,需要對(duì)可寫(xiě)目錄實(shí)現(xiàn)動(dòng)靜分離,不同性能的文件,應(yīng)該區(qū)別對(duì)待之,這樣也就方便系統(tǒng)管理員,設(shè)置合理的nginx 規(guī)則,以提高安全性。
簡(jiǎn)單地去掉php 文件的執(zhí)行權(quán)限,并不能阻止 php-fpm 進(jìn)程解析之。
接下來(lái),根據(jù)以上總結(jié),系統(tǒng)管理員如何配置nginx 的目錄規(guī)則,才更安全呢?
數(shù)據(jù)緩存目錄 /cache/,這個(gè)目錄的特點(diǎn)是需要777 權(quán)限,無(wú)須提供給用戶訪問(wèn),那么可以按以下參考配置 nginx
location ~ “^/cache” {return 403;}location ~ “.php$” {fastcgi_pass 127.0.0.0:9000;………………..}
這時(shí),任何用戶將無(wú)法訪問(wèn)/cache/ 目錄內(nèi)容。
附件上傳目錄 attachments
此目錄的特點(diǎn)是需要開(kāi)放訪問(wèn)權(quán)限,但所有文件不能由php 引擎解析(包括后綴名改為 gif 的木馬文件)
location ~ “^/attachments” {}location ~ “.php$” {fastcgi_pass 127.0.0.0:9000;………………..}
注意,上面對(duì)attachments 目錄的 location 定義中是沒(méi)有任何語(yǔ)句的。 nginx 對(duì)正則表達(dá)式的 location 匹配優(yōu)先級(jí)最高,任何一個(gè)用正則表達(dá)式定義的 location, 只要匹配一次,將不會(huì)再匹配其它正則表達(dá)式定義的 location 。
現(xiàn)在,請(qǐng)?jiān)赼ttachments 目錄下建立一個(gè) php 腳本文件,再通過(guò)瀏覽器訪問(wèn)安,我們發(fā)現(xiàn)瀏覽器提示下載,這說(shuō)明 nginx 把 attachments 目錄下的文件當(dāng)成靜態(tài)文件處理,并沒(méi)有交給 php fastcgi 處理。這樣即使可寫(xiě)目錄被植入木馬,但因?yàn)槠錈o(wú)法被執(zhí)行,網(wǎng)站也就更安全了。
顯然,重要的php 配置文件,請(qǐng)勿放在此類目錄下。
靜態(tài)文件生成目錄 public
這些目錄一般都是php 生成的靜態(tài)頁(yè)的保存目錄,顯然與附件目錄有類似之處,按附件目錄的權(quán)限設(shè)置即可。可以預(yù)見(jiàn)的是,如果我們?cè)O(shè)置了較嚴(yán)格的權(quán)限,即使網(wǎng)站php 程序存在漏洞,木馬腳本也只能被寫(xiě)入到權(quán)限為 777 的目錄中去,如果配合上述嚴(yán)格的目錄權(quán)限控制,木馬也無(wú)法被觸發(fā)運(yùn)行,整個(gè)系統(tǒng)的安全性顯然會(huì)有顯著的提高。
但是網(wǎng)站可寫(xiě)目錄的作用及權(quán)限,只有開(kāi)發(fā)人員最為清楚。這方面需要php 開(kāi)發(fā)人員和系統(tǒng)管理員積極溝通。我們使用的方式是:項(xiàng)目上線前,開(kāi)發(fā)人員根據(jù)以文檔形式提供網(wǎng)站可寫(xiě)目錄的作用及權(quán)限,由系統(tǒng)管理員針對(duì)不同目錄進(jìn)行權(quán)限設(shè)置。任何一方修改了網(wǎng)站目錄權(quán)限,但未體現(xiàn)到文檔中,我們認(rèn)為是違反工作流程的。
新聞熱點(diǎn)
疑難解答
圖片精選