網絡安全與保密(第二版)課件:防火墻技術_第1頁
網絡安全與保密(第二版)課件:防火墻技術_第2頁
網絡安全與保密(第二版)課件:防火墻技術_第3頁
網絡安全與保密(第二版)課件:防火墻技術_第4頁
網絡安全與保密(第二版)課件:防火墻技術_第5頁
已閱讀5頁,還剩119頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

防火墻技術10.1防火墻的概念、原理10.2防火墻技術(層次)10.3防火墻體系結構10.4包過濾技術10.5堡壘主機(Bastion)10.6應用網關和代理服務器參考文獻思考題

防火墻(firewall)原是汽車中一個部件的名稱。在汽車中,利用防火墻把乘客和引擎隔開,以便汽車引擎一旦著火,防火墻不但能保護乘客安全,同時還能讓司機繼續(xù)控制引擎。在電腦中,防火墻是一種設備,可使個別網路不受公共部分(因特網)的影響。后來,將防火墻電腦簡稱為“防火墻”,它分別連接受保護網絡和因特網。

防火墻作為網絡防護的第一道防線,它由軟件或/和硬件設備組合而成,它位于企業(yè)或網絡群體計算機與外界通道(Internet)的邊界,限制著外界用戶對內部網絡的訪問以及管理內部用戶訪問外界網絡的權限。

防火墻是一種必不可少的安全增強點,它將不可信網絡同可信任網絡隔離開(如圖10-1所示)。防火墻篩選兩個網絡間所有的連接,決定哪些傳輸應該被允許哪些應該被禁止。這取決于網絡制定的某一形式的安全策略。

圖10-1防火墻示意圖

防火墻是放置在兩個網絡之間的一些組件,這組組件具有下列性質:

(1)雙向通信必須通過防火墻;

(2)防火墻本身不會影響信息的流通;

(3)只允許本身安全策略授權的通信信息通過。

從誕生到現(xiàn)在,防火墻已經歷了四個發(fā)展階段:基于路由器的防火墻、用戶化的防火墻工具套、建立在通用操作系統(tǒng)上的防火墻、具有安全操作系統(tǒng)的防火墻。目前,防火墻供應商提供的大部分都是具有安全操作系統(tǒng)的軟硬件結合的防火墻。

10.1防火墻的概念、原理

防火墻是在內部網和外部網之間實施安全防范的系統(tǒng)??烧J為它是一種訪問控制機制,用于確定哪些內部服務對外開放,以及允許哪些外部服務對內部開放。它可以根據網絡傳輸?shù)念愋蜎Q定IP包是否可以進出企業(yè)網、防止非授權用戶訪問企業(yè)內部、允許使用授權機器的用戶遠程訪問企業(yè)內部、管理企業(yè)內部人員對Internet的訪問。防火墻的組成可用表達式說明如下:

防火墻?=?過濾器?+?安全策略(網關)

防火墻通過逐一審查收到的每個數(shù)據包,判斷它是否有相匹配的過濾規(guī)則(用表格的形式表示,包括Match,Action,Trace,Target四個條件項)。即按表格中規(guī)則的先后順序以及每條規(guī)則的條件逐項進行比較,直到滿足某一條規(guī)則的條件,并作出規(guī)定的動作(中止或向前轉發(fā)),從而來保護網絡的安全。

防火墻主要提供以下四種服務:

(1)服務控制:確定可以訪問的網絡服務類型。

(2)方向控制:特定服務的方向流控制。

(3)用戶控制:內部用戶、外部用戶所需的某種形式的認證機制。

(4)行為控制:控制如何使用某種特定的服務。

10.2防火墻技術(層次)

第一代防火墻出現(xiàn)在大約十年前,它是一種簡單的包過濾路由器形式。當今,有多種防火墻技術供網絡安全管理員選擇。防火墻一般可以分為以下幾種:包過濾型防火墻、應用網關型防火墻、電路級網關防火墻、狀態(tài)檢測型防火墻、自適應代理型防火墻。下面具體分析各種防火墻技術。

10.2.1包過濾防火墻(TCP、IP)

包是網絡上信息流動的基本單位。它由數(shù)據負載和協(xié)議頭兩個部分組成。包過濾作為最早、最簡單的防火墻技術,正是基于協(xié)議頭的內容進行過濾。術語“包過濾”通過將每一輸入/輸出包中發(fā)現(xiàn)的信息同訪問控制規(guī)則相比較來決定阻塞或放行包。通過檢查數(shù)據流中每一個數(shù)據包的源地址、目的地址、所用端口、協(xié)議狀態(tài)等因素,或它們的組合來確定是否允許該數(shù)據包通過。如果包在這一測試中失敗,將在防火墻處被丟棄。包過濾防火墻如圖10-2所示。

圖10-2包過濾防火墻

考慮包過濾路由器同守衛(wèi)的類比。當裝載有包的運輸卡車到達時,“包過濾”守衛(wèi)快速的察看包的住戶地址是否正確,檢查卡車的標識(證件)以確保它也是正確的,接著送卡車通過關卡傳遞包。雖然這種方法比沒有關卡更安全,但是它還是比較容易通過并且會使整個內部網絡暴露于危險之中。

包過濾防火墻是最快的防火墻,這是因為它們的操作處于網絡層并且只是粗略檢查特定的連接的合法性。例如,HTTP通常為Web服務連接使用80號端口。如果公司的安全策略允許內部職員訪問網站,包過濾防火墻可能設置允許所有的連接通過80號這一缺省端口。不幸的是,像這樣的假設會造成實質上的安全危機。當包過濾防火墻假設來自80端口的傳輸通常是標準Web服務連接時,它對于應用層實際所發(fā)生的事件的能見度為零。任何意識到這一缺陷的人都可通過在80端口上綁定其它沒有被認證的服務,從而進入私有網絡而不會被阻塞。

許多安全專家也批評包過濾防火墻,因為端點之間可以通過防火墻建立直接連接。一旦防火墻允許某一連接,就會允許外部源直接連接到防火墻后的目標,從而潛在的暴露了內部網絡,使之容易遭到攻擊。

10.2.2應用代理防火墻(ApplicationLayer)

