CheckPoint防火墻狀態(tài)表_第1頁(yè)
CheckPoint防火墻狀態(tài)表_第2頁(yè)
CheckPoint防火墻狀態(tài)表_第3頁(yè)
CheckPoint防火墻狀態(tài)表_第4頁(yè)
CheckPoint防火墻狀態(tài)表_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、了解CheckPointFW-1狀態(tài)表作者:LanceSpitzner(lance)整理:warning3(warning3)主頁(yè):日期:2000-08-15<*譯者:以前關(guān)于防火墻狀態(tài)表,也只是有一個(gè)大概的了解,通過(guò)看這篇文章,也糾正了一些自己的錯(cuò)誤看法,感覺(jué)很有收獲,因此就把它翻譯出來(lái)了。由于時(shí)間倉(cāng)促,可能些地方翻的會(huì)有問(wèn)題,如發(fā)現(xiàn)錯(cuò)誤,請(qǐng)跟我聯(lián)系。這篇文章的主要目的是幫助你了解FW-1的狀態(tài)連接表是如何工作的。這張表使FW-1知道誰(shuí)在做什么,什么連接時(shí)是允許通過(guò)的.這篇文章是我對(duì)最新的FW-14.1版研究的一個(gè)繼續(xù)。為了使你更好的理解你自己的FW-1狀態(tài)檢查表并與我所說(shuō)的進(jìn)行驗(yàn)證,

2、我將這篇文章中所用到的源碼附在最后。狀態(tài)檢查(StatefulInspection)讓我們首先從一個(gè)很基本的問(wèn)題開(kāi)始我們的討論。假設(shè)你有一個(gè)防火墻,它的過(guò)濾規(guī)則允許所有連接通過(guò)(any-any-accept),那么防火墻是否會(huì)允許一個(gè)用ACK位發(fā)起的新TCP連接通過(guò)呢?如果防火墻允許任何連接通過(guò),那么似乎任意的包都應(yīng)當(dāng)通過(guò)。然而,如果從狀態(tài)檢查的工作原理上看,這個(gè)包又似乎應(yīng)當(dāng)被丟棄。我開(kāi)始對(duì)狀態(tài)檢查(至少是對(duì)CheckPointFireWall-1)的理解是這樣的:當(dāng)防火墻收到一個(gè)發(fā)起TCP連接請(qǐng)求的SYN包時(shí),這個(gè)SYN包首先會(huì)與防火墻的過(guò)濾規(guī)則按順序(從規(guī)則0開(kāi)始)進(jìn)行比較,如果所有的規(guī)則

3、都不允許接受這個(gè)包,那它就被拒絕,這個(gè)連接就被丟棄或者拒絕(發(fā)送RST包給遠(yuǎn)程主機(jī)).然而,如果這個(gè)包被接受了,這個(gè)連接會(huì)話就被加入到防火墻的狀態(tài)連接表中,這個(gè)表在內(nèi)核空間中分配。后續(xù)的每個(gè)包(不帶SYN標(biāo)記的包)都會(huì)與狀態(tài)表比較,如果相應(yīng)的會(huì)話已經(jīng)在表中了,那個(gè)這個(gè)包就是連接會(huì)話的一部分,然后這個(gè)包就被接受,允許通過(guò)。如果不是,這個(gè)包就被丟棄。這SYN包進(jìn)行比較。所有其它的TCP包都在內(nèi)將改進(jìn)系統(tǒng)性能,因?yàn)椴恍枰獙⒚總€(gè)包都與過(guò)濾規(guī)則集進(jìn)行比較,而是只對(duì)發(fā)起連接的核空間中與狀態(tài)表進(jìn)行比較,這個(gè)速度是很快的。好,現(xiàn)在回到我們開(kāi)始談的那個(gè)問(wèn)題上來(lái)。如果我們用一個(gè)ACK包發(fā)起一個(gè)會(huì)話,防火墻是否會(huì)接

