亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

<-
Apache > HTTP Server > 文檔 > 版本2.2
   致謝 | 譯者聲明 | 本篇譯者:金步國(guó) | 本篇譯稿最后更新:2006年1月6日 | 獲取最新版本

suEXEC支持

suEXEC特性使得Apache可以使用與調(diào)用web服務(wù)器的用戶(hù)不同的用戶(hù)身份來(lái)運(yùn)行CGISSI程序。而通常情況下,CGI或者SSI程序執(zhí)行時(shí)使用和web服務(wù)器相同的用戶(hù)身份。

正確運(yùn)用該特性,可以減少很多因?yàn)樘峁┯脩?hù)執(zhí)行私有CGI或者SSI程序所帶來(lái)的安全風(fēng)險(xiǎn)。但如果配置不當(dāng)?shù)脑,則可能引起很多問(wèn)題,使你的計(jì)算機(jī)產(chǎn)生更多的安全漏洞。如果你對(duì)管理 setuid root 程序以及可能導(dǎo)致的安全問(wèn)題不熟悉的話,我們強(qiáng)烈建議你不要使用suEXEC。

top

開(kāi)始之前

在我們開(kāi)始切入正題之前,你必須明白Apache開(kāi)發(fā)組以及本文檔所做的假設(shè)。

首先,我們假設(shè)你正在使用類(lèi)UNIX操作系統(tǒng),只有這類(lèi)操作系統(tǒng)才具有setuidsetgid命令。所有的其他命令行的例子也是如此。其他的操作系統(tǒng)平臺(tái),即使也支持suEXEC,但是它的配置可能和我們所講的并不相同。

第二,我們假設(shè)你熟悉計(jì)算機(jī)的安全和管理計(jì)算機(jī)的一些基本概念。這關(guān)系到如何正確理解setuid/setgid操作以及對(duì)你的系統(tǒng)可能帶來(lái)的各種影響和不同的安全等級(jí)。

第三,我們假設(shè)你正在使用源代碼未經(jīng)修改的suEXEC版本。所有suEXEC的代碼都經(jīng)過(guò)開(kāi)發(fā)者的仔細(xì)查驗(yàn)并做過(guò)大量測(cè)試。在這些代碼中,人們采取了各種預(yù)防措施,使之簡(jiǎn)單、健壯、安全。修改這些代碼可能會(huì)導(dǎo)致預(yù)料之外的問(wèn)題和安全隱患。所以我們強(qiáng)烈地建議你不要修改代碼,除非你精通安全編程,并愿意和Apache開(kāi)發(fā)組共享成果。

第四,也是最后一點(diǎn),Apache開(kāi)發(fā)組已經(jīng)決定默認(rèn)不安裝suEXEC。suEXEC的配置需要管理員細(xì)致關(guān)注各個(gè)細(xì)節(jié)。在仔細(xì)考察過(guò)關(guān)于suEXEC的各種設(shè)置方法后,管理員應(yīng)該使用標(biāo)準(zhǔn)的安裝方法來(lái)安裝suEXEC。設(shè)置的參數(shù)應(yīng)該經(jīng)過(guò)仔細(xì)推敲,以保證系統(tǒng)的安全運(yùn)行。Apache開(kāi)發(fā)組希望通過(guò)限制suEXEC的安裝,僅使那些經(jīng)過(guò)細(xì)致理解,并有能力運(yùn)用它的管理員來(lái)使用。

你還想使用suEXEC嗎?還想?很好!那我們開(kāi)始吧!

top

suEXEC的安全模型

在我們開(kāi)始配置和安裝suEXEC之前,我們需要先討論一下它的安全模型。這樣,你才能更好的理解suEXEC內(nèi)部究竟做了些什么事情,以及哪些確保系統(tǒng)安全的預(yù)防措施。