在包過濾防火墻出現(xiàn)不久,許多安全專家開始尋找更好的防火墻安全機制。他們相信真正可靠的安全防火墻應該禁止所有通過防火墻的直接連接—在協(xié)議棧的最高層檢驗所有的輸入數(shù)據。為測試這一理論,DARPA(DefenseAdvancedResearchProjectsAgency)同在華盛頓享有較高聲望的以可信信息系統(tǒng)著稱的高級安全研究機構簽訂了合同,以開發(fā)安全的“應用級代理”防火墻。這一研究最終造就了Gauntlet(/),它是第一代為DARPA和美國國防部的最高標準設計的商業(yè)化應用級代理防火墻。

應用級代理防火墻模式提供了十分先進的安全控制機制,如圖10-3所示。它通過在協(xié)議棧的最高層(應用層)檢查每一個包從而提供足夠的應用級連接信息。因為在應用層中它有足夠的能見度,應用級代理防火墻能很容易看見前面提及的每一個連接的細節(jié)從而實現(xiàn)各種安全策略。例如,這種防火墻很容易識別重要的應用程序命令,象FTP的“put”上傳請求和“get”下載請求。

圖10-3應用代理防火墻

應用級代理防火墻也具有內建代理功能的特性—在防火墻處終止客戶連接并初始化一條到受保護內部網絡的新連接。這一內建代理機制提供額外的安全,這是因為它將內部和外部系統(tǒng)隔離開來,從外面只看到代理服務器,而看不到任何內部資源,而且代理服務器只允許被代理的服務通過。使得系統(tǒng)外部的黑客要探測防火墻內部系統(tǒng)變得更加困難。

考慮前面安全守衛(wèi)的類比,和剛才在輸入包中查找地址不同的是,“應用級代理”安全守衛(wèi)打開每個包并檢查其中內容并將發(fā)送者的信任書同已明確建立的評價標準相對比。如果每個傳輸包都通過了這種細致的檢查,那么守衛(wèi)簽署傳送標記,并在內部送一份可信快遞以傳遞該包到合適的住戶,卡車及司機無法進入。這種安全檢查不僅更可靠,而且司機看到內部網絡。盡管這些額外的安全機制將花費更多處理時間,但可疑行為絕不會被允許通過“應用級代理”安全守衛(wèi)。

代理服務安全性高,可以過濾多種協(xié)議,通常認為它是最安全的防火墻技術。其不足主要是不能完全透明地支持各種服務、應用,一種代理只提供一種服務。另外需要消耗大量的CPU資源,導致相對低的性能。

10.2.3電路級網關型防火墻(SessionLayer)

電路級起一定的代理服務作用。它監(jiān)視兩主機建立連接時的握手信息,從而判斷該會話請求是否合法,如圖10-4所示。一旦會話連接有效,該網關僅復制、傳遞數(shù)據。它在IP層代理各種高層會話,具有隱藏內部網絡信息的能力,且透明性高。但由于其對會話建立后所傳輸?shù)木唧w內容不再作進一步地分析,因此安全性稍低。

圖10-4電路級防火墻

電路級網關不允許進行端點到端點的TCP連接,而是建立兩個TCP連接。一個在網關和內部主機上的TCP用戶程序之間,另一個在網關和外部主機的TCP用戶程序之間。一旦建立兩個連接,網關通常就只是把TCP數(shù)據包從一個連接轉送到另一個連接中去而不檢驗其中的內容。其安全功能就是確定哪些連接是允許的。

它和包過濾型防火墻有一個共同特點,都是依靠特定的邏輯來判斷是否允許數(shù)據包通過,但包過濾型防火墻允許內外計算機系統(tǒng)建立直接聯(lián)系,而電路級網關無法IP直達。

電路級網關實現(xiàn)的一個例子就是SOCKS(/)。第五版的SOCKS是IETF認可的、標準的、基于TCP/IP的網絡代理協(xié)議。SOCKS包括兩個部件:SOCKS服務器和SOCKS客戶端。SOCKS服務器在應用層實現(xiàn),而SOCKS客戶端的實現(xiàn)位于應用層和傳輸層之間。SOCKS協(xié)議的基本目的就是讓SOCKS服務器兩邊的主機能夠互相訪問,而不需要直接的IP互聯(lián)(Reachability),如圖10-5所示。圖10-5SOCKS協(xié)議層次

1.SOCKS代理服務器概念

當一個應用程序客戶需要連接到一個應用服務器,客戶先連接到SOCKS代理服務器。代理服務器代表客戶連接到應用服務器,并在客戶和應用服務器之間中繼(relay)數(shù)據。對于應用服務器來說,代理服務器就是客戶。

2.SOCKS模型

SOCKS協(xié)議有兩個版本—SOCKSv4和SOCKSv5。

SOCKSv4協(xié)議完成以下三個功能:

(1)發(fā)起連接請求。

(2)建立代理電路。

(3)中繼應用數(shù)據。

SOCKSv5協(xié)議在第四版基礎上增加了認證功能。

3.SOCKS控制流

圖10-6給出了SOCKv5的協(xié)議控制流模型。虛線范圍內表示的是SOCKv4的功能。SOCKSv5對第四版功能的增強主要包括:

(1)強認證。另定義了兩種協(xié)議用于支持SOCKSv5的認證方法,分別是用戶名/口令認證(rfc1929)和GSS-API(通用安全服務API)認證(rfc1961)。

(2)認證方法協(xié)商。應用客戶和SOCKSv5服務器可以就使用的認證方法進行協(xié)商。

(3)地址解析代理。SOCKSv5內置的地址解析代理簡化了DNS管理和IP地址隱藏和轉換。SOCKSv5可以為客戶解析名字。

(4)基于UDP應用程序的代理。

4.使用SOCKS的原因

利用SOCKSv5所具有的強大而靈活的協(xié)議框架,支持SOCKSv5的應用程序有很多優(yōu)勢,例如,透明的網絡訪問、容易支持認證和加密方法、快速開發(fā)新的網絡應用、簡化網絡安全策略管理和支持雙向代理。

圖10-6SOCKS協(xié)議控制流

10.2.4狀態(tài)包檢測(Stateful-inspection)

