Linux下Apache與PHP安全相關(guān)設(shè)置_第1頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、linux下apache與php安全相關(guān)設(shè)置在php.ini配置文件中的大部分功能,均可以用這種方式來調(diào)節(jié),調(diào)節(jié)后應重新啟動apache,然后 就可以在phpinfo中看到中間欄的local value同右邊欄位的master value是不同值. 請注重: 有些參數(shù)值的設(shè)定辦法跟它們在php.ini配置文件中的設(shè)置辦法可能不一樣,例如 上面的 register_globals 1 , 本來在php.ini中應是 register_globals on . = (1) safe_mode: 以平安模式運行php; 在php.ini文件中用法如下選項(這是影響全局的設(shè)置): safe_mode

2、= on (用法平安模式) safe_mode = off (關(guān)閉平安模式) php的平安模式是為了試圖解決分享伺服器(shar-server)的平安問題而特地設(shè)立的. 然而 從結(jié)構(gòu)上看, 試圖在php層面上解決這個問題其實是不合理的, 只是考慮到修改web伺服器層 和操作系統(tǒng)層都顯得十分的不現(xiàn)實, 因此許多用法者,特殊是提供公共網(wǎng)絡(luò)服務(wù)的isp供給商, 大多都在其服務(wù)器中要求以平安模式來運行php,用以防止合法用戶的跨站讀取或越權(quán)操作等 危急行為, 以及將非授權(quán)用戶的惡意行為所造成的影響降到最低范圍. 參址: 在apache的.conf中virtualhost的相應設(shè)置辦法(這是針對特定用戶

3、的設(shè)置): php_admin_flag safe_mode on (用法平安模式) php_admin_flag safe_mode off (關(guān)閉平安模式) 或者: php_admin_value safe_mode 1 (用法平安模式) php_admin_value safe_mode 0 (關(guān)閉平安模式) 嚴峻警告: 假如在全局性設(shè)置中已經(jīng)啟用了safe_mode的功能,但又在特殊的用戶虛擬空間中 關(guān)閉該用戶的safe_mode的功能,這就等于賦予了該用戶特別的權(quán)限,允許他不須受safe_mode 的限制而自由地用法系統(tǒng)的服務(wù),也就是說全部本來被全局性的safe_mode功能所禁止的

4、行為, 例如跨站讀取或越權(quán)操作等都可以被該用戶執(zhí)行, 這就好似在原本平安設(shè)防的金庫中打開了 一個可供該用戶自由進出的洞,因此任何用法該用戶空間的應用都不再被全局性的safe_mode 庇護所限制,固然這就意味著囫圇系統(tǒng)的平安性都可能會受到該用戶空間的影響,包括可能因 該空間應用的漏洞而導致囫圇系統(tǒng)被入侵等等. 所以,這樣的針對特定用戶的特別設(shè)置,應該 作為一種特許授權(quán)的方式來考慮, 并有須要建立有效的監(jiān)控機制以防止該用戶濫用系統(tǒng)資源, 否則, 一旦該用戶變得不再可相信或他的網(wǎng)站程序存在漏洞, 那么您的整體系統(tǒng)所受的影響 就會同徹低沒有啟用safe_mode千篇一律. = = (2) safe_

5、mode_ilude_dir: 無需uid/gid檢查的名目 當您根據(jù)前面(1)所述之設(shè)置啟用php的平安模式之后,php的腳本在運行時就會對全部被操作 的名目以及文件舉行針對uid/gid的匹配性檢查: 即檢查被操作名目或文件的uid或gid,是否 同當前php腳本文件的uid或gid一樣. 然而, 假如您的系統(tǒng)允許用戶的php腳本拜訪公共路徑的話(例如無數(shù)較舊的forum或gallery 程序都會挺直引用系統(tǒng)文件來擴展當初php還未能支持的功能), 那么這種設(shè)置就會造成棘手. 而用法safe_mode_include_dir設(shè)置可以指定某些名目, 當php腳本操作這些名目及其子名目 時(該

6、名目必需在include_path中或者用盡整路徑來包含), 則允許越過uid/gid檢查,即不對 該名目舉行uid/gid匹配性檢查. 從php4.2.0開頭, 這個命令已經(jīng)可以接受同include_path命令類似的風格, 即用分號隔開的 多個路徑, 而以前則只能指定單一個名目. 同open_bair一樣, 它所指定的路徑事實上也 是一個字符串的前綴限制,而非針對該名目名稱空間的操作. 例如假如指定: safe_mode_include_dir = /dir/incl , 那么全部的php腳本都將允許隨意 拜訪 /dir/include 和 /dir/incls 路徑(假如它們存在的話).