suEXEC是基于一個(gè)setuid的"封裝"程序,該程序由"主"Apache web服務(wù)器調(diào)用。當(dāng)一個(gè)HTTP請(qǐng)求的是管理員指定的、以不同于"主"服務(wù)器用戶(hù)身份運(yùn)行的CGI或SSI程序時(shí),該封裝程序?qū)⒈徽{(diào)用。處理這樣的請(qǐng)求時(shí),Apache將被請(qǐng)求的程序名及其UID和GID提供給suEXEC封裝器。

封裝器(wrapper)通過(guò)處理下面所描述的步驟,來(lái)決定封裝的成功或失。喝绻腥我庖粋(gè)條件為假,程序?qū)彦e(cuò)誤情況記錄到日志中,退出并返回錯(cuò)誤信息。否則繼續(xù)執(zhí)行。(以下所說(shuō)的"程序"均指"CGI/SSI程序")

  1. 用戶(hù)使用了合法的系統(tǒng)賬號(hào)來(lái)執(zhí)行封裝程序了嗎?

    確保運(yùn)行封裝器的是一個(gè)系統(tǒng)中確實(shí)存在的用戶(hù)。

  2. 封裝器被調(diào)用時(shí),使用的參數(shù)個(gè)數(shù)正確嗎?

    封裝器僅在使用了正確數(shù)量的參數(shù)調(diào)用時(shí)才會(huì)執(zhí)行。Apache web服務(wù)器知道正確的參數(shù)格式是什么。如果封裝器沒(méi)有收到正確數(shù)量的參數(shù),則說(shuō)明要么被黑客攻擊,要么Apache二進(jìn)制代碼中suEXEC的部分出了問(wèn)題。

  3. 這個(gè)合法的用戶(hù)被允許運(yùn)行封裝器嗎?

    這個(gè)用戶(hù)是可以運(yùn)行封裝器的用戶(hù)嗎??jī)H有一個(gè)用戶(hù)(Apache用戶(hù))被允許運(yùn)行封裝器。

  4. 目標(biāo)CGI/SSI程序有不安全的分級(jí)路徑索引嗎?

    目標(biāo)CGI/SSI程序包含了"/"開(kāi)頭或者有".."后向路徑索引嗎?這些都是不允許的;并且目標(biāo)程序必須位于suEXEC的文檔根目錄下。(參見(jiàn)下面的:--with-suexec-docroot=DIR)

  5. 目標(biāo)程序的所屬用戶(hù)名合法嗎?

    目標(biāo)程序的所屬用戶(hù)名存在嗎?

  6. 目標(biāo)程序的所屬用戶(hù)組合法嗎?

    目標(biāo)程序的所屬用戶(hù)組存在嗎?

  7. 目標(biāo)程序的所屬用戶(hù)名不是超級(jí)用戶(hù)嗎?

    目前,suEXEC不允許root執(zhí)行CGI/SSI程序。

  8. 目標(biāo)程序所屬用戶(hù)的UID高于最小UID值嗎?

    最小UID值是在配置中指定的。你可以指定允許執(zhí)行CGI/SSI程序的最小UID值,這樣可以保證不會(huì)和系統(tǒng)賬號(hào)沖突。

  9. 目標(biāo)程序的所屬用戶(hù)組不是超級(jí)用戶(hù)組嗎?

    目前,suEXEC不允許root組用戶(hù)執(zhí)行CGI/SSI程序。

  10. 目標(biāo)程序所屬用戶(hù)組的GID高于最小GID值嗎?

    最小GID值是在配置中指定的。你可以指定允許執(zhí)行CGI/SSI程序的最小GID值,這樣可以保證不會(huì)和系統(tǒng)賬號(hào)沖突。

  11. 封裝器能夠成功地變?yōu)槟繕?biāo)用戶(hù)和組嗎?

    這里就是程序變?yōu)槟繕?biāo)用戶(hù)和組的關(guān)鍵步驟了。我們是通過(guò)調(diào)用setuid和setgid來(lái)實(shí)現(xiàn)的。在組訪問(wèn)列表中,和該用戶(hù)相關(guān)的所有組信息都將被初始化。

  12. 能夠切換到程序所在的目錄嗎?

    如果不存在,將無(wú)法包含程序文件。如果不能切換一般也表示目錄不存在。

  13. 這個(gè)目錄在Apache的網(wǎng)絡(luò)空間中嗎?

    如果是對(duì)于服務(wù)器的一般請(qǐng)求,那么請(qǐng)求的目錄是在suEXEC的根文檔目錄下嗎?如果請(qǐng)求的是一個(gè)用戶(hù)目錄,那么該目錄是在suEXEC配置的該用戶(hù)的根目錄下嗎?(參見(jiàn):suEXEC配置選項(xiàng))

  14. 該目錄不具有其他用戶(hù)可寫(xiě)的權(quán)限嗎?

    我們不想把目錄開(kāi)放給其他人;只有屬主才可以改變?cè)撃夸浿械膬?nèi)容。

  15. 目標(biāo)CGI/SSI程序存在嗎?

    如果不存在,當(dāng)然無(wú)法繼續(xù)運(yùn)行。

  16. 目標(biāo)CGI/SSI程序不可以被其他用戶(hù)改寫(xiě)嗎?

    我們不想給其他人有修改程序的權(quán)限。

  17. 目標(biāo)程序尚未被setuid或者setgid ?

    我們不想要執(zhí)行的程序被再次改變UID/GID。

  18. 目標(biāo)用戶(hù)和組與程序的用戶(hù)和組相同嗎?

    用戶(hù)是這個(gè)文件的屬主嗎?

  19. 我們可以成功清除進(jìn)程的環(huán)境變量并保證操作的安全性嗎?

    suEXEC通過(guò)建立一個(gè)安全的可執(zhí)行路徑(在配置中定義)來(lái)清除該進(jìn)程的環(huán)境變量,同時(shí)只傳送在安全環(huán)境變量列表(配置中定義)中所列出的環(huán)境變量。

  20. 可以成功的變?yōu)槟繕?biāo)程序并執(zhí)行嗎?

    這里就是suEXEC結(jié)束,并開(kāi)始運(yùn)行目標(biāo)程序的地方了。