為了克服基本狀態(tài)包過濾模式所帶有的明顯安全問題,一些包過濾防火墻廠商提出了所謂的狀態(tài)包檢測概念。上面提到的包過濾技術簡單的查看每一個單一的輸入包信息,而狀態(tài)包檢測模式增加了更多的包和包之間的安全上下文檢查以達到與應用級代理防火墻相類似的安全性能。狀態(tài)包檢測防火墻在網絡層攔截輸入包,并利用足夠的企圖連接的狀態(tài)信息以做出決策(通過對高層的信息進行某種形式的邏輯或數(shù)學運算),如圖10-7所示。

這些包在操作系統(tǒng)內核的私有檢測模塊中檢測。安全決策所需的狀態(tài)相關信息在檢測模塊中檢測,然后保留在為評價后續(xù)連接企圖的動態(tài)狀態(tài)表(庫)中。被檢查通過的包發(fā)往防火墻內部,允許直接連接內部、外部主機系統(tǒng)。

狀態(tài)包檢測防火墻工作在協(xié)議棧的較低層,通過防火墻的所有數(shù)據包都在低層處理,而不需要協(xié)議棧的上層來處理任何數(shù)據包,因此減少了高層協(xié)議頭的開銷,執(zhí)行效率也大大提高了。另外,一旦一個連接在防火墻中建立起來,就不用再對該連接進行更多的處理,這樣,系統(tǒng)就可以去處理其它連接,執(zhí)行效率可以得到進一步的提高。

圖10-7狀態(tài)包檢測防火墻

盡管狀態(tài)包檢測防火墻方法顯著的增強了簡單包過濾防火墻的安全,但它仍然不能提供和前面提及的應用級檢測相似的充足能見度。狀態(tài)包檢測防火墻不依靠與應用層有關的代理,而是依靠某種算法來識別進出的應用層數(shù)據。這些算法通過已知合法數(shù)據包的模式來比較進出數(shù)據包,這樣從理論上就能比應用級代理在過濾數(shù)據包上更加有效。但應用級代理防火墻對最高層的協(xié)議棧內容有足夠的能見度,從而可以準確的知道它的意圖,而狀態(tài)包檢測防火墻必須在沒有這些信息的情況下做出安全決策。

例如,當應用級代理防火墻廠商聲稱支持微軟SQLServer,你就知道任何到內部SQLServer服務器的遠程連接必須在應用層通過專門的微軟SQL代理接受全面的檢測。而對于狀態(tài)包檢測防火墻,允許遠程用戶訪問防火墻后面的SQL數(shù)據庫是肯定要冒更大安全風險的。

假設我們的安全守衛(wèi)是狀態(tài)包檢測守衛(wèi)。這次當包到來時,和僅簡單的檢查地址所不同的是,守衛(wèi)檢測貨物單看是否包內有任何東西是被禁止的。雖然它比簡單的包過濾好,但它還是不如真正打開包檢測它的內容安全。如果包看起來是可接受的,守衛(wèi)打開關卡,允許運貨卡車進入。

狀態(tài)包檢測防火墻的安全比應用級代理要少。應用級代理防火墻本質上提供了比包過濾防火墻更多的安全,不管它是有狀態(tài)的還是無狀態(tài)的。帶有狀態(tài)檢測的包過濾防火墻仍然允許外部用戶直接訪問內網系統(tǒng)和應用程序,而這些程序和系統(tǒng)可能配置在擁有眾所周知的安全弱點的操作系統(tǒng)上。應用級代理通過一個自身具有有限、明確的任務集代理來限制訪問應用程序或計算機系統(tǒng),從而掩蓋了這些同樣的弱點。

10.3防火墻體系結構

目前,防火墻的體系結構一般有以下幾種:

(1)雙重宿主主機體系結構;

(2)被屏蔽主機體系結構;

(3)被屏蔽子網體系結構。

10.3.1雙重宿主主機體系結構(DualHomedHost)

雙重宿主主機體系結構是圍繞具有雙重宿主的計算機而構筑的,該計算機至少有兩個網絡接口(NIC)。這樣的主機可以充當與這些接口相連的網絡之間的路由器,它能夠從一個網絡接口到另一個網絡接口轉發(fā)IP數(shù)據包。然而,實現(xiàn)雙重宿主主機的防火墻體系結構禁止這種轉發(fā)功能。因而,IP數(shù)據包從一個網絡(例如,因特網)并不是直接發(fā)送到其它網絡(例如,內部的、被保護的網絡)。防火墻內部的系統(tǒng)能與雙重宿主主機通信,同時防火墻外部的系統(tǒng)(在因特網上)能與雙重宿主主機通信,但是這些系統(tǒng)不能直接互相通信。它們之間的IP通信被完全阻止。

雙重宿主主機的防火墻體系結構是相當簡單的:雙重宿主主機位于兩者之間,并且被分別連接到因特網和內部網絡,如圖10-8所示。

圖10-8雙宿主防火墻體系結構

10.3.2屏蔽主機體系結構(ScreenedHost)

雙重宿主主機體系結構提供來自與多個網絡相連的主機的服務(但是路由關閉,否則從一塊網卡到另外一塊網卡的通信會繞過代理服務軟件),而被屏蔽主機體系結構使用一個單獨的路由器來提供與內部網絡相連主機(堡壘)的服務。在這種體系結構中,主要的安全措施有數(shù)據包過濾,如圖10-9所示。

在屏蔽路由器上的數(shù)據包過濾是按這樣一種方法設置的,即堡壘主機(Bastionhost),它是因特網上的主機能連接到內部網絡系統(tǒng)的橋梁(例如,傳送進來的電子郵件),而且僅有某些特定類型的連接被允許通過。任何外部系統(tǒng)試圖訪問內部系統(tǒng)或者服務必須首先連接到這臺堡壘主機上。因此,堡壘主機需要擁有高等級的安全。數(shù)據包過濾也允許堡壘主機開放可允許的連接到外部世界(什么是“可允許”將由用戶的站點的安全策略決定)。

圖10-9屏蔽主機防火墻體系結構

在屏蔽路由器中數(shù)據包過濾配置可以按下列之一執(zhí)行:

(1)允許其它的內部主機為了某些服務與因特網上的主機連接(即允許那些已經由數(shù)據包過濾的服務)。

