close
2008/12/01 23:42

創建時間︰2003-06-09
文章屬性︰原創
文章提交︰penetrate (yiming_at_security.zz.ha.cn)

Netscreen VS. checkpoint 雜談 Part I (version:0.9)

Jun 06,2003

作者︰Yiming Gong
http://security.zz.ha.cn


聲明:任何形式的摘抄必須保留上述作者和http位址

這是Netscreen VS. checkpoint 雜談的第一部分

1. 開始前的聲明
首先,本人在資源方面即沒有netscreen,也沒有checkpoint,更沒有smartbits之類的測試設 備,以下的內容均是本人翻遍netscreen和checkpoint網站,同時結合網路上搜集的資料中分析得出的結果,因此不可避免會有不當之處,這些 地方歡迎各位資深人士指出,以便本人進一步修正和完善本文檔。
其次,本文不是講如何安裝配置這些產品的,這些東西是“熟練工人“做的事情。
最後,本文對產品的各種評價均為個人看法,任何意見,非常歡迎討論。

2. 為什麼會有這么一篇文章︰
相對於其他安全產品,防火牆在網路的應用中要普遍的多,同時在安全市場上也是相對要成熟的技術。但是留心的 人很容易注意到,目前防火牆的宣傳很亂,各家廠商都在鼓吹自己的產品,詆毀對手的產品,他們每家都可以列出來一串串的單子,宣稱在某某功能超出對手。這種 例子比比皆是;與此同時,很多媒體和評測機構(國外國內均是如此)也拋出了一些不負責任的所謂公平的評測報告。更給大家帶來困惑。本文力圖按照個人理解的 一些東西來描述這兩種系統。

3. 架構
首先我們來看防火牆的架構,這包括兩個方面,軟體和硬體兩部分。也就是防火牆營運在什麼軟體系統上以及防火牆安裝的硬體平台。
架構是防火牆的骨骼,他決定了防火牆整體的工作水準和潛能。一般而言,我們可以把常見的防火牆分為基與硬體和基於軟體的兩類。

基於硬體的防火牆硬體方面一般是採用專門設計的實現防火牆必要功能的ASIC,NP架構等量身定製的硬體,供防火牆跑的作業系統也是專門設計的。
而基於軟體的防火牆硬體方面一般採用通用架構的pc硬體,作業系統也因此採用的多是基於unix系列或者nt系列的通用作業系統。

這裡面checkpoint可以歸類為基於軟體的防火牆,而netscreen則是基於硬體的。

兩種架構的描述︰
性能︰
netscreen沒有採用道統的工業架構佈局,而是使用的是獨立研發體系架構,包括netscreen專 用的screenos作業系統和為實現防火牆功能而特別設計的ASIC晶片(這包括從低端的netscreen5,10的採用的megascreen晶片 到高端的netscreen 500,5000等使用的Gigascreen晶片),它們與RISC處理器等設備緊密集成,為客戶提供專用的防火牆的各項功能。

由於netscreen防火牆設計上就是為了完成必要的防火牆工作,同時對數據包的訪問控制,加密,位址轉換等工作是透過上述專門的硬體來實現的, 這就從架構上非常好的避免了道統的基於工業架構的軟體防火牆不是專門為了防火牆設計,極大的倚賴cpu,同時匯流排帶寬受限制等重大的弊病,從這一點來 看,理論上對防火牆的要求越高,netscreen體現的價值就越大。
在netscreen的站點上,關於防火牆的白頁宣稱它的高端netscreen 5400,在作業系統screenos版本為3.0防火牆時防火牆的通透性可以達到12Gbps之高(vpn可達6Gbps)-這是本人所了解的性能最高的防火牆。