這是suEXEC封裝器標(biāo)準(zhǔn)操作方式的安全模型。它有些嚴(yán)格,并強(qiáng)加了CGI/SSI設(shè)計(jì)上的限制。但它是仔細(xì)考慮過(guò)安全之后一步步發(fā)展起來(lái)的模型。

更多關(guān)于該安全模型如何根據(jù)服務(wù)器的配置來(lái)限制使用者的權(quán)限,以及恰當(dāng)?shù)膕uEXEC安裝步驟能夠避免的安全隱患,請(qǐng)參見(jiàn)警告和舉例部分。

top

配置和安裝suEXEC

繼續(xù)我們的探險(xiǎn) ...

suEXEC配置選項(xiàng)

--enable-suexec
該選項(xiàng)啟用默認(rèn)禁止的suEXEC功能。并同時(shí)至少提供一個(gè) --with-suexec-xxxxx 選項(xiàng),以使APACI使用suEXEC功能來(lái)處理請(qǐng)求。
--with-suexec-bin=PATH
出于安全考慮,suexec二進(jìn)制程序的路徑必須用這個(gè)選項(xiàng)指定并硬編碼在服務(wù)器里。比如:--with-suexec-bin=/usr/sbin/suexec
--with-suexec-caller=UID
Apache運(yùn)行時(shí)所用的UID。這是唯一允許執(zhí)行程序的用戶(hù)。
--with-suexec-userdir=DIR
定義suEXEC允許訪問(wèn)的用戶(hù)宿主目錄下的子目錄。suEXEC將以用戶(hù)身份執(zhí)行這個(gè)目錄下的所有可執(zhí)行程序,所以這些程序必須是"安全程序"。如果使用"簡(jiǎn)單的"UserDir指令(即不帶"*"),則此處應(yīng)該被設(shè)置為相同的值。當(dāng)UserDir指令所指向的目錄與"passwd"文件所指定的用戶(hù)宿主目錄不同時(shí),suEXEC將不會(huì)正常工作,其默認(rèn)值是"public_html"。如果所支持的虛擬主機(jī)對(duì)每個(gè)用戶(hù)有不同的UserDir ,則應(yīng)該把他們集中在同一個(gè)父目錄下,而用這個(gè)參數(shù)指向這個(gè)父目錄。如果配置不當(dāng),"~userdir"下的cgi請(qǐng)求將無(wú)效!
--with-suexec-docroot=DIR
定義Apache的DocumentRoot。它是除UserDir外suEXEC唯一可以使用的目錄。其默認(rèn)目錄是 --datadir 值所指定的帶有"/htdocs"的后綴的目錄,比如:如果配置了"--datadir=/home/apache",那么"/home/apache/htdocs"目錄將作為suEXEC處理器的文檔根目錄。
--with-suexec-uidmin=UID
定義了suEXEC目標(biāo)用戶(hù)的最低UID。對(duì)大多數(shù)系統(tǒng),一般是500或100。默認(rèn)值是100
--with-suexec-gidmin=GID
定義了suEXEC目標(biāo)組的最低GID。對(duì)大多數(shù)系統(tǒng),是100,默認(rèn)值也是100。
--with-suexec-logfile=FILE
它定義了suEXEC用于記錄所做的事情以及發(fā)生的錯(cuò)誤的日志文件名(對(duì)審核和排錯(cuò)很有用),默認(rèn)文件名是"suexec_log",并位于標(biāo)準(zhǔn)的日志文件目錄中(--logfiledir)。
--with-suexec-safepath=PATH
定義傳給CGI程序的一個(gè)安全的PATH環(huán)境變量的值。默認(rèn)值是"/usr/local/bin:/usr/bin:/bin"