(2)不允許來自內部主機的所有連接(強迫主機經由堡壘主機使用代理服務)。

用戶可以針對不同的服務混合使用這些手段;某些服務可以被允許直接經由數(shù)據包過濾,而其它服務可以被允許僅僅間接地經過代理。這完全取決于用戶實行的安全策略。

因為這種體系結構允許數(shù)據包從因特網向內部網的訪問,所以,它的設計比沒有外部數(shù)據包能到達內部網絡的雙重宿主主機體系結構要更冒風險。因為路由器提供的服務非常有限,實施起來比較容易。

10.3.3屏蔽子網結構(ScreenedSubnetArchitectures)

屏蔽子網結構通過進一步增加隔離內外網的邊界網絡(perimeternetwork)為屏蔽主機結構增添了額外的安全層。這個邊界網絡有時候被稱為非軍事區(qū)(DeMilitarizedZone)。堡壘主機是最脆弱、最易受攻擊的部位,通過隔離堡壘主機的邊界網絡,便可減輕堡壘主機被攻破所造成的后果。因為此處堡壘主機不再是整個網絡的關鍵點,它們給入侵者一些訪問,而不是全部。最簡單的屏蔽子網結構(如圖10-10所示)有兩個屏蔽路由器,一個連接外網與邊界網絡,另一個連接邊界網絡與內網。為了攻進內網,入侵者必須通過兩個屏蔽路由器。即使黑客能夠攻破堡壘主機,他還須通過內部屏蔽路由器。

圖10-10屏蔽子網防火墻體系結構

10.4包過濾技術

包過濾器是最原始的防火墻。包過濾器根據每個包頭部內的信息來決定是否要將包繼續(xù)傳輸,從而增強安全性。理論上,包過濾器可以被配置為根據協(xié)議包頭的任何部分進行判斷,但是大部分的過濾器被配置成只過濾最有用的數(shù)據域,主要是:

(1)

IP地址;

(2)協(xié)議類型;

(3)

TCP/UDP頭信息。

10.4.1創(chuàng)建包過濾規(guī)則

在確定包過濾的配置規(guī)則之前,需要作如下決定:

(1)打算提供何種網絡服務,并以何種方向(從內部網絡到外部網絡,或者從外部網絡到內部網絡)提供這些服務。

(2)是否限制內部主機與因特網進行連接。

(3)因特網上是否存在某些可信任主機,它們需要以什么形式訪問內部網。

對于不同的包過濾產品,用來生成規(guī)則的信息也不同,但通常都包括以下信息:

(1)接口和方向。包是流入還是離開網絡,這些包通過哪種接口。

(2)源和目的IP地址。檢查包從何而來(源IP地址)、發(fā)往何處(目的IP地址)。

(3)

IP選項。檢查所有選項字段,特別是要阻止源路由(sourcerouting)。

(4)高層協(xié)議。使用IP包的上層協(xié)議類型,例如TCP還是UDP。

(5)?TCP包的ACK位檢查。這一字段可幫助確定是否有、及以何種方向建立連接。

(6)

ICMP的報文類型。可以阻止某些刺探網絡信息的企圖。

(7)

TCP和UDP包的源和目的端口。此信息幫助確定正在使用的是哪些服務。

創(chuàng)建包過濾器的規(guī)則時,有如下幾條重要的約定:

首先,由主機或網絡用來允許或拒絕訪問的一些規(guī)則要使用IP地址,而不使用主機名或域名。雖然進行IP地址和域名欺騙都不是非常難的事,但在很多攻擊中,一個IP地址欺騙常常是不容易做到的,因為黑客想要真正得到響應并非易事。然而只要黑客能夠訪問DNS數(shù)據庫,進行域名欺騙卻是很容易的事。這時,域名看起來很熟悉,但它對應的地址卻不是我們所期望的。

不要回應所有從外部網絡接口來的ICMP代碼,因為它們很可能給黑客暴露信息,特別是哪種包可以流入網絡,哪種包不可以流入網絡的信息。對某些包返回ICMP代碼可能等于告訴黑客,在某個地方確實有一個包過濾器在工作。在這種情況下,對黑客來說有信息總比沒有好。防火墻的主要功能之一就是隱藏內部網絡的信息。黑客通過對信息的篩選處理,可以發(fā)現(xiàn)什么服務不在運行,而最終發(fā)現(xiàn)什么服務在運行。如果不返回ICMP代碼,就可限制黑客得到可用的信息。

要丟棄所有通過外部網絡適配器流入,而其源地址是來自受保護網絡的包。這很可能是有人試圖利用這些包進行地址欺騙達到通過網絡安全關口的目的。要記住防火墻不能防止網絡內部的攻擊。

10.4.2IP頭信息

通常,包過濾器只根據包的頭部信息來操作。由于在每個包里有多個不同的協(xié)議頭,所以需要檢查那些對包過濾非常重要的協(xié)議頭。大多數(shù)包過濾器不使用以太幀的頭部信息。幀里的源地址和其它信息沒有太大用處,因為這是本地局域網上系統(tǒng)的MAC硬件地址,或者是包通過因特網的最近一個路由器的硬件地址。

接下來是協(xié)議棧中IP包的頭部信息。IP包的頭部信息很有限。頭部信息中有三種信息在包過濾中很重要:

(1)

IP地址,包括源和目的地址;

(2)協(xié)議類型,例如TCP、UDP、ICMP;

(3)?IP選項,例如源路由選擇。

顯然源和目的地址是最有用的。如果防火墻只允許因特網上一定數(shù)量的主機通過,可以采用基于源地址過濾的方法。相反亦然,可以對網絡內部產生的包進行過濾,只允許某些特定目的地址的包通過防火墻到達因特網。

10.4.3TCP頭信息

TCP是因特網服務使用最普遍的協(xié)議。例如,Telnet、FTP、SMTP、NNTP和HTTP都是以TCP為基礎的服務。TCP提供端點之間可靠的雙向連接。進行TCP連接就象打電話一樣,必須先撥號,建立連接之后,你才能和被叫的用戶之間建立可靠的連接。

TCP的可靠性在于它對應用層的三個保證:

(1)目標將按發(fā)送的順序接收應用程序數(shù)據。

(2)目標將接收所有應用程序數(shù)據。

