再談會(huì)話(huà)
現(xiàn)在IP網(wǎng)絡(luò)里面離不開(kāi)TCP、UDP這兩種傳輸層協(xié)議,主流應(yīng)用都基于這兩種協(xié)議來(lái)做封裝傳輸,對(duì)于TCP來(lái)說(shuō),在發(fā)送實(shí)際數(shù)據(jù)的時(shí)候必須先建立可靠的連接,俗稱(chēng) ”三次握手”,而UDP則不需要建立連接,它有數(shù)據(jù)就直接發(fā)送出去。當(dāng)然除了這些協(xié)議以外,網(wǎng)絡(luò)層用的比較多的ICMP、ESP、OSPF、BGP等協(xié)議,這就要求防火墻能夠分析各種協(xié)議的交互模式,能夠準(zhǔn)確的識(shí)別并且建立會(huì)話(huà)信息,我們來(lái)了解了解這些常見(jiàn)主流協(xié)議的會(huì)話(huà)建立,對(duì)于后續(xù)排錯(cuò)是很有幫助的。
對(duì)于TCP在防火墻上的會(huì)話(huà)建立
上面說(shuō)過(guò)TCP的建立需要雙方進(jìn)行三次會(huì)話(huà)交流,也就是“三次握手”的過(guò)程,我們來(lái)看防火墻是如何建立會(huì)話(huà)的。
對(duì)于一個(gè)正常的網(wǎng)絡(luò)構(gòu)建TCP建立,首先進(jìn)行三次握手
(1)Client發(fā)送SYN(序列號(hào)假設(shè)為a),防火墻收到這個(gè)報(bào)文后會(huì)檢查是否符合TCP協(xié)議規(guī)范,并且看安全策略是否允許該報(bào)文通過(guò),通過(guò)后開(kāi)始建立會(huì)話(huà)信息,并且實(shí)時(shí)關(guān)注后續(xù)的建立過(guò)程。
(2)服務(wù)器回應(yīng),發(fā)送SYN+ACK(seq=b,ack=a+1),其中ack用于確認(rèn)已經(jīng)收到來(lái)自于Client的SYN,表示已經(jīng)收到了,服務(wù)器也會(huì)發(fā)送SYN來(lái)與Client進(jìn)行建立同步會(huì)話(huà),這里序列號(hào)為b
(3)防火墻收到這個(gè)報(bào)文后檢查會(huì)話(huà)表發(fā)現(xiàn)是來(lái)自于剛建立(1)會(huì)話(huà)表的同一個(gè)會(huì)話(huà),直接允許通過(guò),Client收到后,回應(yīng)服務(wù)器一個(gè)ack(b+1),表示已經(jīng)收到了,發(fā)送出去,防火墻發(fā)現(xiàn)整個(gè)TCP會(huì)話(huà)建立已經(jīng)完成,會(huì)把TCP的狀態(tài)變成established,表示整個(gè)TCP建立完成,等待實(shí)際數(shù)據(jù)發(fā)送。
結(jié)合抓包跟狀態(tài)表查看就是
- (整體的配置與案例引用第五篇的配置)
首先Client 192.168.1.1往192.168.2.1發(fā)送SYS,seq=0,服務(wù)器收到后回應(yīng)ACK1(對(duì)應(yīng)Client發(fā)過(guò)來(lái)的SYN的seq=0+1),并且也同時(shí)發(fā)送一個(gè)SYN給客戶(hù)端seq=也是0,客戶(hù)端收到后直接回復(fù)ACK=1(對(duì)應(yīng)服務(wù)器發(fā)送過(guò)來(lái)的SYN),最終會(huì)話(huà)建立,開(kāi)始發(fā)送HTTP實(shí)際訪(fǎng)問(wèn)。
總結(jié):TCP連接的首發(fā)標(biāo)志就是SYN報(bào)文,防火墻在狀態(tài)檢測(cè)開(kāi)啟的情況下,在收到TCP的SYN首包情況并且安全策略允許的情況下就會(huì)創(chuàng)建會(huì)話(huà)信息。
對(duì)于UDP在防火墻上的會(huì)話(huà)建立
UDP對(duì)于TCP來(lái)說(shuō)就簡(jiǎn)單很多了,它是沒(méi)有連接狀態(tài)的協(xié)議,在防火墻上面的話(huà)則只要安全策略允許通過(guò),則會(huì)直接創(chuàng)建會(huì)話(huà)信息。
對(duì)于ICMP在防火墻上的會(huì)話(huà)建立
ICMP的類(lèi)型非常多,我們常用的比如ping、tracert都屬于ICMP范圍,ping的話(huà)有兩種主要的類(lèi)型,一個(gè)是echo request(回顯請(qǐng)求報(bào)文)、一個(gè)是echo replay(回顯應(yīng)答報(bào)文),在狀態(tài)開(kāi)啟的情況下,防火墻收到來(lái)自于echo request(回顯請(qǐng)求報(bào)文),并且安全策略允許的情況下,就會(huì)建立會(huì)話(huà),如果防火墻沒(méi)有收到ping的回顯請(qǐng)求,卻收到了ping的回應(yīng)報(bào)文,那么會(huì)話(huà)是不會(huì)建立的,直接丟棄。
這里注意下,ICMP是網(wǎng)絡(luò)層協(xié)議,沒(méi)有端口號(hào)的,但是防火墻會(huì)把ICMP報(bào)頭中的序列號(hào)字段作為源端口號(hào),以固定值2048作為會(huì)話(huà)的目的端口號(hào)。
異步路由導(dǎo)致來(lái)回路徑不一致的場(chǎng)景
正常情況下,數(shù)據(jù)包的來(lái)回路徑是保持一致的,這樣是很正常,但是也存在特殊的環(huán)境,比如跨運(yùn)營(yíng)商或者是網(wǎng)絡(luò)規(guī)劃以及配置上的失誤導(dǎo)致了來(lái)回路徑不一致的情況出現(xiàn),那么出現(xiàn)了這種情況,會(huì)遇到什么樣的問(wèn)題呢?(這個(gè)也是第五篇最后提的一個(gè)問(wèn)題),我們來(lái)實(shí)際驗(yàn)證下。
實(shí)驗(yàn)拓?fù)涓鶕?jù)自己想實(shí)驗(yàn)難度的來(lái)搭建
難度一點(diǎn)的,這個(gè)環(huán)境實(shí)現(xiàn)其實(shí)比較簡(jiǎn)單的,防火墻策略全放,然后寫(xiě)靜態(tài)去往server1指向ISP2,而回Client的流量邊界指向ISP1,這樣就來(lái)回路徑不一致了,但是這個(gè)有點(diǎn)太繁瑣了,所以博主這里比較推薦大家用一個(gè)簡(jiǎn)單點(diǎn)的拓?fù)洹?/p>
PC去往服務(wù)器的時(shí)候直接通過(guò)路由器抵達(dá),而返回的數(shù)據(jù)包,則路由器利用策略路由特性強(qiáng)制它交給防火墻,防火墻在寫(xiě)192.168.1.1的路由指向10.1.1.1交給路由器,形成一個(gè)路徑不一致的環(huán)境,策略可以全放。(具體步驟就不在給出了,購(gòu)買(mǎi)課程了的朋友可以直接看視頻講解,留言處有環(huán)境源文件提供,都可以直接參考)
實(shí)際測(cè)試下(分別抓取E0/0/1以及G1/0/0 10.1.2.2接口的包,這里圖上面顯示錯(cuò)誤了,實(shí)際G1/0/0在上面 G1/0/1是下面的口)
首先客戶(hù)的發(fā)起訪(fǎng)問(wèn),這個(gè)結(jié)果肯定是失敗的。
可以發(fā)現(xiàn),路由器上面能夠看到客戶(hù)端發(fā)起的SYN建立,以及服務(wù)器回應(yīng)的SYN+ACK,而防火墻上面只收到了SYN+ACK。
這個(gè)時(shí)候數(shù)據(jù)轉(zhuǎn)發(fā)路徑與處理情況就是這樣
(1)Client1發(fā)起TCP首包SYN建立,交給路由器處理
(2)路由器查詢(xún)路由表直接丟給Server1
(3)Server1回應(yīng)SYN+ACK,在路由器返回的時(shí)候,由于對(duì)接服務(wù)器的接口調(diào)用了策略路由,它會(huì)把這個(gè)數(shù)據(jù)包強(qiáng)制的交給10.1.2.2處理,這個(gè)時(shí)候防火墻收到后發(fā)現(xiàn)會(huì)話(huà)表并沒(méi)有存在該數(shù)據(jù)包的匹配信息,而且這個(gè)包不是TCP的首發(fā)SYN包,則直接丟棄。
導(dǎo)致這個(gè)丟棄的原因我們?cè)谏厦嬉呀?jīng)深入了解了防火墻對(duì)于TCP建立會(huì)話(huà)的前提條件就是收到的包必須是首發(fā)SYN的包,而這里防火墻收到的是首發(fā)是SYN+ACK,那么防火墻則直接不予處理丟棄掉。那么在實(shí)際中真的遇到這樣的情況了,防火墻也是可以處理的,由于狀態(tài)檢測(cè)機(jī)制的存在,它會(huì)檢測(cè)各種協(xié)議的特征與是否規(guī)范,我們可以關(guān)閉這個(gè)功能,防火墻就不會(huì)對(duì)連接的狀態(tài)進(jìn)行分析,就相當(dāng)于包過(guò)濾的策略一樣,后續(xù)報(bào)文只要有安全策略允許,則直接通過(guò)。
[USG6000V1]undo firewall session link-state check :關(guān)閉很簡(jiǎn)單,一條命令搞定,這里博主提醒,關(guān)閉狀態(tài)檢測(cè)功能,防火墻就失去了它的魅力所在了,除非在一些特殊的環(huán)境,不建議關(guān)閉這個(gè)功能。
這個(gè)時(shí)候客戶(hù)端訪(fǎng)問(wèn)成功了。
防火墻的會(huì)話(huà)表會(huì)發(fā)現(xiàn),收到的為0,發(fā)出去的有數(shù)據(jù),這是因?yàn)镃lient1發(fā)送的流量直接路由器轉(zhuǎn)發(fā)給服務(wù)器了,服務(wù)器回應(yīng)的流量才經(jīng)過(guò)防火墻,所以出現(xiàn)了這種特殊的狀況。
總結(jié)TCP/UDP/ICMP協(xié)議會(huì)話(huà)創(chuàng)建的情況
會(huì)話(huà)創(chuàng)建的情況包括開(kāi)啟狀態(tài)檢測(cè)機(jī)制與關(guān)閉,上面TCP已經(jīng)驗(yàn)證完畢了,也可以趁著這個(gè)環(huán)境驗(yàn)證下UDP與ICMP,博主就不在演示了,這里給出一個(gè)總結(jié) 。
建議大家可以在開(kāi)啟與關(guān)閉下測(cè)試測(cè)試TCP、UDP、ICMP協(xié)議的情況,對(duì)于大家在學(xué)習(xí)狀態(tài)檢測(cè)、會(huì)話(huà)機(jī)制有很大的幫助,也為排錯(cuò)提供了一個(gè)很好的思路。
博主經(jīng)驗(yàn)分享
在實(shí)際中如果遇到了特殊環(huán)境,確實(shí)需要關(guān)閉狀態(tài)檢測(cè)的情況下,但是關(guān)閉狀態(tài)檢測(cè)防火墻就回到了傳統(tǒng)的包過(guò)濾時(shí)代功能了,防火墻提供了一個(gè)非常好的功能,就是可以指定某些流量關(guān)閉狀態(tài)檢測(cè),其余的保持不變。
#
acl number 3000
rule 5 permit ip source 192.168.2.1 0 destination 192.168.1.1 0
#
firewall session link-state exclude acl 3000
#
firewall session link-state check
可以看到這個(gè)功能就很實(shí)用,帶來(lái)的風(fēng)險(xiǎn)也不大,對(duì)于特定會(huì)話(huà)存在這種情況的,用ACL匹配出來(lái),可以利用exclude來(lái)關(guān)閉狀態(tài)檢測(cè),這樣的話(huà)對(duì)應(yīng)ACL的不啟用狀態(tài)檢測(cè),其余的還是會(huì)啟用。
WEB操作關(guān)閉狀態(tài)檢測(cè)
“承上啟下”
至此安全區(qū)域與狀態(tài)檢測(cè)就學(xué)習(xí)完畢了,但是里面涉及到安全策略是不是很陌生,那么它跟我們學(xué)習(xí)完的安全區(qū)域、狀態(tài)檢測(cè)會(huì)話(huà)有什么關(guān)聯(lián)呢?為什么在講解安全策略之前要先把這些講解完畢,下一篇我們就進(jìn)入安全策略的內(nèi)容。
介紹
《華為下一代USG防火墻(由淺入深實(shí)際案例系列)》是博主原創(chuàng)的針對(duì)華為廠(chǎng)商下一代USG防火墻組網(wǎng)系列應(yīng)用部署為主的系列課程,結(jié)合實(shí)際環(huán)境出發(fā),加上了博主部署經(jīng)驗(yàn)以及會(huì)遇到哪些問(wèn)題等進(jìn)行綜合,做到學(xué)以致用,給各位看官朋友一個(gè)不一樣的學(xué)習(xí)體驗(yàn)。
如果大家有任何疑問(wèn)或者文中有錯(cuò)誤跟疏忽的地方,歡迎大家留言指出,博主看到后會(huì)第一時(shí)間修改,謝謝大家的支持,更多技術(shù)文章盡在網(wǎng)絡(luò)之路Blog,版權(quán)歸網(wǎng)絡(luò)之路Blog所有,原創(chuàng)不易,侵權(quán)必究,覺(jué)得有幫助的,關(guān)注、轉(zhuǎn)發(fā)、點(diǎn)贊支持下!~。