4、受這個(gè)包呢,即使過(guò)濾規(guī)則已經(jīng)允許所有的連接通過(guò)?就象我們剛才說(shuō)的,你可能認(rèn)為會(huì)接受。但現(xiàn)在我們對(duì)狀態(tài)連接表有了更多的認(rèn)識(shí),可能這個(gè)答案會(huì)是相反的了。當(dāng)防火墻收到一個(gè)ACK包時(shí),它會(huì)先與內(nèi)核空間中的狀態(tài)連接表進(jìn)行比較,而不是過(guò)濾規(guī)則集。當(dāng)然防火墻的狀態(tài)連接表中沒(méi)有相應(yīng)的會(huì)話記錄,因?yàn)椴](méi)有一個(gè)SYN包發(fā)起過(guò)連接。那么,到底防火墻會(huì)不會(huì)接受這個(gè)包呢?答案-FW-1如何建立一個(gè)連接答案是令人吃驚的。不僅這個(gè)ACK包被接受,它還會(huì)被加入到狀態(tài)表中!我對(duì)防火墻狀態(tài)表的理解并不正確。我所發(fā)現(xiàn)的結(jié)果是,當(dāng)防火墻收到一個(gè)不在狀態(tài)表中的包時(shí),它會(huì)先與過(guò)濾規(guī)則進(jìn)行比較,不管這個(gè)包是SYN,ACK或者是其他的什么包

5、。如果過(guò)濾規(guī)則允許接受這個(gè)會(huì)話,那么這個(gè)會(huì)話就被加入到狀態(tài)連接表中去。這個(gè)連接會(huì)話的所有后續(xù)包都會(huì)與狀態(tài)表進(jìn)行比較,既然在狀態(tài)連接表中已經(jīng)存在了相應(yīng)的會(huì)話,因此這些包就被接受而不再與過(guò)濾規(guī)則集進(jìn)行比較。fwtable.pl(ver1.0)將'fwtab-tconnections'得到的結(jié)果進(jìn)行轉(zhuǎn)化,我們得到下面的輸出結(jié)果:注意:下面看到的這些是我的狀態(tài)連接表中那些使用ACK包發(fā)起的連接。mozart#fwtableFW-1CONNECTIONSTABLE-Src_IPSrc_PrtDst_IPDst_PrtIP_protKbufTypeFlagsTimeout192.168.7

6、229.143.825601638502ffff002845/3600192.168.7229.143.824601638502ffff002845/3600192.168.7229.143.823601638502ffff002845/3600我們可以看到這三個(gè)包都被接受并被加入到防火墻狀態(tài)表中,但它們都是使用用ACK包發(fā)起的連接。同樣,對(duì)于Null,SYN/ACK,FIN/ACK等類型的包也會(huì)被接受。當(dāng)你使用'ftstop;fwstart'重新啟動(dòng)防火墻時(shí),過(guò)程連接表會(huì)被清空。如果有并發(fā)連接發(fā)送A

7、CK包,防火墻看到這些包時(shí),會(huì)檢查它們是不是符合過(guò)濾規(guī)則,并重建連接表。所有這些操作對(duì)終端用戶都是透明的。這就是你為什么那些加密認(rèn)證的會(huì)話連接會(huì)中斷,因?yàn)榉阑饓](méi)有這些連接的“初始狀態(tài)”。同時(shí)應(yīng)當(dāng)注意的時(shí),對(duì)于非SYN包連接缺省連接超時(shí)是3600秒,這意味著,你可以將這個(gè)會(huì)話在連接表中保存60分鐘的時(shí)間直至超時(shí)。這個(gè)超時(shí)時(shí)間可以在控制屬性菜單里面調(diào)整。注意:有效的FIN或者RST包并不會(huì)建立一個(gè)會(huì)話,因?yàn)樗鼈儽挥脕?lái)中斷一個(gè)連接。另外,唯一不會(huì)被增加到狀態(tài)表中去的是Xmas'包,可以用Fyodor的nmap(-sX開(kāi)關(guān))來(lái)產(chǎn)生。然而這些包會(huì)被接受并被記錄。這里我了解到的另外一點(diǎn)是,F(xiàn)W-

8、1的狀態(tài)檢查只根據(jù)源/目的IP和端口來(lái)判斷是不是一個(gè)會(huì)話。它不管序列號(hào),因?yàn)槲抑圃炝撕芏嗖煌男蛄刑?hào),防火墻都認(rèn)為是一個(gè)會(huì)話而接受了。當(dāng)建立連接的時(shí)候,F(xiàn)W-1也不維護(hù)包類型的狀態(tài)。當(dāng)你發(fā)送一個(gè)SYN包初始化一個(gè)會(huì)話時(shí),防火墻先與過(guò)濾規(guī)則集進(jìn)行比較,如果被接受,就將這個(gè)會(huì)話增加到狀態(tài)表中,就象我們前面討論的那樣。這時(shí)候,超時(shí)時(shí)間被設(shè)置成60秒。防火墻會(huì)等候一個(gè)返回包來(lái)建立連接。當(dāng)它看到一個(gè)返回包時(shí),超時(shí)被設(shè)置成3600秒(60分鐘).然而防火墻并不在乎返回什么類型的包。我使用SYN發(fā)起一個(gè)連接,然后只發(fā)回一個(gè)ACK包,防火墻就將這個(gè)包作為連接的一部分接受了(因?yàn)镮P和端口是匹配的).因此,防火