(3)目標將不重復接收任何應用程序數(shù)據。

TCP寧愿取消一個連接也不違反其中一個保證。例如,如果來自會話中的TCP數(shù)據包在傳輸中丟失,TCP層在將數(shù)據上交給應用層之前安排重新傳輸那些數(shù)據包。如果一些數(shù)據不能恢復,那么TCP層將取消連接并向應用層報告,而不是向應用層提交有殘缺的數(shù)據。

這些保證在設置期間(連接的兩端必須在它們能實際傳輸數(shù)據之前交換啟動信息)和維持性能(連接的兩端必須跟蹤連接的狀態(tài),來決定向另一端重新傳送什么數(shù)據以彌補對話中發(fā)生的錯誤)方面產生一定的開銷。

TCP的雙向體現(xiàn)在:一旦連接建立,服務器能在同一連接中對客戶進行應答(捎帶技術)。你不必建立一條從客戶到服務器用于詢問或者命令的連接,以及另一條從服務器返回到客戶用于回答的連接。

如果你試圖阻止TCP連接,僅阻止連接的第一個數(shù)據包就足夠了。沒有第一個數(shù)據包(它包含建立連接的信息),接收端不會把之后的數(shù)據重新組裝成數(shù)據流,連接也就不存在。第一個數(shù)據包可以被識別是因為在它的報頭中ACK位沒有被設置;其它連接中所有的數(shù)據包不論它去往什么方向,它的ACK位都將被設置。

理解這些“建立連接”的TCP數(shù)據包可讓我們對內部客戶和外部服務器之間的連接進行控制。你可以僅允許建立連接的TCP數(shù)據包(其ACK位沒有設置)出站而不能入站。建立連接的數(shù)據包將允許從內部客戶到外部服務器去,但是不允許從外部的客戶進來到內部服務器。入侵者不能只在他們的建立連接中打開“ACK”位破壞這個機制,因為缺少ACK位將認定這些數(shù)據包是建立連接的數(shù)據包。

圖10-11表示了ACK在一個TCP連接的部分數(shù)據包上是如何設置的。

圖10-11TCP數(shù)據包上的ACK位

僅僅依靠地址進行數(shù)據過濾在實際運用中是不可行的,因為目標主機上往往運行著多種網絡服務。比方說,我們不想讓用戶采用Telnet的方式連到系統(tǒng),但這絕不等于我們非得同時禁止他們使用SMTP/POP郵件服務器?所以說,在地址之外我們還要對服務器的TCP/UDP端口進行過濾。

1.端口和套接字

端口用來標識連接端點的應用程序。由于一臺計算機可能同時有多個應用程序使用TCP協(xié)議棧,因而需要一種方法來區(qū)分各個包發(fā)往的應用程序。例如,己經和遠程計算機建立了Telnet會話,又想要上傳文件到那臺計算機。Telnet并不能傳輸文件,所以必須打開一個FTP連接。由于兩個連接使用的IP包的源和目的地址都相同,于是就可以用端口區(qū)分相應的應用程序。

把地址和端口結合起來,就可以唯一地標識一條連接。這種數(shù)字的組合名字我們稱為套接字(socket)。在圖10-12中,兩臺計算機之間建立了兩個連接會話,一個是Telnet(端口23),另外一個是FTP(端口20)。FTP實際上使用了兩個端口,一個是用于發(fā)送數(shù)據的端口20,一個是交換命令信息的端口21。很明顯這些端口號對包過濾器來說非常有用。相對而言,如果僅僅基于包的源或目的地址來拒絕和允許該包,就會造成要么允許全部連接要么拒絕全部連接的后果,而端口號可幫助我們有選擇地拒絕或允許個別服務。

盡管我們可能不想讓用戶使用Telnet登錄到一個遠程計算機(或者相反),但可能不關心他們是否通過匿名FTP會話交換文件。在包過濾規(guī)則中使用端口號可以同時拒絕或允許各種網絡服務。

圖10-12套接字(由一個地址和一個端口號組成)唯一標識一條網絡連接

2.端口過濾規(guī)則創(chuàng)建

有了這些信息我們就可以很好地創(chuàng)建包過濾規(guī)則了。一條好的包過濾規(guī)則可以同時指定源和目的端口。一些老的路由器不允許指定源端口,這可能導致防火墻的很大的安全漏洞。例如,創(chuàng)建幾個允許流入和流出SMTP連接的例子,這樣Email可以進行傳送。在第一個例子中,規(guī)則中只允許目的端口,如表10-1所示。

在這個例子中,可以看到規(guī)則l和規(guī)則3允許端口25的流入和流出連接,該端口通常被SMTP使用。規(guī)則l允許外部計算機向內部網絡的服務器端口25發(fā)送數(shù)據。規(guī)則2允許網絡內部的服務器回應外部SMTP請求,并且假定它使用大于1024的端口號,因為規(guī)則允許大于或等于端口1024的連接。

規(guī)則3和4允許反方向的SMTP連接,內部網絡的SMTP服務器可以向外部網絡的SMTP服務器的端口25建立連接。最后一條規(guī)則5,不允許其它任何連接。這些過濾規(guī)則看起來非常好,允許兩個方向的SMTP連接,并且保證了內部局域網的安全。但這是錯誤的。當創(chuàng)建包過濾規(guī)則時,需要同時觀察所有的規(guī)則,而不是一次只觀察一條或兩條。在這個例子中,規(guī)則2和規(guī)則4允許大于端口1023的所有服務,不論是流入還是流出方向。黑客可以利用這一個漏洞去做各種事情,包括與特洛伊木馬程序通信。

要修補這些規(guī)則,需要能夠除了指定目的端口之外,還要能夠指定源端口。讓我們看下一個改進以后的例子,如表10-2所示。

在這一個例子中,規(guī)則2和規(guī)則4不再允許兩端口都大于1023的連接。相反,在連接的一端,這些連接被綁定到SMTP端口25上。

10.4.4UDP端口過濾

