隨著各類網絡病毒及攻擊大量出現,內部網絡及數據面臨的威脅日益嚴重。這些病毒、網絡攻擊第一步總是通過掃描發現和利用各類計算機端口,從而達到入侵的目的。對于網絡端口的防護手段很多,常用的是防火墻的包過濾策略。本文主要是針對沒有防火墻的網絡節點,探討在路由器中利用ACL established參數實現端口防護。
筆者所在公司為大型國企,網絡龐大,各省、地市均有自身需要保護的數據資源。現實需求是,需要內部對外訪問時候,無任何限制。而外部分公司對內部的訪問,則要受到限制,不能無條件的任意訪問。構造網絡拓撲圖,如圖1所示。

圖1 網絡拓撲示意圖
筆者所在公司為A公司,上級公司為B公司。A能夠訪問B公司網絡(數據中心、服務器所在區域,A公司的業務要訪問B公司),而作為A公司來說,不想B公司無條件訪問A公司。也就是說A訪問B,但B不能訪問A,要求A到B的單向訪問控制。
ACL(Access Control List)是指應用到路由器或者三層交換機接口上的指令列表,通暢成為訪問控制列表,是用來實現流識別功能的。可以分為基本ACL、高級ACL、二層 ACL。
rule1 deny ipsource 10.1.1.00.0.0.255
然后將該ACL應用在R1連接A公司交換機的GE 0/0/0口的outbound方向。按照理解,對外訪問不做任何限制,而僅阻斷掉來自B公司源地址的訪問。但是這樣配置之后,發現A公司的所有業務全部中斷了!筆者趕緊進行回退,然后分析原因。
數據流假如從A發出,那么A作為源地址,第一幀數據可以發現B,但是返回數據包時,B作為了源地址,A作為了目的地址,當返回數據包進入R1時,被R1接口GE0/0/1下的ACL策略阻斷了。其實這個可以根據根據TCP的三次握手連接很好的解釋。
A公司作為客戶端,發送連接請求報文SYN到B公司服務器端,第一次握手;
B服務器接受連接后,回復ACK報文,并為這次連接分配資源,第二次握手;但是這個報文,A是收不到的,被筆者寫的ACL阻斷了。
這一步后,A收不到B發來的授予連接信息了,也就是SYN+ACK的信息收不到了。也就無法進行第三次握手,無法完成A向B發ACK報文。
因此整個TCP連接無法正常建立,導致了筆者所在的A公司業務全部中斷。
Boosting算法問題在于更多關注不能正確分類樣本數據,對于邊界樣本會導致權重失衡,產生“退化問題”。在Boosting基礎上使用指數權重產生用于二值分類的AdaBoost算法[28,29]。
分析出原因后,筆者就針對此向解決辦法。主要問題出在TCP的第二次握手上,那么如何讓在這個包通過,成為解決問題的關鍵。
要識別出這個包,就得在這個數據包的包頭上做標記進行區分。這里established參數很好的解決了這個問題。在華三/華為的網絡設備中,ACL有一個不起眼的屬性參數:established。筆者查閱資料,得知established參數就是在TCP連接中的ACK位、

圖2 TCP設備中ACL配置
筆者所在公司某個節點路由器的配置如圖2所示。RST位進行標記,從而識別出第二次握手的返回包。那么,筆者就將該識別的數據包進行放行,重新設計ACL:
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
即允許帶有標志位的10.1.1.0/24的網絡段。
這樣之后,從A公司發出的第一次握手數據包就會匹配 rule 1,對 ACK和RST標記為1,而第二次握手的返回報中,由于ACK和RST都為1,即允許通過。
最后完整ACL設計如下:
acl number 3018
rule 1 permit tcp source 10.1.1.0 0.0.0.255 established
rule 999 deny tcp any
最后一條規則是防止其他未允許的其他類似B的公司數據包訪問A公司。之后在R1的GE 0/0/1口的outbond方向下應用。
packet-filter 3018 outbound
在配置完成后,筆者進行效果驗證。
從筆者所在的A公司訪問B公司,所有業務正常。從B公司訪問A公司,不能訪問。達到了當初預期目標。
這樣做的好處在哪里,筆者在此進行總結:
1.能對A公司內部網絡進行有效防護。因無法進行TCP連接,很多暴力的掃描、非法訪問、病毒傳播都無法從外部進入內部網絡。
2.不影響A公司業務。對于需要訪問外部公司的業務,不受影響。
這樣的好處,類似于一個公司內網可以訪問外網,但是外網無法訪問到公司內網。所以在當今網絡安全日益嚴重的今天,這樣的應用場景需求很多。
本文僅采用了一個實例,說明了ACL established 的應用場景,及配置方法。對于大型公司網絡段較多,業務較多的場景,需要梳理出業務需求段。
有時既存在A到B的主動訪問,還有B到A的主動訪問。對于A到B的主動訪問,可通過established參數實現返回包通過。而對于B到A的主動訪問,直接用不帶參數的permit方式允許通過,并將該規則置前,因為ACL是從上到下順序執行的。
Established參數僅僅對TCP連接過濾,無法過濾UDP協議,因此假如有病毒是通過UDP協議端口傳播,只能通過deny源地址進行,無法使用本文所述方法。