西(xī)安網站(zhàn)建設 | 西(xī)安網站(zhàn)制(zhì)作(zuò) | 西(xī)安網站(zhàn)設計(jì) | 西(xī)安小(xiǎo)§程序開(kāi)發 | 兄弟(dì)網絡 - 西(xī)安網站(zhàn)建設十餘年(nián)經驗,值得(de)信賴!
了(le)解市(shì)場(chǎng)新觀點,內(nèi)部案例剖析,增強服務意識與專業(yè)水(shuǐ)平。

從(cóng)中國(guó)菜刀(dāo)看(kàn)PHP的(de)運行(xíng)安全問(wèn)題

來(lái)源:西(xī)安網站(zhàn)制(zhì)作(zuò)   日(rì)期:2015-06-14 16:14:2✘8   點擊:5057

近(jìn)些(xiē)日(rì)子(zǐ),小(xiǎo)蔣的(de)一(yī)篇博文(wén)引起了(le)廣大(dà)主機(jī)商的(de)關注。

其原因是(shì)小(xiǎo)蔣運營的(de)創智主機(jī)被提交了(le)漏洞到(dào)烏雲網上(shàng):

PHP運行(xíng) Chroot 虛拟主機(jī) 網站(zhàn)安全 AMH面闆

在這(zhè)篇文(wén)章(zhāng)中小(xiǎo)蔣給出了(le)解決方法,就(jiù)是(shì)采用(yòng)禁用(y±òng)函數(shù)的(de)方法來(lái)保證服務器(qì)環境的(de)安全。

但(dàn)是(shì),禁用(yòng)函數(shù)真的(de)是(shì)最好(hǎo)的(de)選擇麽?不(bù)是(shì)的(de)!

AMH面闆的(de)開(kāi)發者Amysql告訴我們,更好(hǎo)的(de)選擇是(shì)Chroot!

AMH面闆是(shì)一(yī)款LNMP面闆,一(yī)方面,為(wèi)了(le)方便版本升級,另一(yī)方面,面闆是(shì)開(kāi)發者一(yī)個(gè)人(rén)開(k•āi)發的(de),所以AMH沒有(yǒu)像kangle,WDCP,LUM,webmin等采用(yòng)二進制(zhì)文(wén)件♦(jiàn)實現(xiàn)平台的(de)環境,而是(shì)使用(yòng)基于AMP的(de)PHP程序來(lái)控制(zhì)平台。這(zhè)樣,就™(jiù)要(yào)考慮到(dào)PHP的(de)安全問(wèn)題了(le)。由于PHP寫成的(de)程序,所以需要(yào)大(dà)量的(de)₹的(de)使用(yòng)exec,shell_exec兩個(gè)函數(shù)來(lái)實現(xiàn)面闆和(hé)系統的(de)信息交換處理(lǐ)。顯然,小(xiǎo)蔣給出的(‍de)限制(zhì)函數(shù)的(de)方法并不(bù)适合AMH這(zhè)樣的(de)面闆。那(nà)麽₽,Amysql如(rú)何解決PHP的(de)運行(xíng)安全問(wèn)題呢(ne)?

Amysql采用(yòng)了(le)這(zhè)樣的(de)方法。對(duì)于AMH下(xià)的(de)虛拟主機(jī),一(yī)律開(k¶āi)啓Chroot來(lái)保證安全,而控制(zhì)台PHP則關閉chroot來(lái)保證面闆的(de)正常運作(zuò)。

說(shuō)了(le)這(zhè)麽多(duō),那(nà)麽什(shén)麽是(shì)Chroot呢(ne)?

據維基百科(kē)的(de)詞條解釋,Chroot本是(shì)Unix下(xià)的(de)一(yī)個(gè)命令,但(dàn)是(shì),在PHP-FPM中₩,也(yě)是(shì)引入了(le)這(zhè)一(yī)功能(néng)。

維基詞條

chroot是(shì)在unix系統的(de)一(yī)個(gè)操作(zuò),用(yòng)于對(duì)當前的(de)程序和(hé)它的(de)子(zǐ)進程改變真實的(de)磁盤根目錄

Chroot的(de)工(gōng)作(zuò)原理(lǐ)是(shì)什(shén)麽呢(ne)?

由于LNMP環境下(xià),PHP-FPM與Nginx的(de)通(tōng)信隻能(néng)通(↑tōng)過CGI實現(xiàn),所以,如(rú)果你(nǐ)在FPM設置中對(duì)文(wén)件(jiànφ)的(de)根目錄進行(xíng)修改,那(nà)麽,你(nǐ)的(de)PHP程序就(jiù)無法跨越這(zhè)個(gè)指定的(de)根目錄。

而面闆所在的(de)虛拟主機(jī),由于沒有(yǒu)開(kāi)啓Chroot,所以使用(yòng)的(de)根目錄依然是(₩shì)系統的(de)根目錄 /

