Linux Apache+Proftpd構(gòu)建虛擬主機(jī)時(shí)要注意的幾個(gè)安全問題
更新時(shí)間:2009年08月09日 00:49:39 作者:
Linux下Apache+Proftpd構(gòu)建虛擬主機(jī)時(shí)要注意的幾個(gè)安全問題,大家可以參考下,有其它未完整的地方,大家可以補(bǔ)充下。
. proftpd建立hostuser/hostuser帳號(hào),所有用戶均映射到該帳號(hào)。
htdocs/hosts 目錄屬主也為hostuser
這樣用戶使用FTP上傳的文件屬性為hostuser(644 755)。
將FTP鎖定用戶在自己的主目錄下。
apache以nobody運(yùn)行(以獨(dú)立apache用戶更好),讀hostuser的腳本文件。
對(duì)于要寫入的目錄uploads和cache,必須設(shè)定777,且循環(huán)設(shè)定其子目錄。兩個(gè)目錄禁止腳本執(zhí)行(.htaccess:php_flag engine off)。這樣即使黑客上傳webshell到這兩個(gè)目錄,也無法執(zhí)行。
這樣cache或uploads中的新文件的屬主將是nobody
cache目錄要限制對(duì)外訪問。
這里存在一個(gè)問題,就是apache生成的文件和目錄644和755,當(dāng)proftpd以hostuser:hostuser運(yùn)行時(shí),用戶是無法刪除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) 讓用戶在系統(tǒng)里面清空cache和uploads
2. PHP safe_mode,它的主要作用是讀寫文件時(shí)會(huì)檢查當(dāng)前腳本和要讀寫或修改的文件屬主是否一致,如果不一致就拒絕修改。
不過,如果當(dāng)前腳本屬主是hostuser,要?jiǎng)h除屬主是nobody的uploads目錄下的文件,一旦safe_mode打開,就不能寫了。
所以safe_mode默認(rèn)是不打開的,
其替代方案為:
php_admin_value open_basedir /docroot 限制每個(gè)用戶只能訪問自己的文件。這里的docroot是程序的根目錄,不是程序下的cache或uploads目錄。如果不是根目錄,PHP程序都無法訪問。
3. (不一定能保證)所有PHP程序腳本能過濾Remote Code Execution和Local File Include攻擊。否則黑客仍有可能讀取config.php中的密碼,或者直接讀寫cache或uploads目錄中的內(nèi)容。
cache目錄中不可存放類似用戶密碼之類的數(shù)據(jù)。
4. expose_php設(shè)為off ,這樣php不會(huì)在http文件頭中泄露PHP的版本號(hào).
Tips:Linux下默認(rèn)文件和目錄的mod為 文件644 目錄755 (即666-22 777-22)umask 22
htdocs/hosts 目錄屬主也為hostuser
這樣用戶使用FTP上傳的文件屬性為hostuser(644 755)。
將FTP鎖定用戶在自己的主目錄下。
apache以nobody運(yùn)行(以獨(dú)立apache用戶更好),讀hostuser的腳本文件。
對(duì)于要寫入的目錄uploads和cache,必須設(shè)定777,且循環(huán)設(shè)定其子目錄。兩個(gè)目錄禁止腳本執(zhí)行(.htaccess:php_flag engine off)。這樣即使黑客上傳webshell到這兩個(gè)目錄,也無法執(zhí)行。
這樣cache或uploads中的新文件的屬主將是nobody
cache目錄要限制對(duì)外訪問。
這里存在一個(gè)問題,就是apache生成的文件和目錄644和755,當(dāng)proftpd以hostuser:hostuser運(yùn)行時(shí),用戶是無法刪除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) 讓用戶在系統(tǒng)里面清空cache和uploads
2. PHP safe_mode,它的主要作用是讀寫文件時(shí)會(huì)檢查當(dāng)前腳本和要讀寫或修改的文件屬主是否一致,如果不一致就拒絕修改。
不過,如果當(dāng)前腳本屬主是hostuser,要?jiǎng)h除屬主是nobody的uploads目錄下的文件,一旦safe_mode打開,就不能寫了。
所以safe_mode默認(rèn)是不打開的,
其替代方案為:
php_admin_value open_basedir /docroot 限制每個(gè)用戶只能訪問自己的文件。這里的docroot是程序的根目錄,不是程序下的cache或uploads目錄。如果不是根目錄,PHP程序都無法訪問。
3. (不一定能保證)所有PHP程序腳本能過濾Remote Code Execution和Local File Include攻擊。否則黑客仍有可能讀取config.php中的密碼,或者直接讀寫cache或uploads目錄中的內(nèi)容。
cache目錄中不可存放類似用戶密碼之類的數(shù)據(jù)。
4. expose_php設(shè)為off ,這樣php不會(huì)在http文件頭中泄露PHP的版本號(hào).
Tips:Linux下默認(rèn)文件和目錄的mod為 文件644 目錄755 (即666-22 777-22)umask 22
您可能感興趣的文章:
- linux proftpd-1.3.4c安裝配置實(shí)例
- linux下用Proftpd搭建ftp服務(wù)器及配置方法
- linux下講解MySQL安裝與登錄方法
- linux正確重啟MySQL的方法
- linux之cut命令的用法
- Linux tar 壓縮打包命令使用方法
- Linux 入門常用命令 password — 修改密碼,改變用戶
- linux下mysql提示"mysql deamon failed to start"錯(cuò)誤的解決方法
- Linux shell腳本編程if語句的使用方法(條件判斷)
- linux mysql 報(bào)錯(cuò):MYSQL:The server quit without updating PID file
- Linux ProFTPd安裝與卸載詳細(xì)介紹
相關(guān)文章
阿里云基于CentOS用vsftpd搭建FTP服務(wù)器
這篇文章主要介紹了阿里云CentOS系統(tǒng)yum方式安裝vsftpd的相關(guān)資料,最近想要了解的朋友可以了解一下。2016-10-10linux exa命令(比ls更好的展示文件體驗(yàn))
這篇文章主要介紹了linux exa命令(比ls更好的展示文件體驗(yàn)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Linux實(shí)現(xiàn)文件內(nèi)容去重及求交并差集
這篇文章主要介紹了Linux實(shí)現(xiàn)文件內(nèi)容去重及求交并差集,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08linux實(shí)現(xiàn)除了某個(gè)文件或某個(gè)文件夾以外的全部刪除
下面小編就為大家?guī)硪黄猯inux實(shí)現(xiàn)除了某個(gè)文件或某個(gè)文件夾以外的全部刪除。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12Linux的文件描述符、文件指針、索引節(jié)點(diǎn)詳情
這篇文章主要對(duì)Linux的文件描述符、文件指針、索引節(jié)點(diǎn)詳情介紹,感興趣和需要的朋友可以參考下文2021-08-08Linux中如何通過端口號(hào)查找進(jìn)程號(hào)
這篇文章主要介紹了Linux中如何通過端口號(hào)查找進(jìn)程號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Linux netstat命令查看并發(fā)連接數(shù)的方法
當(dāng)我們的網(wǎng)站部署在linux的服務(wù)器上,特別是web服務(wù)器,我們可能有時(shí)候做為運(yùn)維人員,肯定是要查看網(wǎng)站的并發(fā)連接數(shù)是不是達(dá)到瓶頸等,所以在linux下,我們?nèi)绾尾榭捶?wù)器的并發(fā)連接數(shù)呢?下面這篇文章就給大家詳細(xì)的介紹了Linux netstat命令查看并發(fā)連接數(shù)的方法。2016-11-11解決Linux常用命令“l(fā)l”失效或命令未找到的問題
這篇文章主要介紹了Linux常用命令“l(fā)l”失效或命令未找到的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06