現(xiàn)在回過頭來看看怎么解決UDP問題。UDP包沒有ACK位所以不能進行ACK位過濾。UDP是發(fā)出去就不管的“不可靠”通信。這種類型的服務通常用于廣播、路由、多媒體等廣播形式的通信任務。NFS、DNS、WINS、NetBIOS-over-TCP/IP和NetWare/IP都使用UDP??磥碜詈唵蔚目尚修k法就是不允許建立入站UDP連接,防火墻設置為只許轉發(fā)來自內部接口的UDP包,來自外部接口的UDP包則不轉發(fā)。

現(xiàn)在的問題是,比方說,DNS域名解析請求就使用UDP協(xié)議,如果你提供DNS服務,至少得允許一些內部請求穿越防火墻。還有,IRC這樣的客戶程序也使用UDP,如果要讓你的用戶使用它,就同樣要讓他們的UDP包進入網絡。我們能做的就是對那些從本地到可信任站點之間的連接進行限制。但是,什么叫可信任,如果黑客采取地址欺騙的方法不又回到老路上去了嗎?

有些新型路由器可以通過“記憶”出站UDP包來解決這個問題:如果入站UDP包匹配最近出站UDP包的目標地址和端口號就讓它進來。如果在內存中找不到匹配的UDP包就只好拒絕它了,如圖10-13所示。

圖10-13UDP動態(tài)數(shù)據包過濾

但是,我們如何確信產生數(shù)據包的外部主機就是內部客戶機希望通信的服務器呢?如果黑客詐稱DNS服務器的地址,那么他在理論上當然可以從DNS的UDP端口發(fā)起攻擊,只要你允許DNS查詢和解析包進入網絡這個問題就必然存在。辦法是采用代理服務器。

所謂代理服務器,顧名思義就是代表你的網絡和外界打交道的服務器。代理服務器不允許存在任何網絡內外的直接連接。它本身就提供公共和專用的DNS、郵件服務器等多種功能。代理服務器重寫數(shù)據包而不是簡單地將其轉發(fā)了事。給人的感覺就是網絡內部的主機都站在了網絡的邊緣,但實際上他們都躲在代理的后面,露面的不過是代理這個假面具。

10.4.5無狀態(tài)操作和有狀態(tài)檢查

使用源和目的端口對建立TCP連接的規(guī)則十分有用,因為TCP是面向連接的協(xié)議,UDP是一個無連接的協(xié)議。每一個UDP包是獨立的,在進行請求/響應時,從每個包的頭部不可能確定一個流入包是不是前一個UDP包的響應包。一條簡單的包過濾規(guī)則不可能控制使用UDP包的服務。

簡單的包過濾器,又稱為無狀態(tài)包過濾器,是在一個包接一個包的基礎上決定過濾的,無法創(chuàng)建依據一個包與另一個包的關系來進行過濾的規(guī)則。

動態(tài)包過濾技術,也稱為有狀態(tài)檢查,是通過在內存中保持一個對流入和流出包進行匹配的表而在更高層次上實施包過濾的概念。保留的信息通常包括源和目的地址以及源和目的端口。

每當一個可信任的內部主機與一個不可信任的外部主機建立一個TCP套接字時,同連接同步(SYN)包一起傳輸?shù)倪€有套接字信息(IP地址和端口)。當SYN包被路由通過狀態(tài)檢查包過濾器時,過濾器將在它的狀態(tài)表中建立一個包含目標套接字和響應套接字的條目,然后將包發(fā)送到不可信任的網絡上。當響應返回時,過濾器簡單地在它的狀態(tài)表中查找包的源套接字和目標套接字,如果查明它與希望的響應匹配,就讓這個包通過。如果在狀態(tài)表中沒有這個條目,包就被放棄,因為它不是內部網絡請求的。圖10-14表示的有狀態(tài)包過濾器的建立階段。圖10-14一個狀態(tài)檢查包過濾器允許返回的數(shù)據

當TCP關閉連接數(shù)據包被發(fā)送通過過濾器時,或者在一段延遲之后,這段延遲通常是幾分鐘,過濾器就將這個條目從狀態(tài)表中刪除。這就保證了釋放的連接不會在狀態(tài)表中留下“漏洞”。

10.5堡壘主機(Bastion)

術語堡壘主機通常是指那些在安全方面能夠達到普通工作站所不能達到程度的計算機系統(tǒng)。這樣一個計算機系統(tǒng)會最大程度利用底層操作系統(tǒng)所提供的資源保護、審計和認證機制等功能,并且對完成既定任務所不需要的應用和服務都將從計算機系統(tǒng)中刪除,這樣就減少了成為受害目標的機會。

同時,堡壘主機不保留用戶賬戶,軟件運行所必須的或主機管理員所需的服務都以最小特權為原則運行。

堡壘主機是最顯露的主機,因此也應當是最安全的主機。設計和構筑堡壘主機有兩條基本原則:盡量簡單;隨時做好堡壘主機被損害的準備。堡壘主機越簡單,它的安全越有保證。但即便如此,也沒有絕對安全的計算機系統(tǒng),入侵仍有可能發(fā)生。因此我們有理由強調:如果堡壘主機被損害該怎么辦?

堡壘主機可以用于各種各樣的防火墻體系結構當中,而且堡壘主機的數(shù)量可以依照站點的具體需求及資源而定。通常在防火墻體系結構當中,我們使用一臺路由器來連接LAN和因特網,而這個路由器可以完成數(shù)據包過濾功能。包過濾器是LAN和因特網之間的第一道防線,在那臺包過濾路由器之后,是一臺或幾臺堡壘主機為內部網的用戶提供所需的代理服務。

通過堡壘主機可提供的服務很多,配置也不一樣,見圖10-15。但總的可以分成以下四類:

(1)安全的服務:如果使用,可以通過包過濾器提供。

(2)提供的服務不安全,但可以采取安全措施彌補:在堡壘主機上提供。

(3)提供的服務不安全,也無法保證它的安全:盡量廢除這些服務。如果確實需要,專門提供一臺犧牲品主機。

(4)不使用的或者不與因特網連接的服務:盡量廢除。

圖10-15堡壘主機可以運行各種各樣的因特網服務

堡壘主機應該使用最安全的方式來配置它,當然我們也必須使它能夠完成它自己的工作。安全總是用戶需求和網絡中潛在威脅的平衡產物,千萬不要忘記在因特網上每天都有新的威脅產生,不要忽視堡壘主機的配置過程。如果擁有一個商業(yè)的防火墻產品,請仔細閱讀廠商提供的文檔,特別是與操作系統(tǒng)相關的配置。