9、墻并沒(méi)有智能到能夠知道必須返回SYN/ACK的應(yīng)答包,也不在乎序列號(hào)。要維護(hù)序列號(hào)等狀態(tài)需要更多的系統(tǒng)資源,可能是為了提高系統(tǒng)性能才這么做的吧。拒絕服務(wù)攻擊(BugtraqID549):當(dāng)建立一個(gè)連接的時(shí)候,如果你使用ACK(或者其他的非SYN包象Null,FIN/ACK,SYN/ACK等等)來(lái)發(fā)起連接,連接超時(shí)自動(dòng)被設(shè)置成3600秒。這暗示著存在以拒絕服務(wù)攻擊的可能。既然遠(yuǎn)程系統(tǒng)并不存在,它們就不會(huì)發(fā)送RST或者FIN包來(lái)中斷連接,這將在連接表中留下一個(gè)“死”連接,這個(gè)死連接會(huì)存在一個(gè)小時(shí)的時(shí)間。通過(guò)發(fā)送大量ACK包連接包給并不存在的系統(tǒng),你可以迅速地填滿防火墻的連接表。幸運(yùn)的是,從防火墻外

10、部發(fā)動(dòng)這種攻擊比從內(nèi)部要困難的多。但是,如果你從防火墻后面往外進(jìn)行掃描時(shí),很容易造對(duì)自己的DoS攻擊。CheckPoint對(duì)這個(gè)問(wèn)題發(fā)表了提供了一個(gè)解決方法,你可以按照下列步驟來(lái)解決這個(gè)問(wèn)題:.CheckPoint已經(jīng)提供了一個(gè)用狀態(tài)檢查的解決方案,但重新裝載過(guò)濾策略時(shí)可能會(huì)影響狀態(tài)表的功能.減少TCP超時(shí)時(shí)間到15分鐘(900秒)。這將減少攻擊者填滿你的連接表的機(jī)會(huì).增大你的連接表。這使填滿連接表變得更為困難。.使用更為嚴(yán)格的規(guī)則集,限制能進(jìn)出的連接.JasonRhoads提供了一個(gè)PERL程序,fwconwatch.pl,可以為你監(jiān)視連接表,并按照你定義的規(guī)則發(fā)出警告.使用Fastpath

11、(forver3.0)或者FastMode(forver4.0)。這將從連接表中去掉TCP連接,但這也會(huì)帶來(lái)其它的安全問(wèn)題。關(guān)于Fastpath/FastMode請(qǐng)看下面更為詳細(xì)的介紹。.注意:SynDefender并不能保護(hù)這種攻擊,因?yàn)樗槐辉O(shè)計(jì)來(lái)保護(hù)SYNflooding攻擊,這是另外一種不同的攻擊。這種攻擊是基于非SYN包的。我喜歡FT-1的一個(gè)特點(diǎn)是它對(duì)待SYN包的方式。如果你試圖冒充一個(gè)已經(jīng)存在的連接,初始化一個(gè)新連接,防火墻仍然會(huì)先與規(guī)則集進(jìn)行比較。例如,假設(shè)你試圖建立一個(gè)這樣的連接:#系統(tǒng)A聯(lián)往系統(tǒng)B現(xiàn)在,系統(tǒng)B可以發(fā)送任意的包給系統(tǒng)A,只要IP和端口匹配(例如,那些屬于這個(gè)連

12、接會(huì)話的包).然而,如果系統(tǒng)試圖發(fā)送SYN包建立一個(gè)新的連接,即使它使用與已存在的那個(gè)連接同樣的端口,防火墻仍然會(huì)認(rèn)為這個(gè)SYN包是一個(gè)新會(huì)話的一部分,將它與規(guī)則集進(jìn)行比較。就我的觀點(diǎn)來(lái)說(shuō),這是件好事。在上面的例子中,如果我們只允許來(lái)自外部系統(tǒng)A的連接,不允許從內(nèi)部的系統(tǒng)B發(fā)往外部的連接。那么系統(tǒng)B與系統(tǒng)A聯(lián)系的唯一方式就是作為一個(gè)已建立的連接的一部分來(lái)進(jìn)行。當(dāng)系統(tǒng)A連往系統(tǒng)B時(shí),這個(gè)連接被加入到防火墻連接檢查表中,現(xiàn)在系統(tǒng)B可以發(fā)送應(yīng)答包給系統(tǒng)A了。然而,系統(tǒng)B并不能向A發(fā)送任何的SYN包來(lái)新建連接,即使IP和端口號(hào)是相同的。當(dāng)防火墻看到SYN包時(shí),它將這個(gè)包與規(guī)則集進(jìn)行比較。在上面所說(shuō)的條

