欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

安全方面的提示

本文中的提示和技巧有些是針對(duì)網(wǎng)絡(luò)服務(wù)器的建立的,有些是綜合性的,其余的則是針對(duì)Apache的。

top

保持不斷更新和升級(jí)

Apache HTTP服務(wù)器有一個(gè)很好的安全記錄和一個(gè)高度關(guān)注安全問(wèn)題的開(kāi)發(fā)社團(tuán)。但是這仍然不能避免在發(fā)行版中存在或大或小的問(wèn)題。所以知道這個(gè)軟件的版本更新和升級(jí)補(bǔ)丁是至關(guān)重要的。如果你是直接從Apache組織得到Apache HTTP服務(wù)器的,我們強(qiáng)烈建議你訂閱Apache HTTP服務(wù)器通告郵件列表以保證能夠在第一時(shí)間得知軟件的版本更新和升級(jí)補(bǔ)丁。許多第三方Apache軟件發(fā)行版也有類(lèi)似的服務(wù)。

當(dāng)然,Web服務(wù)器出現(xiàn)的問(wèn)題在絕大多數(shù)時(shí)候不是由Apache源代碼引起的,而是由附加的代碼、CGI腳本、底層操作系統(tǒng)引起的。因此你必須保持機(jī)器上所有軟件的及時(shí)更新。

top

ServerRoot目錄的權(quán)限

通常,Apache由root用戶(hù)啟動(dòng),在提供服務(wù)時(shí)切換為由User指令所指定的用戶(hù)。正如root所執(zhí)行的任何命令那樣,你必須保證ServerRoot下的文件是受保護(hù)的,不允許非root用戶(hù)對(duì)它修改。不僅文件本身,而且目錄及其父目錄都必須只能由root來(lái)改寫(xiě)。例如,如果將ServerRoot指定為/usr/local/apache ,則推薦以root身份來(lái)建立此目錄,如:

mkdir /usr/local/apache
cd /usr/local/apache
mkdir bin conf logs
chown 0 . bin conf logs
chgrp 0 . bin conf logs
chmod 755 . bin conf logs

這里已經(jīng)假定了"/"、"/usr"、"/usr/local"只能由root來(lái)改寫(xiě)。在安裝httpd可執(zhí)行文件時(shí),應(yīng)該確保它也受到了同樣的保護(hù):

cp httpd /usr/local/apache/bin
chown 0 /usr/local/apache/bin/httpd
chgrp 0 /usr/local/apache/bin/httpd
chmod 511 /usr/local/apache/bin/httpd

你可以在其中建立htdocs子目錄,該子目錄可以允許其他用戶(hù)改寫(xiě) -- root不會(huì)執(zhí)行其中任何文件,也不應(yīng)該在其中建立文件。

如果允許非root用戶(hù)對(duì)由root執(zhí)行或讀寫(xiě)的文件有寫(xiě)權(quán)限,則會(huì)危及系統(tǒng)。比如,別人有可能會(huì)覆蓋httpd可執(zhí)行文件,那么下一次啟動(dòng)時(shí),就會(huì)執(zhí)行惡意代碼。如果日志目錄(對(duì)非root用戶(hù))是可寫(xiě)的,別人就有可能用一個(gè)指向其他敏感文件的連接來(lái)覆蓋日志文件,使那個(gè)文件被改寫(xiě)為雜亂的數(shù)據(jù)。如果日志文件本身(對(duì)非root用戶(hù))是可寫(xiě)的,別人就可能偽造日志。

top

服務(wù)器端包含

服務(wù)器端包含(SSI)會(huì)帶來(lái)一些潛在的安全隱患。

首先是增加了服務(wù)器的負(fù)載。Apache必須解析所有允許SSI的文件,而無(wú)論其中是否包含SSI指令。雖然增加的負(fù)載較小,但是在共享服務(wù)器環(huán)境中會(huì)變得很顯著。

SSI文件與CGI腳本一樣存在風(fēng)險(xiǎn)。使用"exe ccmd"元素,允許SSI的文件可以執(zhí)行任何CGI腳本,以及由httpd.conf設(shè)置的執(zhí)行Apache的用戶(hù)或組所允許執(zhí)行的任何程序。

有若干方法可以在得到SSI好處的同時(shí)提高SSI文件的安全性。

服務(wù)器管理員可以使用關(guān)于CGI中所描述的suexec ,以隔離野蠻SSI文件所造成的破壞。

對(duì).html或.htm后綴的文件允許SSI是危險(xiǎn)的,尤其是在一個(gè)共享的或者高流量的服務(wù)器環(huán)境中。被允許SSI的文件應(yīng)該有一個(gè)單獨(dú)的后綴,比如常規(guī)的.shtml ,使服務(wù)器的負(fù)載保持在最低水平,并使風(fēng)險(xiǎn)管理更容易。

另一個(gè)方案是,關(guān)閉SSI頁(yè)面執(zhí)行腳本和程序的功能,即在用Options指令中,用IncludesNOEXEC替換Includes 。注意,用戶(hù)仍然可以使用 <--#include virtual="..." -->來(lái)執(zhí)行位于ScriptAlias指令指定的目錄中的CGI腳本。

top

關(guān)于CGI