為加強作為堡壘主機的計算機系統(tǒng)的安全性,應該著重考慮以下幾點:

(1)重新安裝一個安全版本的操作系統(tǒng)。

(2)關閉不必要的服務。

(3)刪除終端用戶的應用程序,但這些應用程序必須與堡壘主機的防火墻功能無關。

(4)使用操作系統(tǒng)的資源保護機制牢固控制對所有文件

和目錄的訪問。

(5)配置詳細的審計和安全日志。

(6)運行安全檢查程序以確定安全基準。

10.6應用網關和代理服務器

包過濾器工作在網絡傳輸層,通過檢查IP和其它協(xié)議的頭部信息來實現(xiàn)過濾。而代理服務器工作在應用層,它能提供多種服務。網絡中所有的包必須經過代理服務器來建立一個特別的連接,因而代理服務器提供了客戶和服務器之間的通路。另一個經常用來表示代理服務器的專業(yè)術語是應用網關(ApplicationGateway)。

與包過濾器中內部網絡和外部網絡傳輸?shù)氖窍嗤腎P包不同,代理服務器并不傳輸實際的包。它接收客戶的請求,然后代表客戶向服務器發(fā)出實際的請求。在客戶和服務器之間沒有實際的IP包經過。代理服務器位于連接的中間,它分別向客戶和服務器通話來保持它們的連接。

包過濾器和代理服務器的主要區(qū)別之一就是代理服務器能夠理解各種高層應用。包過濾器只能基于包頭部中的有限信息,通過編程來決定通過或者丟棄網絡包;而代理服務器是與特定的應用相關,它根據用戶想要執(zhí)行的功能,編程決定是允許或者拒絕對一個服務器的訪問。

在圖10-16中可以看到代理服務器是怎樣來阻塞內部網和因特網之間實際的IP通信的。一個想要瀏覽某個Web頁面的用戶從工作站向因特網中的該頁面發(fā)出一個請求,因為用戶的瀏覽器被設置為向代理服務器發(fā)送HTTP請求,因此這個請求不會直接傳送到這個實際的Web服務器。

圖10-16代理服務器隔開了客戶同Web服務器的直接通信

實際上,代理服務器從它連接到本地網絡的網絡適配器接收請求,然而它并不將包含該請求的IP包路由(或者轉發(fā))到因特網中實際的目標服務器。運行于代理服務器中的代理應用程序根據一系列被管理員確認的規(guī)則來決定是否允許該請求。如果允許,代理服務器就生成一個對該頁面的請求,并使用其它的(連接到因特網上的)網絡適配器地址作為請求的源地址。當因特網上的Web服務器接收到該請求后,它只能認為代理服務器是請求該頁面的客戶,然后它就將數(shù)據發(fā)送回代理服務器。

當代理服務器接收到所請求的Web頁面以后,它并不是將這個IP包發(fā)往最初的請求客戶,而是對返回的數(shù)據進行一些管理員設置的檢查。如果通過了檢查,代理服務器就用它的本地網絡適配器地址創(chuàng)建一個新的IP包,將頁面數(shù)據發(fā)送到客戶。

正如我們看到的,阻塞IP通信并不是使用代理服務器的唯一好處。它可以針對請求類型執(zhí)行某些檢查,并檢查返回數(shù)據的內容。另外,根據設置的一系列規(guī)則,我們可以讓代理服務器接受或拒絕某些數(shù)據。

對于允許客戶通過防火墻訪問的每一種網絡服務,可能都需要一個獨立的代理服務器應用程序。標準的代理應用程序對于典型的TCP/IP應用,例如FTP、Telnet以及像HTTP這樣流行的服務已經足夠。不過對于新的服務或者那些很少使用的服務,可能找不到代理軟件。

代理服務器的工作是雙向的??梢允褂么矸掌鱽砜刂凭W絡內部哪些用戶可以建立因特網請求,也可以使用它來決定哪些外部客戶或者主機可以向內部網絡發(fā)送服務請求。在這兩種情況下,這兩個網絡之間都沒有直接的IP包通過。

10.6.1網絡地址轉換器

網絡地址轉換(NAT)是一個很流行的代理服務。防火墻的重要功能之一就是對外部網絡隱藏內部網絡的信息。這些信息包括TCP/IP地址和網絡中工作站和服務器之間的確認數(shù)據。為了隱藏主機信息,當NAT代表內部網絡的客戶在因特網上建立連接時,它使用自己的IP地址(或者某個IP地址范圍)。在受保護的網絡里,客戶之間使用分配的真實IP地址進行通信。當一個請求被送往防火墻時,NAT應用程序將源地址字段替換為它自己的地址。當應答返回到NAT應用程序時,它將它自己的目標地址字段替換為最初建立請求的客戶的地址。

實現(xiàn)NAT的地址映射有許多方法:

(1)一些NAT使用靜態(tài)地址分配(StaticTranslation,也稱為端口轉發(fā),PortForwarding),它們用NAT為內部網絡的客戶綁定一個固定IP地址。

(2)使用動態(tài)地址分配(DynamicTranslation,也稱為自動模式,隱藏模式或IP偽裝)的NAT為訪問外部網絡的客戶分配1個IP地址。在客戶會話結束,或者超過某一時限后,合法的外部網絡地址會返回到地址池,等待下次分配,實現(xiàn)IP地址的復用。

NAT可以工作在單向方式,當初始化外出的會話時,NAT為內部網絡客戶分配一個網絡地址。它也可以工作在雙向方式,以便進入的目的IP地址可以被修改,從而發(fā)送數(shù)據包到處于內部網絡的服務器。

1.基本NAT

到目前為止,所討論的有關網絡地址轉換的概念(靜態(tài)和動態(tài)分配)都是指基本NAT。這要求給NAT分配一個或多個有效因特網地址,以便用這些地址為內部網絡用戶建立連接。這意味著在任何時刻,分配給NAT使用的有效IP地址應該不小于連往外部網絡的會話數(shù)。如果給NAT分配10個可以使用的IP地址,那么在內部網絡就只能有10個客戶同時向外部網絡建立連接。