13、件下,這個(gè)包將被丟棄,雖然已經(jīng)存在一個(gè)端口和IP都相同的連接。Fastpath:我學(xué)到的另外一些東西就是,如果fastpath被使用,那么TCP回話不會(huì)被加入到過(guò)程連接表中。這是因?yàn)镕astpath僅僅檢查SYN包,所以不需要將連接會(huì)話增加到連接表中。如果一個(gè)包中設(shè)置了其它的標(biāo)志,缺省情況下這個(gè)包就不會(huì)被過(guò)濾而是讓其通過(guò)了。通常fastpatch用來(lái)改進(jìn)性能。它的思路是:如果一個(gè)包沒(méi)有設(shè)置SYN標(biāo)志,那么它肯定是一個(gè)已經(jīng)建立的連接的一部分,因?yàn)橹挥蠸YN包才能開(kāi)始一個(gè)連接。既然只檢查SYN包,所以性能肯定會(huì)大大提高。然而,使用faspatch通常并不是一個(gè)好的做法,因?yàn)檫@可能讓你暴露在多種攻擊

14、方式之下。Fastpath在FW-1v3.0中存在,并且只能對(duì)所有的TCP包同時(shí)起作用。在v4.0中,它又被叫做Fastmode,可以有選擇的對(duì)不同的TCP服務(wù)實(shí)施。關(guān)閉一個(gè)連接根據(jù)初步的測(cè)試結(jié)果,F(xiàn)W-1通過(guò)設(shè)置連接超時(shí)時(shí)間來(lái)關(guān)閉連接。當(dāng)檢查模塊看到一個(gè)連接會(huì)話開(kāi)始交換FIN或者RST包時(shí),它就將超時(shí)時(shí)間從3600秒改為50秒。如果50秒內(nèi)沒(méi)有其它的包發(fā)送,連接就被從狀態(tài)表中刪除。如果在超時(shí)時(shí)間段內(nèi)又有其它的包發(fā)送,那么超時(shí)時(shí)間會(huì)再被設(shè)置成50秒這可以阻止別人通過(guò)發(fā)送假的RST或者FIN包來(lái)進(jìn)行拒絕服務(wù)攻擊。在關(guān)閉TCP連接會(huì)話時(shí),在應(yīng)答了第二個(gè)FIN包后進(jìn)入的TIME_WAIT狀態(tài)與這種超

15、時(shí)有點(diǎn)類似。UDP維護(hù)UDP狀態(tài)更簡(jiǎn)單,因?yàn)樗鼈兪菬o(wú)連接的。當(dāng)過(guò)濾規(guī)則允許一個(gè)UDP包通過(guò)防火墻時(shí),這個(gè)連接就被增加到連接表中。在超時(shí)時(shí)問(wèn)段(缺省是40秒)內(nèi),只要源/目的地址和端口匹配的UDP包都允許通過(guò)。例如,下面是一個(gè)DNS請(qǐng)求:Src_IPSrc_PrtDst_IPDst_PrtIP_protKbufTypeFlagsTimeout192.168.1.101111136.1.1.205317016386ff01ff0034/40192.168.1.101111136.1.1.20017016386ff01ff0034/40你能看到,系統(tǒng)192.168.1.10正在向136.1.1.20