checkpoint防火牆本身是一套軟體,而基於軟體的checkpoint防火牆本質上從作業系統到硬體架構都是使用的通用的系統,因此儘管軟體本身可能已經儘可能的得到了優化,但受架構的局限,性能在理論上先天不足。
Checkpoint 為了解決這個問題,相繼推出了軟硬體的加速方案,這些方案主要功能是一致的︰一方麵包括將數據包的訪問控制,加解密,位址翻譯等非常消耗系統資源的工作從 cpu轉移到專門的插卡來處理,減小cpu負荷,另外一方面透過優化軟體對數據的處理層次,將本來在高層的處理工作向下放,向硬體層次靠攏。透過上述兩個 方面,從而實現減少承載它的系統的壓力,改進提升系統性能的目的。我們可以看到的SecureXL,checkpoint Performance Pack,VPN-1 Accelerator Card以及和Corrent公司,Nortel等公司合作推出的各種加速卡,都是這一思想的產物。
從checkpoint的站點上得到的資源來看,這些解決方案的效果還是比較理想的。在checkpoint的高端產品上(如和Bivio合作推出的1000s平台上的防火牆性能可達4.0 Gbps,在64byte小包上也可達到3.2 Gbps的通透性)。
此外根據checkpoint公佈的資料來看,在這個月checkpoint自己的測試中,使用了5月13宣稱的新技術Application Integlligence後,性能在原來的基礎上進一步提升了31%。


穩定性兼容性︰
由於netscreen採用的專門的軟硬體,因此系統的穩定性上理論上應該領先,同時由於防火牆作業系統是專用的screenos,不存在防火牆和硬體的兼容性問題。

而checkpoint使用的優化和定製後的作業系統和硬體,但是由於防火牆需要營運在通用的作業系統和硬體之上,而這些作業系統和硬體不是特定為防火牆各項功能設計的,因此可能會存在穩定性和兼容方面的隱患。

功能和靈活性︰
netscreen採用的專門設計的作業系統和硬體架構,決定了靈活性上要相對差一些,而且可能提供的功能相對較少。
比如早期為很多人詬病的高版本的screenos作業系統無法使用在早期的硬體平台上,從保護投資的角度上是很難為客戶所接受的。
又如netscreen的策略數目是有限的,如果用完了訪問控制策略,如果要新增新的策略,那麼必須去掉已經配置好的某些策略。
此外對硬體的倚賴決定了很難擴充新的功能模塊,防火牆從購買之日起能提供的功能就基本上不會有太多的改變了,客戶買了某種型號的防火牆後可能無法期待後期的重大升級。

而Checkpoint由於架構不倚賴硬體,因此理論上功能是可以無限擴充的,它能給客戶更多的控制和定製功能。

防火牆所在系統安全更新
netscreen這種基於硬體的防火牆由於採用專用的screenos作業系統,安全問題暴露很少,需要打安全patch的必要性小。

checkpoint跑在windows和unix上,由於這些作業系統本身的安全問題,管理員需要不斷的更新作業系統本身的patch(尤其是 windows平台上的,yiming簡直受不了window隔三差五的patch了~~),這對防火牆的管理者而言是個比較痛苦的活兒。

維護成本
netscreen這種基於硬體的防火牆營運起來很容易,基本上加電開機就可以跑起來了,而且防火牆維護者不需要了解防火牆以外的任何技術。

Checkpoint正常營運需要先安裝作業系統,安裝各種驅動(比如網卡),配置作業系統等,這是個比較討厭的活兒。
不過checkpoint為了解決這個問題,也推出了軟硬體集成在一起的產品,國內常見的就是和NOKIA合作推出的產品,比如NOKIA IP740,就是綁定在一起的基於freebsd的checkpoint套件,直接開電防火牆就能跑起來。
此外值得注意的是,如果checkpoint防火牆營運在unix平台上,需要防火牆的維護者對unix系統熟悉,不要小看這一點,在很多的公司,這對管理員是個很大的挑戰。

4. 數據包的處理模式
除了防火牆的體系架構,最重要的部分就是防火牆對數據包的處理模式了,雖然checkpoint和 netscreen都說自己都是基於stateful inspection的防火牆,但兩者還是有區別的。個人認為,準確的講︰checkpoint更多的是SPI(stateful packet inspection),而netscreen則更多的是SPF(stateful packet filter)

