狀態檢測那些事兒

專門的狀態檢測防火牆早已成爲歷史,現今所有的下一代防火牆都是由狀態檢測防火牆演變而來,它消失在歷史的舞臺,它也無處不在,這就是技術的迭代更新。寫到這裏,讓我想起了來一行禪師與一位小姑娘的對話。

image.png

小姑娘問:我有一隻可愛的小狗,有一天它死了,怎樣才能不傷心?

一行禪師回答:你看到天邊美麗的雲朵,你好喜歡這朵雲,就像喜歡你的小狗一樣,突然這朵雲不見了,你以爲雲死了,雲朵去哪兒了?如果你花時間想想,你會看到雲沒有死,沒有消失,只是化爲了雨水,看到雨水,你就會看到那朵雲;當你喝茶時看到熱騰騰的水汽,你也會看到雲,雲並沒有消失,它以新的形式活着,小狗也一樣,如果你看的深一點,你就會看到它的新形體。

當我們學某種技能的時候,有時就會產生一些“火花,技術也可以上升至哲學層面,比如LINUX系統的設計就有非常明確的哲學思想。有時相近的技術之間也會產生一些火花,比如以前無論是聽老師說,還是自己看書,其實對單臂路由和vlanif的理解都比較淺,但是自己還以爲自己是真的懂了,直到最近,在給同學寫答案講解時才發現自己其實並沒有真正理解,但當我仔細想想的時候,就突然想通了,認爲自己明白了並不是真正的明白,只有能說明白,寫明白纔是真正的明白,那一瞬間的感覺真是很奇妙,我想這就是很多大神堅持寫博客的原因。

好了,言歸正傳,下面我們就正兒八經地說說狀態檢測防火牆的那些事兒!

狀態檢測是防火牆的一個功能,這個功能非常重要,它是在防火牆在發展過程當中的里程碑,此後的防火牆都集成了此功能。我們先分析沒有狀態檢測功能的防火牆是怎樣工作的,然後再分析有了狀態檢測功能的防火牆是怎樣工作的.

沒有狀態檢測防火牆的時期

image.png

如上圖所示,PCWEB服務器位於不同的網絡,分別與防火牆相連,PCWEB服務器之間的通信受到防火牆的控制。

PC需要訪問WEB服務器網頁時,在防火牆上必須配置下表當中列出的一條規則:允許PC訪問訪問WEB服務器的報文通過。這裏說的規則其實就是指防火牆上的安全策略。只不過本節重點講解狀態檢測和會話機制,安全策略不是重點,所以通過規則來簡化描述。關於安全策略的內容我們將在後面的文章當中講解。

編號

源地址

源端口

目的地址

目的端口

動作

1

192.168.0.1

ANY

172.16.0.1

80

允許通過

在這條規則當中,源端口處的ANY表示任意端口,這是因爲PC在訪問WEB的時候端口是操作系統隨機指定的,並不是確定的,所以這裏設定爲任意端口。

配置了這條規則之後,PC發出的報文就可以順利的通過防火牆,到達WEB服務器,然後WEB服務器會向PC發送迴應報文,這個報文也要穿過防火牆,在狀態檢測防火牆出現之前,包過濾防火牆(包過濾防火牆在監製檢測防火牆之前)還必須配置下表當中的規則,允許反方向的報文通過防火牆。

編號

源地址

源端口

目的地址

目的端口

動作

2

172.16.0.1

80

192.168.0.1

any

允許通過

在規則2當中,目的端口也沒有設定爲任意端口,因爲我們無法確定PC訪問WEB到底用的哪個端口,要想使得WEB服務器的迴應報文順利通過防火牆到達PC,只能將規則2當中的目的端口設定爲任意端口。

任意端口其實也就是所有端口,這樣會有很大的安全隱患,外部的惡意***者僞裝成WEB服務器,就可以暢通無阻的穿過防火牆,PC將會面臨嚴重的安全風險。