7、 因此, 假如您希翼將拜訪 控制在一個指定的名目里面, 就必需在上述設(shè)置的指定路徑的結(jié)尾加上一個斜線, 例如: safe_mode_include_dir = /dir/incl/ 請注重: virtualhost會自動繼承php.ini中的safe_mode_include_dir設(shè)置. = = (3) open_basedir: 將用戶可操作的文件限制在某名目下; 如下是php.ini中的原文解釋以及默認配置: ; open_basedir, if , limits all file operations to the defined directory ; and below. this

8、 directive makes most sense if used in a per-directory or ; per-virtualhost web server configuration file. this directive is ; *not* affected by whether safe mode is turned on or off. open_basedir = . open_basedir可將用戶拜訪文件的活動范圍限制在指定的區(qū)域,通常是其家名目的路徑,也 可用符號 . 來代表當前名目。注重用open_basedir指定的限制事實上是前綴,而不是名目名。 舉例

9、來說: 若 open_basedir = /dir/user , 那么名目 /dir/user 和 /dir/user1 都是 可以拜訪的。所以假如要將拜訪限制在僅為指定的名目,請用斜線結(jié)束路徑名。例如設(shè)置成: open_basedir = /dir/user/ open_basedir也可以同時設(shè)置多個名目, 在windows中用分號分隔名目,在任何其它系統(tǒng)中用 冒號分隔名目。當其作用于apache模塊時,父名目中的open_basedir路徑自動被繼承。 有三種辦法可以在apache中為指定的用戶做自立的設(shè)置: (a) 在apache的httpd.conf中directory的相應設(shè)置辦法

10、: directory /usr/local/apache/htdocs php_admin_value open_basedir /usr/local/apache/htdocs/ 設(shè)置多個名目可以參考如下: php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/ /directory (b) 在apache的httpd.conf中virtualhost的相應設(shè)置辦法: php_admin_value open_basedir /usr/local/apache/htdocs/ 設(shè)置多個名目可以參考如下: php_admin_

11、value open_basedir /var/www/html/:/var/tmp/ (c) 由于virtualhost中設(shè)置了open_basedir之后, 這個虛擬用戶就不會再自動繼承php.ini 中的open_basedir設(shè)置值了,這就難以達到靈便的配置措施, 所以建議您不要在virtualhost 中設(shè)置此項限制. 例如,可以在php.ini中設(shè)置open_basedir = .:/tmp/, 這個設(shè)置表示允許 拜訪當前名目(即php腳本文件所在之名目)和/tmp/名目. 請注重: 若在php.ini所設(shè)置的上傳文件暫時名目為/tmp/, 那么設(shè)置open_basedir時就必需

12、 包含/tmp/,否則會導致上傳失敗. 新版php則會提醒 open_basedir restriction in effect 警告信息, 但move_uploaded_file()函數(shù)仍然可以勝利取出/tmp/名目下的上傳文件,不知道 這是漏洞還是新功能. = = (4) disable_functions: 單獨地屏蔽某些函式(常用于禁止一般用戶執(zhí)行系統(tǒng)函數(shù)); 這個命令允許你基于平安緣由挺直禁止某些確定的函式(通常是攸關(guān)系統(tǒng)平安的函數(shù)),例如: disable_functions = shell_ec,system,exec,passthru,show_source,get_cfg_v

13、ar disable_functions接受逗號分隔的函式名列表作為參數(shù), 它不受平安模式的影響,而且只能 設(shè)置在php.ini中用作全局性配置, 不能將其設(shè)置在httpd.conf中針對單獨用戶來舉行設(shè)置. 從php-4.0.1開頭在php.ini里引入了此項功能, 這個功能十分實用, 可以用它禁止用戶用法 一些具有潛在的危急性的函數(shù), 例如: passthru,exec,system,popen 等等. 當您在php.ini 中加上 disable_functions = passthru,exec,system,popen 配置后, php在執(zhí)行這些函數(shù) 時就只會顯示錯誤提醒: warning: system() has been disabled for security reasons 下面舉個例子來看看這個平安性設(shè)置的重要程度: 我們知道php腳本可以采納無數(shù)perl的特性,例如通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論