時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
1. proftpd建立hostuser/hostuser帳號(hào),所有用戶(hù)均映射到該帳號(hào)。
htdocs/hosts 目錄屬主也為hostuser
這樣用戶(hù)使用FTP上傳的文件屬性為hostuser(644 755)。
將FTP鎖定用戶(hù)在自己的主目錄下。
apache以nobody運(yùn)行(以獨(dú)立apache用戶(hù)更好),讀hostuser的腳本文件。
對(duì)于要寫(xiě)入的目錄uploads和cache,必須設(shè)定777,且循環(huán)設(shè)定其子目錄。兩個(gè)目錄禁止腳本執(zhí)行(.htaccess:php_flag engine off)。這樣即使黑客上傳webshell到這兩個(gè)目錄,也無(wú)法執(zhí)行。
這樣cache或uploads中的新文件的屬主將是nobody
cache目錄要限制對(duì)外訪問(wèn)。
這里存在一個(gè)問(wèn)題,就是apache生成的文件和目錄644和755,當(dāng)proftpd以hostuser:hostuser運(yùn)行時(shí),用戶(hù)是無(wú)法刪除cache或uploads中的內(nèi)容的。
解決方法:
(1) 在PHP程序中chmod文件和目錄分別為666和777
以adodb為例,需修改adodb.inc.php文件1681行if (!mkdir($dir,0771)) 和adodb-csvlib.inc.php文件287行chmod($tmpname,0644);兩個(gè)地方
(2) 讓用戶(hù)在系統(tǒng)里面清空cache和uploads
2. PHP safe_mode,它的主要作用是讀寫(xiě)文件時(shí)會(huì)檢查當(dāng)前腳本和要讀寫(xiě)或修改的文件屬主是否一致,如果不一致就拒絕修改。
不過(guò),如果當(dāng)前腳本屬主是hostuser,要?jiǎng)h除屬主是nobody的uploads目錄下的文件,一旦safe_mode打開(kāi),就不能寫(xiě)了。
所以safe_mode默認(rèn)是不打開(kāi)的,
其替代方案為:
php_admin_value open_basedir /docroot 限制每個(gè)用戶(hù)只能訪問(wèn)自己的文件。這里的docroot是程序的根目錄,不是程序下的cache或uploads目錄。如果不是根目錄,PHP程序都無(wú)法訪問(wèn)。
3. (不一定能保證)所有PHP程序腳本能過(guò)濾Remote Code Execution和Local File Include攻擊。否則黑客仍有可能讀取config.php中的密碼,或者直接讀寫(xiě)cache或uploads目錄中的內(nèi)容。
cache目錄中不可存放類(lèi)似用戶(hù)密碼之類(lèi)的數(shù)據(jù)。
4. expose_php設(shè)為off ,這樣php不會(huì)在http文件頭中泄露PHP的版本號(hào)。
關(guān)鍵詞標(biāo)簽:Apache,Proftpd,虛擬主
相關(guān)閱讀
熱門(mén)文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點(diǎn)配置
人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法 如何從最大用戶(hù)并發(fā)數(shù)推算出系統(tǒng)最大用戶(hù)數(shù) Server Application Unavailable的解決辦法 報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)