具體(tǐ)解釋一(yī)下(xià)?

就(jiù)拿(ná)我用(yòng)的(de)AMH面闆的(de)控制(zhì)台和(hé)普通(tōng)虛拟主機(jī)來(láiσ)說(shuō)明(míng)。

控制(zhì)台文(wén)件(jiàn)放(fàng)在/home/Wwwroot/Index/Web文(wén)件(jiàn)夾下(xià),

普通(tōng)主機(jī)的(de)文(wén)件(jiàn)放(fàng)在/home/wwwroot/Domain♥/web文(wén)件(jiàn)夾下(xià)。

對(duì)于控制(zhì)台程序,由于沒有(yǒu)開(kāi)啓Chroot,所以,這(zhè)個(gè)PHP文(wén‍)件(jiàn)的(de)實際位置和(hé)運行(xíng)位置相(xiàng)同,都(dōu)是(shì)/home/ww∞wroot/Index/web/,而其根目錄就(jiù)是(shì)/;

對(duì)于普通(tōng)虛拟主機(jī),開(kāi)啓Chroot,那(nà)麽,雖然,運行(xíng)的(de)文(wén)件(jiàn)的(‍de)位置是(shì)/home/wwwroot/domain/web/index.php,但(dàn)是(shì)£經過Chroot的(de)導向,在PHP程序中,實際認為(wèi)的(de)文(wén)件(jiàn)地(dì)址是(shì)/we≤b/index.php.

同時(shí)在/home/wwwroot/domain/為(wèi)了(le)使入侵者認為(wèi)自(zì)己進入的(de)是(↔shì)根系統,而仿照(zhào)Unix的(de)文(wén)件(jiàn)夾命名規則,創建了(le)etc,usr,tmp,lib等文(wén)件δ(jiàn)夾,如(rú)同為(wèi)PHP程序創建了(le)一(yī)個(gè)沙盒.所以,使用(yòng)Chroot的(de)用(yòng)戶不(bù)用(yòng)害×怕中國(guó)軍刀(dāo),因為(wèi)他(tā)隻能(néng)在沙盤內(nèi)起作(zuò)用(yòng),無法對(duì)主系統®産生(shēng)影(yǐng)響,從(cóng)而造成經濟損失

沙盒(英語:sandbox),有(yǒu)時(shí)也(yě)稱為(wèi)沙箱,是(shì)為(wèi>)一(yī)些(xiē)來(lái)源不(bù)可(kě)信、具備破壞力或無法判定程序意圖的(de)±程序提供試驗的(de)環境。然而,沙盒中的(de)所有(yǒu)改動對(duì)操作(zuò)系統不(bù)會(huì)造成任何損失。通(tōng)$常,這(zhè)種技(jì)術(shù)被計(jì)算(suàn)機(jī)技(jì)術(shù)人(rén)員(yuán)廣泛使用(yòng),尤其是(shì)計(j$ì)算(suàn)機(jī)殺毒軟件(jiàn)行(xíng)業(yè),沙盒是(shì)一(yī)個(gè)觀察計(jì)算(suàn)機(jī)病毒的(de)重要(yào)環境。 ™

我們都(dōu)知(zhī)道(dào),在類Unix系統中,所有(yǒu)程序,甚至設備,都(dōu)是(shì)由文•(wén)件(jiàn)表示,我們所使用(yòng)的(de)ls,wget命令,事(shì)實上(shàng)都(dōu)對(duì)應著(zhe)一(yī)個(gè)特定的₩(de)可(kě)執行(xíng)文(wén)件(jiàn),而當我們使用(yòng)Chroot後,由于/home/wwwwroot/domain/usr下'(xià)沒有(yǒu)相(xiàng)應的(de)文(wén)件(jiàn),也(yě)就(jiù)無法執行(x<íng)相(xiàng)應的(de)命令。從(cóng)而保證系統信息的(de)安全。

與禁用(yòng)函數(shù)相(xiàng)比,Chroot有(yǒu)什(shén)麽優點呢(ne)?

禁用(yòng)函數(shù)是(shì)針對(duì)整個(gè)PHP程序而言的(de),所有(yǒu)需要(yào)通(tōng)過PHP程序進行(xíng)解析的(de✘)文(wén)件(jiàn),都(dōu)會(huì)受到(dào)禁用(yòng)函數(shù)的(de)設置。

網站(zhàn)程序不(bù)同,那(nà)麽有(yǒu)可(kě)能(néng)需要(yào)的(de)函數(shù)不(bù)同,不(bù)同的(de)虛拟主機(jī)無法單獨設置。 

