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

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

關(guān)于DNS和Apache

本文檔的涵義用一句話(huà)總結(jié)就是:不要讓Apache在分析配置文件的時(shí)候使用到DNS解析。如果Apache在分析配置文件時(shí)用到了DNS解析,您的服務(wù)器就會(huì)發(fā)生可靠性的問(wèn)題(也可能根本無(wú)法啟動(dòng)),或者遭致拒絕(偷竊)服務(wù)攻擊(包括用戶(hù)可以從其他用戶(hù)那里偷竊點(diǎn)擊)。

top

一個(gè)簡(jiǎn)單示例

<VirtualHost www.abc.dom>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>

為了讓Apache功能正常,一個(gè)虛擬主機(jī)絕對(duì)需要以下兩部分的信息:ServerName和與該服務(wù)器綁定的至少一個(gè)IP地址。上述示例沒(méi)有包括IP地址,于是Apache必須要使用DNS解析來(lái)查詢(xún)www.abc.dom的地址。如果在某些不可預(yù)料的情況下,當(dāng)您的服務(wù)器解析配置文件時(shí)沒(méi)有得到DNS的支持,那么這個(gè)虛擬主機(jī)將不會(huì)被配置。它將不會(huì)對(duì)任何請(qǐng)求作出反應(yīng)。(在Apache1.2之前的版本,服務(wù)器甚至無(wú)法啟動(dòng))。

假設(shè)www.abc.dom的IP地址是10.0.0.1,那么考慮以下這個(gè)配置片斷:

<VirtualHost 10.0.0.1>
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>

現(xiàn)在Apache需要DNS對(duì)這個(gè)虛擬主機(jī)進(jìn)行反向域名解析來(lái)確定其ServerName。如果反向解析失敗,那么將導(dǎo)致這個(gè)虛擬主機(jī)功能喪失(在Apache的1.2版本之前,服務(wù)器將不能啟動(dòng))。如果虛擬主機(jī)是基于域名的,它將完全不能使用,但如果它是基于IP的,那么它將很有可能工作。然而,如果Apache不得不為一個(gè)已經(jīng)包含了服務(wù)器域名的服務(wù)器產(chǎn)生一個(gè)完整的URL,那么它將可能產(chǎn)生一個(gè)無(wú)效的URL。

以下是一個(gè)可以避免上述兩個(gè)問(wèn)題的配置片斷:

<VirtualHost 10.0.0.1>
ServerName www.abc.dom
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
</VirtualHost>

top

拒絕服務(wù)

拒絕服務(wù)主要由(至少)兩種形式導(dǎo)致。如果您在運(yùn)行Apache1.2以前的版本,在上述兩種情況下,如果您的任何一個(gè)虛擬主機(jī)的DNS解析失敗,您都會(huì)無(wú)法啟動(dòng)服務(wù)。在一些情況下,DNS解析甚至不在您的控制范圍之內(nèi)。比如說(shuō),如果abc.dom是您的一個(gè)客戶(hù),而且他們自己控制著DNS。那么僅僅是因?yàn)樗麄儎h除了www.abc.dom這個(gè)記錄,都會(huì)導(dǎo)致您1.2版本以前的Apache無(wú)法啟動(dòng)。

另外一種形式就更隱蔽了。比如說(shuō)下面這個(gè)配置片斷:

<VirtualHost www.abc.dom>
  ServerAdmin webgirl@abc.dom
  DocumentRoot /www/abc
</VirtualHost>

<VirtualHost www.def.dom>
  ServerAdmin webguy@def.dom
  DocumentRoot /www/def
</VirtualHost>

假設(shè)您已經(jīng)為www.abc.dom設(shè)定了10.0.0.1、為www.def.dom設(shè)定了10.0.0.2。更進(jìn)一步,假設(shè)def.dom自己控制DNS。在這種配置下,def.dom可以將所有指向abc.dom的流量據(jù)為己。為了達(dá)到這個(gè)目的,他們只需把www.def.dom的地址解析設(shè)置成10.0.0.1就可以了。因?yàn)樗麄兛刂浦约旱腄NS服務(wù),所以您無(wú)法阻止他們把www.def.dom這個(gè)記錄指向任何一個(gè)IP地址。

