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

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

關(guān)于DNS和Apache

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

top

一個簡單示例

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

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

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

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

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

以下是一個可以避免上述兩個問題的配置片斷:

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

top

拒絕服務(wù)

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

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

<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。更進一步,假設(shè)def.dom自己控制DNS。在這種配置下,def.dom可以將所有指向abc.dom的流量據(jù)為己。為了達(dá)到這個目的,他們只需把www.def.dom的地址解析設(shè)置成10.0.0.1就可以了。因為他們控制著自己的DNS服務(wù),所以您無法阻止他們把www.def.dom這個記錄指向任何一個IP地址。

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

top

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

在Apache1.1中,基于域名的虛擬主機支持需要Apache知道運行httpd的主機的IP地址。可以用全局變量ServerName(如果存在)或者調(diào)用C函數(shù)gethostname(與在命令行模式下鍵入"hostname"得到的返回值一樣)。接著它就會利用DNS來查找這個地址。目前還沒有辦法避免這樣的查找。

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

如果您的服務(wù)器不必因為其他理由而使用DNS,您也許不必在把HOSTRESORDER環(huán)境變量設(shè)為"local"的情況下運行Apache。這取決于您所使用的操作系統(tǒng)和解析庫。如果您沒有使用mod_env來控制環(huán)境變量,它還將影響到CGI。強烈建議您查看操作系統(tǒng)附帶的man幫助或FAQ。

top

避免這些問題的小技巧

top

附錄:進一步的提示

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

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

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

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