而Chroot可(kě)以根據不(bù)同的(de)虛拟主機(jī),進行(xíng)特異化(huà)設置。對(duì)于需要(yào)使用(yòng)特殊函數(shùβ)的(de)程序,可(kě)以關閉Chroot,來(lái)保證網站(zhàn)程序的(de)正常運轉;程序不(bù)需要(yào)調用(yòng≥)特殊的(de)程序,就(jiù)可(kě)以開(kāi)啓Chroot模式;如(rú)果隻是(shì)要(yào)啓用(yòng)>一(yī)個(gè)或兩個(gè)特定的(de)程序,你(nǐ)可(kě)以仿照(zhào)如(rú)下(xià)的(de)過程添加函數(shù)。比如(rú)說(shuō),當我們開(kāiδ)啓Chroot時(shí),PHP程序是(shì)無法使用(yòng)sendmail()函數(shù)來(lái)發信 的(de),我們可(kě)以使用(yòng)mini_sendmail替代sendmail來(lái)修複發信。

  • cd /home/wwwroot/www.ixiqin.com/
  • cp -P /bin/bash /bin/sh bin
  • cp /etc/passwd /etc/group etc
  • cd /tmp
  • wget http://centos.googlecode.com/files/mini_send×mail-1.3.6.tar.gz
  • tar xzf mini_sendmail-1.3.6.tar.gz
  • cd mini_sendmail-1.3.6
  • make
  • cp mini_sendmail /home/wwwroot/www.ixiqin.com/usr/sbin/sendmail

以上(shàng)代碼,在/tmp目錄下(xià)編譯mini_sendmail,然後将生(shēng)成的(de)可(kě)執行(•xíng)文(wén)件(jiàn)複制(zhì)到(dào)chroot後目錄下(xià)相(xiàng)應位置,以保證發件(jiàn​)系統的(de)正常運行(xíng)。

非AMH用(yòng)戶如(rú)何使用(yòng)Chroot功能(néng)

如(rú)果你(nǐ)是(shì)AMH的(de)用(yòng)戶,那(nà)你(nǐ)就(jiù)省心了(le),因為(wèi)Amysql将這(zhè)個(gè)功能(néng)集成到( dào)了(le)模塊裡(lǐ),而且默認情況下(xià)每一(yī)個(gè)虛拟主機(jī)都(dōu)是(s∑hì)開(kāi)啓了(le)安全模式的(de),你(nǐ)隻需要(yào)在後台下(xià)載AMChroot模塊,管理(lǐ)即可(kě)。

如(rú)果你(nǐ)不(bù)是(shì)AMH用(yòng)戶,也(yě)可(kě)以使用(yòng)這(zhè)個(→gè)功能(néng),隻需要(yào)修改Nginx和(hé)PHP-FPM的(de)配置文(wén)件(jiàn)即可(kě)。

由于要(yào)把domain站(zhàn)點限制(zhì)在/home/wwwroot/domain,所以對(duì)于php-fpm,此網站(zhàn)根目錄已經變成是(shì)¥/web,所以我們需要(yào)更改Nginx傳遞給php-fpm的(de)網站(zhàn)根目錄地(dì)址。

找到(dào)

  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_na₽me;

更改為(wèi)

  • fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_εname;

同時(shí),将php-fpm.conf文(wén)件(jiàn)中的(de)Chroot改為(wèεi)

  • chroot = /home/wwwroot/domain

有(yǒu)什(shén)麽需要(yào)注意的(de)呢(ne)?

Tips One:Chroot模式下(xià),各種探針,如(rú)雅黑(hēi)探針将會(huì)失效,報(bào)錯(cuò)。

Tips Two:Chroot模式可(kě)用(yòng)做(zuò)在線shell模拟器(qì),安全真實。

綜合以上(shàng)分(fēn)析,我建議(yì),與其使用(yòng)死闆的(de)禁用(yòng)函數(shù),我們為(wèi)什(shén)麽不(bù)試試更加♣好(hǎo)用(yòng)的(de)Chroot呢(ne)?

注:相(xiàng)關網站(zhàn)建設技(jì)巧閱讀(dú)請(qǐng)移步到(dào)建站(zhàn)教程頻(pín)道(dào)。

上(shàng)一(yī)篇:站(zhàn)長(cháng)們注意了(le)!百度已加大(dà)清理(lǐ)新聞源力度     下(xià)一(yī)篇:防中國(guó)菜刀(dāo):禁用(yòng) php 函數(shù) 增強網站(zhàn)安全
掃碼立即溝通(tōng)
公衆号加關注
版權所有(yǒu):西安兄弟信息科技有限公司 京ICP證000000号   地(dì)址:西(xī)安市(shì)三橋街(jiē)道(dào)恒大(dà)都(dōu)市(shì)廣場(chǎng)(1号線沣東(dōng)自(zì)貿園站(zh§àn)C1口)  營業(yè)執照(zhào)      
關閉
029-86512630 工(gōng)作(zuò):8:30-17:30

*