netscreen使用的是核心是SPF,所謂SPF,一言以蔽之,即︰在道統的包過濾的基礎上增加了對數據包的狀態判斷。一個數據包如果不是意圖 建立連接的數據包同時又不屬於任何已經建立的連接的話,這個數據包直接就被丟棄或者拒絕-根本無需去和訪問控制列作比較。這樣就大大增加了安全性,同時提 升了性能。目前基本上主流的防火牆都採用了這一非常成熟的技術,與此同時,為了更加有效的發揮防火牆的作用,netscreen公司和其他大多數公司一 樣,在對數據包的處理模式上,除了SPF,還增加了Application Proxy模式,利用這一模式,netscreen對高層的一些應用可以進一步加以控制,比如利用syn gateway抵抗Denial of service攻擊即為一例。
(注︰關於SPF,SPI, Application Proxy等具體概念,不是這裡討論的內容,大家可參考相關資料)

我們來看看netscreen是如何利用ASIC晶片和SPF處理tcp數據包的︰
當數據包到達netscreen的網路端口時,要先進行基本的有效性檢查,驗証數據包合法後,screenos檢查這個數據包是否是已存在的某個連接的session的一部分(比如屬於一個已經建立成功的telnet)。
如果該數據包聲明屬於已存在的某個連接的session的一部分,那麼進一步檢查tcp的sequeuce號等參數來確認是有效的數據包,是就透過,否丟棄。

如果該數據包不屬於任何已經建立的session,那麼搜索管理員事先設定的訪問控制列內容,如果訪問控制列內沒有符合該數據包的內容,數據包被丟 棄,如果存在符合該數據包特性的訪問控制規則,那麼一條新的session建立。請注意這些工作是在它的ASIC晶片上進行的。

為什麼要強調這一點呢?我們來考慮如下問題︰決定防火牆性能的主要取決於什麼?
為了回答這個問題,我們先溫習一下防火牆的基本概念︰防火牆是在兩個網路間實現訪問控制的一個或一組軟體或硬體系統。防火牆的最主要功能就是屏蔽和允許指定的數據通訊,而該功能的實現又主要是依靠一套訪問控制策略,由訪問控制策略來決定通訊的合法性。
從上面的防火牆的概念我們可以看出,防火牆的主要工作就是進行訪問控制,那麼同樣條件下,訪問控制的處理速度越快,那麼防火牆的性能自然就愈好。
同時,另外一方面,一般來說,某個數據包被拒絕,往往是與訪問控制列的acl逐條比較,如果前面的acl不符合,那麼在訪問控制列的最後部分才會被拒絕。如果系統性能較差,這會是個非常耗費資源和性能的工作。

Netscreen在實現SPF時,透過在ASIC硬體而非cpu上進行訪問控制的策略的比較,顯著的提升了速度。在netscreen的白頁上, 介紹它的防火牆可以以線速處理4萬條以上的訪問控制規則,這個結果是令人非常滿意的。這也是netscreen在實現SPF中最為閃光的一部分。

Checkpoint的工作模式主要基於SPI,SPI是工作在SPF之上的,它在提供SPF的功能基礎上,增加了對數據包內容(高層)的分析功 能。這對管理員對網路的安全控制能力無疑增進了一大步,同時,也是非常實用的一個功能,對一個有經驗的管理員來說,利用SPI可以大大地減小網路的安全管 理工作。
一個很簡單的例子︰一家企業分佈在各地機構的局域網需要對外開放snmp管理功能,常見的防火牆一般也就是放開tcp/udp 161和162端口,無法再做更多的控制了,但是利用SPI,管理員就可以控制僅僅對外開放snmp的get功能,不允許set動作,這就極大的減少了 snmp端口開放的危害性。又比如,利用SPI,管理員可以強製透過80端口的數據包必須是真實的http數據,而不是流或者即時通訊工具。

我們知道代理型防火牆同樣能夠提供高層訪問控制,但是代理型防火牆工作在高層,他們在處理client和server的連接時,作為“二傳手“來分 析解釋和控制數據包,每個client到server的連接被截獲,演變成client到代理,代理到server,server到代理,再從代理到 client的通訊形式。這就增大了延遲,同時對每種類型的通訊都需要高層的分析解釋能力的單獨的軟體來做,局限較大。