16、做DSN查詢。40秒內(nèi),那個(gè)系統(tǒng)可以返回任意多的UDP包(只要源/目的地址和端口匹配).注意這里有兩個(gè)表項(xiàng),區(qū)別是目的端口不同,一個(gè)是53,另一個(gè)是0.我不知道為什么FW-1會(huì)創(chuàng)建那個(gè)目的端口為0的表項(xiàng)。如果不是過(guò)濾所有的UDP數(shù)據(jù)傳輸,這種情況很常見(jiàn)。ICMPFW-1對(duì)ICMP的處理很令人失望。缺省情況下,F(xiàn)W-1不對(duì)ICMP進(jìn)行狀態(tài)檢查。它永遠(yuǎn)不會(huì)被放到狀態(tài)連接表中。因此,用戶被迫盲目地允許特定的ICMP傳輸(例如入站ECHO_REPLIES)或者不得不自己修改檢查代碼(報(bào)文分組最近我一直在看報(bào)文分組,特別是FW-1如何處理分組報(bào)文。盡管報(bào)文分組并沒(méi)有直接應(yīng)用到狀態(tài)表中,但我認(rèn)為它也很重要

17、,值得加入到這篇文章中。我不會(huì)詳細(xì)地將報(bào)文分組的原理,我假設(shè)讀者已經(jīng)具備了IP報(bào)文分組的基本知識(shí)。我首先會(huì)大體上講一下FW-1是如何處理報(bào)文分組的,然后我會(huì)再針對(duì)TCP,UDP,ICMP協(xié)議講一下。首先,F(xiàn)W-1將接收到的分組報(bào)文再發(fā)出去。就是說(shuō)如果FW-1收到一個(gè)分組的報(bào)文,過(guò)濾規(guī)則也允許它通過(guò)的話,它會(huì)將這個(gè)分組再轉(zhuǎn)發(fā)出去。但是,我認(rèn)為FW-1在檢查分組的報(bào)文之前肯定進(jìn)行了某種形式的報(bào)文重組。這個(gè)結(jié)論是在下列測(cè)試的基礎(chǔ)上得出的。當(dāng)我用一個(gè)完整的分組報(bào)文發(fā)起TCP連接的時(shí)候,報(bào)文被防火墻接受并加入到了狀態(tài)表中,然后再以分組的形式發(fā)送給目的主機(jī)?,F(xiàn)在我的狀態(tài)表里有了一個(gè)會(huì)話表項(xiàng),然后我試圖發(fā)送

18、更多的分組報(bào)文,它們屬于同一個(gè)連接會(huì)話,這些報(bào)文也被接受,超時(shí)時(shí)間被重置。然而,如果我發(fā)送一個(gè)不完整的TCP分組(也屬于同一個(gè)連接會(huì)話),這個(gè)分組就不被接受,而且它也不會(huì)被記錄。這讓我相信當(dāng)FW-1第一次收到一個(gè)分組報(bào)文時(shí),它并不進(jìn)行規(guī)則檢查,而是要等到所有的分組均被收到并且完成報(bào)文重組后,才進(jìn)行規(guī)則檢查。一旦重組完成,防火墻才開(kāi)始決定如何處理這個(gè)報(bào)文,是接受還是丟棄,記錄等等。另一個(gè)例子是使用jolt2,它是一個(gè)用來(lái)攻擊Window系統(tǒng)的工具。它發(fā)送100個(gè)不完整的ICMP或者UDP分組給選定的目標(biāo)主機(jī)。當(dāng)用來(lái)攻擊Fw-1后面的主機(jī)時(shí),這些包不會(huì)通過(guò)防火墻,也不會(huì)被防火墻所記錄。我認(rèn)為這是由

19、于這些ICMP分組是不完整的,它們不能被重組為一個(gè)完整的ICMP報(bào)文,因此也就不會(huì)被檢查和記錄。事實(shí)上,對(duì)于一個(gè)包含狀態(tài)檢查的防火墻,常常要進(jìn)行某種形式的報(bào)文重組。很多檢查連接狀態(tài)防的火墻(包括FW-1)檢查包都是基于源/目的地址和源/目的端口的(TCP頭).然而,對(duì)于分組報(bào)文,只有第一個(gè)分組包含這些信息,所有其它的分組都只有IP地址信息。如果不進(jìn)行某種形式的報(bào)文重組,防火墻就不能確定后續(xù)分組是屬于哪個(gè)連接會(huì)話的(除了第一個(gè)分組).通過(guò)對(duì)分組報(bào)文進(jìn)行重組,防火墻就可以確定這些分組到底是屬于哪個(gè)連接會(huì)話的。然而,在重組之前不進(jìn)行報(bào)文檢查也有一個(gè)問(wèn)題,防火墻就可能遭受不完整或者是非法的分組報(bào)文的攻擊.既然這些報(bào)文是不完整的或者非法的,就不可能被正確重組,它們也不會(huì)被檢查和記錄。所以,防火墻會(huì)繼續(xù)接收這樣的包并嘗試重組它們,盡管重組是不可能的。因此處理大量的這樣的分組將占用系統(tǒng)資源,導(dǎo)致拒絕服務(wù)攻擊。這種攻擊不能通過(guò)設(shè)置防火墻過(guò)濾規(guī)則來(lái)防止,也不會(huì)被記錄。為了得到這個(gè)漏洞更為詳盡的消息,可以看Checkpoint的安全公告(如果你是Unix用戶,可以在命令行用&quo

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論