首先,你不得不信任CGI程序的作者以及你自己發(fā)現(xiàn)CGI中潛在安全漏洞的能力,無(wú)論這些漏洞是有預(yù)謀的或者僅僅是意外。CGI腳本可以執(zhí)行web服務(wù)器用戶(hù)所允許執(zhí)行的任意系統(tǒng)命令,如果沒(méi)有經(jīng)過(guò)仔細(xì)的檢查,這可能是極其危險(xiǎn)的。

由于所有CGI腳本都以相同的身份執(zhí)行,所以可能會(huì)和其他腳本(有意或無(wú)意地)沖突。比如,用戶(hù)A憎恨用戶(hù)B,因此他就可能寫(xiě)一個(gè)腳本去破壞用戶(hù)B的數(shù)據(jù)庫(kù)。suEXEC是一個(gè)允許腳本以不同的身份運(yùn)行的程序,它包含在Apache1.2以后的版本中,并被Apache服務(wù)器代碼中特殊的掛鉤所調(diào)用。還有一種常用的方法是使用CGIWrap 。

top

未指定為腳本的CGI

僅在下列情況下,可以考慮允許用戶(hù)執(zhí)行位于任意目錄中的CGI腳本:

top

指定為腳本的CGI

把CGI集中在特定的目錄中,并由管理員決定其中的內(nèi)容。這樣絕對(duì)比使用不作為腳本的CGI來(lái)得安全,除非對(duì)這些目錄有寫(xiě)權(quán)限的用戶(hù)被信任,或者管理員希望對(duì)每個(gè)CGI腳本/程序進(jìn)行潛在安全漏洞測(cè)試。

大多數(shù)站點(diǎn)都選擇這種方案,而不使用未指定為腳本的CGI。

top

其他動(dòng)態(tài)內(nèi)容的來(lái)源

嵌入在Apache中作為模塊運(yùn)行的腳本解釋器,比如:mod_php, mod_perl, mod_tcl, mod_python 將會(huì)使用和Apache一樣的用戶(hù)身份運(yùn)行(參見(jiàn)User指令),所以被這些模塊執(zhí)行的腳本可能訪(fǎng)問(wèn)任何Apache服務(wù)器能夠訪(fǎng)問(wèn)的對(duì)象。一些腳本引擎可能提供了某些方面的限制,但是最好在假定他們并不存在的前提下做好安全防護(hù)。

top

系統(tǒng)設(shè)置的保護(hù)

為了得到真正嚴(yán)密的保護(hù),應(yīng)該禁止用戶(hù)使用可能導(dǎo)致安全特性被覆蓋的.htaccess文件,方法是在服務(wù)器配置文件中設(shè)置:

<Directory />
AllowOverride None
</Directory>

使所有目錄無(wú)法使用.htaccess文件,明確指定可以使用的目錄除外。

top

默認(rèn)配置下服務(wù)器文件的保護(hù)

默認(rèn)訪(fǎng)問(wèn)是偶爾會(huì)被誤解的Apache特性之一。也就是,除非你采取措施,否則,如果服務(wù)器能夠通過(guò)標(biāo)準(zhǔn)URL映射規(guī)則找到一個(gè)文件,那么就可能把它提供給客戶(hù)端。比如下例:

# cd /; ln -s / public_html
Accessing http://localhost/~root/

它會(huì)允許客戶(hù)端遍歷整個(gè)文件系統(tǒng)。其解決方法是,在服務(wù)器配置中增加下列指令:

<Directory />
Order Deny,Allow
Deny from all
</Directory>

這樣,對(duì)文件系統(tǒng)的默認(rèn)訪(fǎng)問(wèn)被禁止。而對(duì)需要訪(fǎng)問(wèn)的區(qū)域,可以增加正確的Directory塊,比如:

<Directory /usr/users/*/public_html>
Order Deny,Allow
Allow from all
</Directory>
<Directory /usr/local/httpd>
Order Deny,Allow
Allow from all
</Directory>

必須特別注意LocationDirectory指令的相互作用,比如,即使<Directory />拒絕訪(fǎng)問(wèn),<Location />指令仍然可能推翻其設(shè)置。

還必須留意UserDir指令,此設(shè)置如果類(lèi)似"./",則與上述例子有相同的風(fēng)險(xiǎn)。如果你使用的是1.3或更高版本,我們強(qiáng)烈建議在服務(wù)器配置文件中包含以下指令:

UserDir disabled root

top

觀察日志文件

要了解服務(wù)器上發(fā)生了什么,就必須檢查日志文件。雖然日志文件只是記錄已經(jīng)發(fā)生的事件,但是它會(huì)讓你知道服務(wù)器遭受的攻擊,并幫助你判斷是否提達(dá)到了必要的安全等級(jí)。

一些例子:

grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log
grep "client denied" error_log | tail -n 10

上例會(huì)列出試圖使用Apache Tomcat Source.JSP Malformed Request Information Disclosure Vulnerability的攻擊次數(shù)。下例會(huì)列出最后十個(gè)被拒絕的客戶(hù)端:

[Thu Jul 11 17:18:39 2002] [error] [client foo.bar.com] client denied by server configuration: /usr/local/apache/htdocs/.htpasswd

可見(jiàn),日志文件只是記錄已經(jīng)發(fā)生的事件,所以,如果客戶(hù)端可以訪(fǎng)問(wèn).htpasswd文件,而且在訪(fǎng)問(wèn)日志中發(fā)現(xiàn)類(lèi)似如下的記錄:

foo.bar.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"

這可能表示服務(wù)器配置文件中的下列指令已經(jīng)被注解了:

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>