而checkpoint的數據包處理引擎INSPECT工作在網路層和數據鏈路層之間,他們並不打斷client和server端的連接。由於工作在最低端,進出端口的所有的數據包都會被核查,只有符合INSPECT引擎審核透過的數據包才能向高層發送。
INSPCET 引擎使用可定製的INSCPET語言來理解和分析需要關心的數據包內容,並實現對數據包的動態控制。由於INSCPET語言的對象是整個原始的數據包,因 此就在SPF的基礎上增加了高層的控制,如︰不僅向SFP那樣可以對底層的ip位址限制,還可以控制到高層內容,如限制郵件的content-type。 同時,管理員可以從checkpoint站點上不斷取得新的INSCPET代碼,從而增加對應用的擴充。
2003年5月13日,checkpoint又宣稱推出近年來功能上重大的升級,即所謂的Application Integlligence,該升級主要的賣點就在於宣稱能夠檢測和防止應用層的網路攻擊。

我們知道,隨著網路技術的不斷發展,網路攻擊行為已經逐步向高層轉移,利用作業系統和網路設備本身安全問題入侵和攻擊的浪潮已經逐步降低,人們越來 越將攻擊的目標轉向高層的應用,相信這以後會是網路安全攻防的趨勢。關於這方面的內容,各位可以參考 OWASPWebApplicationSecurityTopTen這篇文檔(http://www.owasp.org/ 需要使用代理)

本人對這一技術非常感興趣,仔細的研究了一下checkpoint公佈的相關文檔,關於Application Integlligence的功能,主要有以下四點︰
1︰確認網路通訊符合相關的協議標準,比如︰不允許http頭出現二進製數據內容。
2︰確認網路通訊沒有濫用相關的協議標準,比如︰不允許P2P通訊利用80口穿過防火牆。
3︰限制應用程式攜帶惡意數據,比如︰控制跨站腳本
4︰控制對應用程式的操作,比如上面我們舉的snmp例子。

仔細的分析上面的內容,個人理解對checkpoint而言,其實Application Integlligence也不能算是非常新的技術,可能只是在SPI基礎上的升級和進一步擴充。

此外關於checkpoint需要注意一點的是,checkpoint數據包處理引擎INSPECT對高層的數據包核查並不象想像的那樣支援非常多 的應用,而是將主要精力放在了常用的http,ftp,mail等一些比較普遍的應用上,也即,不是所有的高層的所有數據包都會被INSPECT審核,使 用者不要迷信checkpoint宣稱的INSPECT技術,我們可以看下面的例子︰
這裡是checkpoint在sql slammer蠕蟲蔓延時的一個擴展的INSPECT CODE,
deffunc sql_worm_slammer() {
(
dport = 1434,
packetlen >= (20 +8 +1 +96 +4),
[UDPDATA:1] = 0x04,
[UDPDATA+97:4,b] = 0xDCC9B042,
LOG(long, LOG_NOALERT, 0) or 1,
drop
)
or accept;
};
本 人沒有找到關於checkpoint INSPECT CODE的說明文檔,但是觀察上面的內容,我們可以猜出來一些東西。至少從這個CODE內容看,這是個基於簽名的代碼,我們可以看到比較關鍵部門可能包括 兩點︰dport = 1434,端口1434,packetlen >= (20 +8 +1 +96 +4),數據包長度?20是ip頭,8是udp長度,1,96,4是什麼? 本人沒使勁猜(我猜得到開始,猜不到結局…… ;))
從上面的內容來 看,其實checkpoint防火牆本身在處理sql slammer蠕蟲時,並不象想像的那樣真正的懂得sql的應用的,它可能只是執行了簡單的匹配而已(本來想多看幾個INSPECT CODE的,可惜要密碼,幸虧原來下了一個sql slammer的)。

 

part I 結束

(本人將在part 2仲介紹兩個防火牆的的IDP,一些錯誤說法,以及評測的問題,歡迎關注)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 yamantaka520 的頭像
    yamantaka520

    熊熊亂說話

    yamantaka520 發表在 痞客邦 留言(0) 人氣()