Linux Apache+Proftpd構建虛擬機器主機時要注意的幾個安全問題

來源:互聯網
上載者:User

. proftpd建立hostuser/hostuser帳號,所有使用者均映射到該帳號。
htdocs/hosts 目錄屬主也為hostuser
這樣使用者使用FTP上傳的檔案屬性為hostuser(644 755)。
將FTP鎖定使用者在自己的主目錄下。

apache以nobody運行(以獨立apache使用者更好),讀hostuser的指令檔。
對於要寫入的目錄uploads和cache,必須設定777,且迴圈設定其子目錄。兩個目錄禁止指令碼執行(.htaccess:php_flag engine off)。這樣即使駭客上傳webshell到這兩個目錄,也無法執行。
這樣cache或uploads中的新檔案的屬主將是nobody
cache目錄要限制對外訪問。

這裡存在一個問題,就是apache產生的檔案和目錄644和755,當proftpd以hostuser:hostuser運行時,使用者是無法刪除cache或uploads中的內容的。
解決方案:
(1) 在PHP程式中chmod檔案和目錄分別為666和777
以adodb為例,需修改adodb.inc.php檔案1681行if (!mkdir($dir,0771)) 和adodb-csvlib.inc.php檔案287行chmod($tmpname,0644);兩個地方
(2) 讓使用者在系統裡面清空cache和uploads

2. PHP safe_mode,它的主要作用是讀寫檔案時會檢查當前指令碼和要讀寫或修改的檔案屬主是否一致,如果不一致就拒絕修改。
不過,如果當前指令碼屬主是hostuser,要刪除屬主是nobody的uploads目錄下的檔案,一旦safe_mode開啟,就不能寫了。
所以safe_mode預設是不開啟的,

其替代方案為:

php_admin_value open_basedir /docroot 限制每個使用者只能訪問自己的檔案。這裡的docroot是程式的根目錄,不是程式下的cache或uploads目錄。如果不是根目錄,PHP程式都無法訪問。

3. (不一定能保證)所有PHP程式指令碼能過濾Remote Code Execution和Local File Include攻擊。否則駭客仍有可能讀取config.php中的密碼,或者直接讀寫cache或uploads目錄中的內容。
cache目錄中不可存放類似使用者密碼之類的資料。

4. expose_php設為off ,這樣php不會在http檔案頭中泄露PHP的版本號碼.

Tips:Linux下預設檔案和目錄的mod為 檔案644 目錄755 (即666-22 777-22)umask 22

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.