然后,所有向10.0.0.1發(fā)出的請(qǐng)求(包括用戶(hù)所有類(lèi)似http://www.abc.dom/whatever的URL)都將會(huì)被def.dom這個(gè)虛擬主機(jī)所接收。為了更好的理解這一切是怎樣發(fā)生的,您需要一個(gè)關(guān)于Apache是怎樣將進(jìn)入的請(qǐng)求分配給它的虛擬主機(jī)的深入說(shuō)明。您可以在這里找到一個(gè)完整的文檔。

top

"主服務(wù)器"地址

在Apache1.1中,基于域名的虛擬主機(jī)支持需要Apache知道運(yùn)行httpd的主機(jī)的IP地址?梢杂萌肿兞ServerName(如果存在)或者調(diào)用C函數(shù)gethostname(與在命令行模式下鍵入"hostname"得到的返回值一樣)。接著它就會(huì)利用DNS來(lái)查找這個(gè)地址。目前還沒(méi)有辦法避免這樣的查找。

如果您擔(dān)心這樣的查找會(huì)因?yàn)槟腄NS服務(wù)器沒(méi)有啟動(dòng)而遭到失敗的結(jié)果,您就可以在/etc/hosts中插入一條記錄來(lái)確定主機(jī)名(此文件中應(yīng)該已經(jīng)存在這條記錄了,否則您的機(jī)器可能無(wú)法正常啟動(dòng))。然后,要確認(rèn)您的機(jī)器已經(jīng)配置為當(dāng)DNS解析失敗的情況下會(huì)使用/etc/hosts ,根據(jù)所使用的操作系統(tǒng)不同,您可能需要在/etc/resolv.conf/etc/nsswitch.conf兩個(gè)文件中選擇一個(gè)進(jìn)行編輯。

如果您的服務(wù)器不必因?yàn)槠渌碛啥褂肈NS,您也許不必在把HOSTRESORDER環(huán)境變量設(shè)為"local"的情況下運(yùn)行Apache。這取決于您所使用的操作系統(tǒng)和解析庫(kù)。如果您沒(méi)有使用mod_env來(lái)控制環(huán)境變量,它還將影響到CGI。強(qiáng)烈建議您查看操作系統(tǒng)附帶的man幫助或FAQ。

top

避免這些問(wèn)題的小技巧

top

附錄:進(jìn)一步的提示

涉及到DNS的情況都很讓人很不舒服。在Apache1.2中,我們努力想讓服務(wù)器在DNS解析失敗的情況下至少保持能夠啟動(dòng),但我們沒(méi)能做到。在當(dāng)今重編號(hào)成了必須的Internet上面,在配置文件中顯式的寫(xiě)明IP地址已經(jīng)成為不合時(shí)宜的行為了。

上述盜竊攻擊的解決辦法是在一個(gè)正向DNS查詢(xún)后再進(jìn)行一個(gè)逆向DNS解析并將兩個(gè)結(jié)果進(jìn)行比較。如果不同,就禁用相應(yīng)的虛擬主機(jī)。這個(gè)方法需要一個(gè)正確配置了的逆向域名解析服務(wù)器(因?yàn)镕TP服務(wù)器和TCP封裝進(jìn)行的"雙重逆向"DNS處理的普遍應(yīng)用,這已為大部分管理員所熟知了)。

在某些情況下,如果沒(méi)有使用IP地址而DNS解析又失敗了,那么正常啟動(dòng)一個(gè)基于域名的虛擬主機(jī)看來(lái)是不可能的。一些諸如禁用部分配置文件這樣的權(quán)宜之計(jì)會(huì)帶來(lái)比根本不能啟動(dòng)更遭的不可預(yù)測(cè)的結(jié)果。

隨著HTTP/1.1的部署以及瀏覽器和代理服務(wù)器開(kāi)始支持Host頭,我們完全避免使用基于IP的虛擬主機(jī)也逐漸成為可能。這種狀況下,web服務(wù)器也不必在配置時(shí)進(jìn)行DNS的查詢(xún)。但在1997年3月,這些特性的采用還沒(méi)有廣泛到可以在重要的web服務(wù)器應(yīng)用的地步。