隨著各類網(wǎng)絡(luò)病毒及攻擊大量出現(xiàn),內(nèi)部網(wǎng)絡(luò)及數(shù)據(jù)面臨的威脅日益嚴(yán)重。這些病毒、網(wǎng)絡(luò)攻擊第一步總是通過掃描發(fā)現(xiàn)和利用各類計(jì)算機(jī)端口,從而達(dá)到入侵的目的。對(duì)于網(wǎng)絡(luò)端口的防護(hù)手段很多,常用的是防火墻的包過濾策略。本文主要是針對(duì)沒有防火墻的網(wǎng)絡(luò)節(jié)點(diǎn),探討在路由器中利用ACL established參數(shù)實(shí)現(xiàn)端口防護(hù)。
筆者所在公司為大型國(guó)企,網(wǎng)絡(luò)龐大,各省、地市均有自身需要保護(hù)的數(shù)據(jù)資源。現(xiàn)實(shí)需求是,需要內(nèi)部對(duì)外訪問時(shí)候,無(wú)任何限制。而外部分公司對(duì)內(nèi)部的訪問,則要受到限制,不能無(wú)條件的任意訪問。構(gòu)造網(wǎng)絡(luò)拓?fù)鋱D,如圖1所示。
圖1 網(wǎng)絡(luò)拓?fù)涫疽鈭D
筆者所在公司為A公司,上級(jí)公司為B公司。A能夠訪問B公司網(wǎng)絡(luò)(數(shù)據(jù)中心、服務(wù)器所在區(qū)域,A公司的業(yè)務(wù)要訪問B公司),而作為A公司來(lái)說,不想B公司無(wú)條件訪問A公司。也就是說A訪問B,但B不能訪問A,要求A到B的單向訪問控制。
ACL(Access Control List)是指應(yīng)用到路由器或者三層交換機(jī)接口上的指令列表,通暢成為訪問控制列表,是用來(lái)實(shí)現(xiàn)流識(shí)別功能的。可以分為基本ACL、高級(jí)ACL、二層 ACL。
rule1 deny ipsource 10.1.1.00.0.0.255
然后將該ACL應(yīng)用在R1連接A公司交換機(jī)的GE 0/0/0口的outbound方向。按照理解,對(duì)外訪問不做任何限制,而僅阻斷掉來(lái)自B公司源地址的訪問。但是這樣配置之后,發(fā)現(xiàn)A公司的所有業(yè)務(wù)全部中斷了!筆者趕緊進(jìn)行回退,然后分析原因。
數(shù)據(jù)流假如從A發(fā)出,那么A作為源地址,第一幀數(shù)據(jù)可以發(fā)現(xiàn)B,但是返回?cái)?shù)據(jù)包時(shí),B作為了源地址,A作為了目的地址,當(dāng)返回?cái)?shù)據(jù)包進(jìn)入R1時(shí),被R1接口GE0/0/1下的ACL策略阻斷了。其實(shí)這個(gè)可以根據(jù)根據(jù)TCP的三次握手連接很好的解釋。
A公司作為客戶端,發(fā)送連接請(qǐng)求報(bào)文SYN到B公司服務(wù)器端,第一次握手;
B服務(wù)器接受連接后,回復(fù)ACK報(bào)文,并為這次連接分配資源,第二次握手;但是這個(gè)報(bào)文,A是收不到的,被筆者寫的ACL阻斷了。
這一步后,A收不到B發(fā)來(lái)的授予連接信息了,也就是SYN+ACK的信息收不到了。也就無(wú)法進(jìn)行第三次握手,無(wú)法完成A向B發(fā)ACK報(bào)文。
因此整個(gè)TCP連接無(wú)法正常建立,導(dǎo)致了筆者所在的A公司業(yè)務(wù)全部中斷。
Boosting算法問題在于更多關(guān)注不能正確分類樣本數(shù)據(jù),對(duì)于邊界樣本會(huì)導(dǎo)致權(quán)重失衡,產(chǎn)生“退化問題”。在Boosting基礎(chǔ)上使用指數(shù)權(quán)重產(chǎn)生用于二值分類的AdaBoost算法[28,29]。
分析出原因后,筆者就針對(duì)此向解決辦法。主要問題出在TCP的第二次握手上,那么如何讓在這個(gè)包通過,成為解決問題的關(guān)鍵。
要識(shí)別出這個(gè)包,就得在這個(gè)數(shù)據(jù)包的包頭上做標(biāo)記進(jìn)行區(qū)分。這里established參數(shù)很好的解決了這個(gè)問題。在華三/華為的網(wǎng)絡(luò)設(shè)備中,ACL有一個(gè)不起眼的屬性參數(shù):established。筆者查閱資料,得知established參數(shù)就是在TCP連接中的ACK位、
圖2 TCP設(shè)備中ACL配置
筆者所在公司某個(gè)節(jié)點(diǎn)路由器的配置如圖2所示。RST位進(jìn)行標(biāo)記,從而識(shí)別出第二次握手的返回包。那么,筆者就將該識(shí)別的數(shù)據(jù)包進(jìn)行放行,重新設(shè)計(jì)ACL:
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
即允許帶有標(biāo)志位的10.1.1.0/24的網(wǎng)絡(luò)段。
這樣之后,從A公司發(fā)出的第一次握手?jǐn)?shù)據(jù)包就會(huì)匹配 rule 1,對(duì) ACK和RST標(biāo)記為1,而第二次握手的返回報(bào)中,由于ACK和RST都為1,即允許通過。
最后完整ACL設(shè)計(jì)如下:
acl number 3018
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
rule 999 deny tcp any
最后一條規(guī)則是防止其他未允許的其他類似B的公司數(shù)據(jù)包訪問A公司。之后在R1的GE 0/0/1口的outbond方向下應(yīng)用。
packet-filter 3018 outbound
在配置完成后,筆者進(jìn)行效果驗(yàn)證。
從筆者所在的A公司訪問B公司,所有業(yè)務(wù)正常。從B公司訪問A公司,不能訪問。達(dá)到了當(dāng)初預(yù)期目標(biāo)。
這樣做的好處在哪里,筆者在此進(jìn)行總結(jié):
1.能對(duì)A公司內(nèi)部網(wǎng)絡(luò)進(jìn)行有效防護(hù)。因無(wú)法進(jìn)行TCP連接,很多暴力的掃描、非法訪問、病毒傳播都無(wú)法從外部進(jìn)入內(nèi)部網(wǎng)絡(luò)。
2.不影響A公司業(yè)務(wù)。對(duì)于需要訪問外部公司的業(yè)務(wù),不受影響。
這樣的好處,類似于一個(gè)公司內(nèi)網(wǎng)可以訪問外網(wǎng),但是外網(wǎng)無(wú)法訪問到公司內(nèi)網(wǎng)。所以在當(dāng)今網(wǎng)絡(luò)安全日益嚴(yán)重的今天,這樣的應(yīng)用場(chǎng)景需求很多。
本文僅采用了一個(gè)實(shí)例,說明了ACL established 的應(yīng)用場(chǎng)景,及配置方法。對(duì)于大型公司網(wǎng)絡(luò)段較多,業(yè)務(wù)較多的場(chǎng)景,需要梳理出業(yè)務(wù)需求段。
有時(shí)既存在A到B的主動(dòng)訪問,還有B到A的主動(dòng)訪問。對(duì)于A到B的主動(dòng)訪問,可通過established參數(shù)實(shí)現(xiàn)返回包通過。而對(duì)于B到A的主動(dòng)訪問,直接用不帶參數(shù)的permit方式允許通過,并將該規(guī)則置前,因?yàn)锳CL是從上到下順序執(zhí)行的。
Established參數(shù)僅僅對(duì)TCP連接過濾,無(wú)法過濾UDP協(xié)議,因此假如有病毒是通過UDP協(xié)議端口傳播,只能通過deny源地址進(jìn)行,無(wú)法使用本文所述方法。