圖10-17顯示了這樣一個例子。這里,分配給工作站A的網絡地址是。當它請求建立因特網連接時,NAT從它的地址池中使用來建立實際的連接。

當工作站B和C發(fā)出連接請求時,NAT使用地址池中接下來的兩個地址。然而,當工作站D嘗試一個因特網連接時,NAT沒有可以使用的地址,因此它的請求會失敗。如果使用靜態(tài)NAT,工作站D的因特網連接請求永遠都不會成功。如果使用動態(tài)NAT,在一個工作站將它的地址返回到地址池以后,工作站D的連接請求就會成功。

圖10-17網絡地址翻譯

2.網絡地址端口轉換

如果使用的外出連接數(shù)是有限的,那么對于該網絡使用基本NAT可能是理想的。如果同時有許多用戶向外部建立連接,而NAT又沒有足夠多的有效IP地址,那么這種方法就不行了。前面章節(jié)介紹了套接字的概念,IP地址和端口號的組合被用于唯一地表示一個TCP或者UDP通信終端。一般的標準(并不一定要遵守)是將端口0~1023保留為服務器使用,客戶或者其它的應用程序可以使用1024以上的端口。

例如,在一個TCP連接中,客戶會發(fā)送一個請求到服務器,在這個請求的頭部包含目標IP地址和端口號信息以及客戶自己的源IP地址和端口號。端口號并不需要相互對應,它們只是唯一地標識一個連接,以便主機能夠跟蹤是哪一個應用程序在與其它主機上的哪個應用程序進行通信。

客戶使用的目的地端口號通常被目標服務器解釋為用戶所要求的某種服務。例如,Telnet服務器一般監(jiān)聽端口23。不過客戶發(fā)送包的源端口可以改變,重要的只是讓Telnet服務器知道用戶的端口號是多少,并在服務器發(fā)送應答報文給客戶時使用該端口號。

你可能己經明白接下來會討論什么。為了擴大允許的外部連接數(shù),而不需要增加分配給NAT的IP地址數(shù),一種新的稱為網絡地址端口轉換(networkaddressporttranslation,NAPT)的NAT能夠替換客戶的IP地址和源端口號。使用這種方法,通過改變源端口號,一個有效的因特網地址能夠為LAN中的多個客戶提供服務。NAPT服務器維護一張將客戶的連接轉換為外部IP地址和為該IP地址分配的唯一端口號的表,這樣就可以確定各個用戶的連接了。

下面我們來看一個例子。假設內部主機要與外部主機5建立一條Web連接。主機利用某個可用的端口,例如1234,向主機5:80發(fā)送一個TCP包。

路由器/防火墻(內部地址,外部地址)接收到這個包以后在翻譯表中記錄:

Source ::1234

PublicHost :5:80

Translation ::13344

然后使用翻譯后的地址和端口在因特網上傳輸該TCP包,因此5:80接收到來自:13344(防火墻外部地址)發(fā)出的連接請求。返回的響應也就發(fā)送給:13344。防火墻接收到這個包以后在它的翻譯表中搜索匹配的套接字,證實這個包確實是一個內部主機發(fā)出的請求。如果沒有發(fā)現(xiàn)匹配項,這個包丟棄并記錄下來。

最后防火墻用內部源客戶的套接字參數(shù)進行替換,并將這個包發(fā)送到內部網絡的最終客戶。圖10-18表示了整個過程。

圖10-18網絡端口地址翻譯

NAT所改變的其它數(shù)據

除了改變源IP地址并可能改變源端口號以外,別忘了其它一些字段也需要修改。它們是包頭部的校驗和字段。修改IP地址就需要重新計算校驗和,否則會導致該包在接收端被丟棄。

使用NAT的結果是可以使用一個因特網IP地址來代表內部網絡的大量客戶。

10.6.2內容屏蔽和阻塞

屏蔽因特網訪問是近年來一個很熱門的話題,它允許管理員阻塞內部網絡的用戶對某些站點的訪問。一些產品允許詳細指明要阻塞的網站,而另一些產品阻塞網絡通信的內容,可以設置要阻塞的詞語或者數(shù)據。畢竟,對于一個商業(yè)網絡來說,老板可能希望員工將時間花在工作上,而不是讓員工欣賞“有意思”的站點。

使用內容屏蔽和阻塞技術不僅能限制員工將時間花在工作上,它也能減少法律責任。例如,如果一個員工下載了令人討厭的資料(像色情文學和讓人討厭的信息),并且當他展示這些資料時其它員工認為這是對他的攻擊,那么公司是否有責任呢?阻止要比發(fā)生以后再解決簡單得多。因此,目前內容屏蔽和阻塞技術十分流行。

因為代理服務器位于客戶和提供網絡服務的服務器之間,所以有很多方法來進行內容屏蔽或阻塞訪問。

(1)

URL地址阻塞:可以指定哪些URL地址會被阻塞(或者允許訪問)。這種方法的缺點就是因特網中的URL地址會經常改變。每天都有成千上萬的頁面被添加進來,讓一個繁忙的管理員審查所有這些新頁面是不可能的。

(2)類別阻塞:這種方法可以指定阻塞含有某種內容的數(shù)據包。例如,含有黃色內容或者仇恨內容的數(shù)據包。

(3)嵌入的內容:一些代理軟件應用程序能夠設置為阻塞Java、ActiveX控件,或者其它一些嵌入在Web請求的響應里的對象。這些對象可以在本地計算機上運行應用程序,因此可能會被黑客利用來獲得訪問權限。

內容阻塞軟件并不是完美的,它不應該是阻塞某些數(shù)據流入內部網絡的唯一方法。盡管可以列出一長串的URL地址來阻塞用戶的訪問,但是有經驗的用戶可以在HTTP請求中使用服務器的IP地址來通過這一檢查。更糟的是,IP地址并不一定要寫成點分十進制記法。一個IP地址實際是一個32位的數(shù)字,點分十進制記法只是一種通常的簡便記法。大多數(shù)瀏覽器會很樂意接受表示32位地址的十進制教(例如數(shù)值等于該32位二進制數(shù)的整數(shù))。以地址19為例,用二進制表示,其值分別是:

216=11011000

65=01000001

溫馨提示

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

評論

0/150

提交評論