編譯和安裝suEXEC處理器
若用 --enable-suexec 打開(kāi)了suEXEC功能,那么執(zhí)行make命令時(shí)(Apache自帶的)suexec二進(jìn)制文件就會(huì)被自動(dòng)建立。所有組件編譯完畢后執(zhí)行 make install 命令進(jìn)行安裝時(shí),suexec文件將被安裝在 --sbindir 選項(xiàng)指定的目錄中,默認(rèn)為"/usr/local/apache2/sbin/suexec"。
注意,安裝過(guò)程需要root權(quán)限。為了使suEXEC處理器可以設(shè)置UID,其所有者必須為root ,并且文件模式中的執(zhí)行位必須設(shè)置為1(允許執(zhí)行)。

設(shè)置許可權(quán)限
雖然suEXEC包裝會(huì)檢查以確保它的調(diào)用者就是配置選項(xiàng) --with-suexec-caller 所指定的用戶(hù)。但是總是存在這樣的可能性:一個(gè)系統(tǒng)或者庫(kù)在suEXEC執(zhí)行用戶(hù)身份檢查之前調(diào)用它,這樣就存在一個(gè)可利用的漏洞。通常,避免這種問(wèn)題的最佳辦法是,使用文件系的統(tǒng)權(quán)限來(lái)確保只有Apache組用戶(hù)運(yùn)行的程序才能執(zhí)行suEXEC。

如果你的web-server是按照如下所示進(jìn)行配置的:

User www
Group webgroup

并且suexec被安裝在"/usr/local/apache2/sbin/suexec"目錄,你應(yīng)當(dāng)運(yùn)行以下命令:

chgrp webgroup /usr/local/apache2/bin/suexec
chmod 4750 /usr/local/apache2/bin/suexec

這將確保只有Apache組用戶(hù)運(yùn)行的程序才能執(zhí)行suEXEC。

top

啟用和禁用suEXEC

Apache在啟動(dòng)過(guò)程中,會(huì)在 --sbindir 選項(xiàng)指定的目錄(默認(rèn)為:"/usr/local/apache/sbin/suexec")中尋找suexec。如果Apache找到了一個(gè)正確配置的suEXEC處理器,會(huì)在錯(cuò)誤日志中記錄以下信息:

[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)

如果服務(wù)器啟動(dòng)后沒(méi)有這個(gè)信息,那么很可能是服務(wù)器沒(méi)找到適當(dāng)?shù)奶幚砥,或者是這個(gè)執(zhí)行程序沒(méi)有安裝setuid root。

如果要在Apache服務(wù)器運(yùn)行過(guò)程中打開(kāi)suEXEC功能,則必須停止并重新啟動(dòng)Apache。用一個(gè)簡(jiǎn)單的HUP或USR1信號(hào)來(lái)重新啟動(dòng)是不夠的。

如果要關(guān)閉suEXEC功能,應(yīng)該刪除suexec文件,并停止和重新啟動(dòng)Apache。

top

使用suEXEC

對(duì)CGI程序的請(qǐng)求僅在下述兩種情況下才會(huì)調(diào)用suEXEC包裝:對(duì)一個(gè)含SuexecUserGroup指令的虛擬主機(jī)發(fā)起請(qǐng)求,或者該請(qǐng)求由mod_userdir模塊處理。

虛擬主機(jī):
使用suEXEC處理器的方法之一是在VirtualHost定義中使用SuexecUserGroup指令。通過(guò)設(shè)置這個(gè)指令來(lái)確定不同于主服務(wù)器的UID,所有對(duì)CGI資源的請(qǐng)求將以<VirtualHost>所定義的UserGroup身份執(zhí)行。如果<VirtualHost>中沒(méi)有這個(gè)指令,則將以主服務(wù)器的UID身份執(zhí)行。

用戶(hù)目錄:
mod_userdir處理的請(qǐng)求會(huì)調(diào)用suEXEC處理器以被請(qǐng)求的用戶(hù)目錄所屬的UID執(zhí)行CGI程序。此功能的唯一要求是,此用戶(hù)必須有CGI執(zhí)行權(quán)限,并且其腳本符合上述安全檢查的要求。參見(jiàn) --with-suexec-userdir 編譯選項(xiàng)

top

調(diào)試suEXEC

如上所述,suEXEC處理器會(huì)在 --with-suexec-logfile 選項(xiàng)所指定的日志文件中記錄信息。如果你感覺(jué)配置和安裝不正常,可以查看這個(gè)日志以及服務(wù)器的錯(cuò)誤日志。

top

謹(jǐn)防Jabberwock:警告和舉例

注意!這部分文檔可能還沒(méi)有完成。查看最新的修訂版本,請(qǐng)到Apache開(kāi)發(fā)組的在線文檔。

以下是有關(guān)限制和服務(wù)器安裝的幾個(gè)注意事項(xiàng),在提交任何關(guān)于suEXEC的"bugs"以前,請(qǐng)仔細(xì)閱讀。