我們好好看一下,其實造成安全隱患的原因就是防火牆不知道PC訪問WEB服務器的源端口到底是哪個?爲了保證通信,不得以放行了在入方向的任意端口。那麼我們可不可以想辦法讓防火牆知道PC訪問WEB服務器用的到底是哪個端口,然後讓WEB服務器的迴應包回覆之前自動添加規則放行源IPPC出方向的目標IP,源端口是PC的目的端口,目標端口就是PC的源端口。當然可以實現,其實狀態監測機制就是這樣實現的。那麼我們下面再看一看有了狀態檢測機制之後,兩者的訪問過程是怎樣的?

使用狀態檢測防火牆之後

還是以上面的網絡環境爲例,首先還是需要在防火牆設定規則1,允許PC訪問WEB服務器的報文通過。當報文到達防火牆之後,防火牆允許報文通過,同時還會針對PC訪問WEB服務器的這個行爲建立會話,會話當中包含PC發出的報文信息如地址和端口等。

WEB服務器迴應PC的報文到達防火牆後,防火牆會把報文中的信息與會話中的信息進行比對。如果發現報文當中的信息與會話當中的信息相匹配,並且該報文符合HTTP協議規定的規範,則認爲這個報文屬於PC訪問WEB服務器行爲的後續迴應報文,直接允許這個報文通過,如下圖所示:

image.png

爲了便於說明,在本節當中我們將PCWEB服務器與防火牆之間直接相連。實際環境當中,如果PCWEB服務器與防火牆之間跨網絡相連,則必須要防火牆上配置路由,保證PCWEB服務器兩者之間相互路由可達。即使WEB服務器迴應給PC的報文已經匹配了會話,防火牆也必須存在去往PC的的路由,這樣才能保證迴應報文正常發送到PC

惡意***即使僞裝成WEB服務器向PC發起訪問,由於這類報文不屬於PC訪問WEB服務器行爲的後續報文,防火牆就不會允許這些報文通過,這樣即保證了PC可以正常訪問WEB服務器,也避免了大範圍開放端口帶來的風險。

總結一下,在狀態檢測防火牆出現之前,包過濾防火牆只會根據設定好的靜態規則爲判斷是否允許報文通過,它認爲報文都是無狀態的孤立個體,不關注報文產生的前因後果,這就要求包過濾防火牆都必須針對每一個方向的報文都配置一條規則,轉發效率低而且容易帶來安全風險。

而狀態檢測防火牆的出現正好彌補了包過濾防火牆這個缺陷。狀態檢測防火牆使用基於連接狀態的檢測機制,將通信雙方之間交互的屬於同一連接的所有報文都作爲整體的數據流來對待。在狀態狀態防火牆看來,同一個數據流內的報文不再是孤立的個體,而是存在聯繫的。例如,爲數據流的第一個報文建立會話,數據流內的後續報文就會直接匹配會話轉發,不需要再進行規則的檢測,提高了轉發效率。

包過濾防火牆認爲數據包之間是割裂的個體,更網絡更容易受到***。而狀態監測防火牆認爲報文與報文之間是存在聯繫的,從而尋求數據包之間的合作發展,最後實現高效率、高安全、可持續發展,現在也的確是狀態監測防火牆的天下了,但並不是說包過濾防火牆就不好,它還是有它的用武之地的,我們後面再細說。

 

在當今社會生活,我們也像防火牆一樣恰當地追求合作,不應該一味追求獨立,將自己封閉。那麼到底是追求是獨立好?還是追求合作好?這個問題類似於能力重要還是人脈重要?理想重要還是財富重要?我們的人生是有時間概念的,我們只需要把兩者放置到合適的時間段,比如我們把獨立放置到比較靠前的時間段,而把合作放置獨立的時間段之後,亦或者獨立和合作並行也未嘗不可,一個有心人是可以平衡的很好的。寫到最後,中庸又出現了,我認爲用中庸去結尾很合適,因爲根本沒有絕對答案,人生也並不是非黑即白,檢測一流智力的標準就是大腦當中同時存在兩種截然相反的想法,還能維持正常行事的能力,這不是中庸又是什麼呢?

image.png

老羅英語的LOG當中,一個眼睛代表理想,另一個眼睛代表財富,在理想和財富之間是一個微笑。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章