王嘉楠,吳軍平
(1.武漢郵電科學(xué)研究院烽火學(xué)院,湖北武漢 430074;2.烽火通信科技股份有限公司,湖北武漢 430073)
海量設(shè)備的接入使得互聯(lián)網(wǎng)的規(guī)模快速擴(kuò)大,一方面提升了用戶的體驗(yàn),另一方面5G 安全也面臨不小的挑戰(zhàn),其安全防護(hù)需要各界相互配合、共同努力,體系化、立體化地做好5G 安全防護(hù)[1]。網(wǎng)絡(luò)規(guī)模擴(kuò)大的同時(shí)還增加了大量需要上送CPU 處理的報(bào)文和針對(duì)CPU的惡意攻擊報(bào)文,CPU的處理壓力與日俱增,為防范各種攻擊,保障網(wǎng)絡(luò)和業(yè)務(wù)安全,迫切需要對(duì)交換機(jī)進(jìn)行加固[2-3]。NP芯片可用微碼編程,其高速響應(yīng)的特點(diǎn)正適合應(yīng)用于通信領(lǐng)域分組業(yè)務(wù)中包處理、協(xié)議分析的任務(wù)[4]。
在位于網(wǎng)絡(luò)邊緣的交換機(jī)和路由器端口上綁定ACL,將其以太幀頭部信息、多協(xié)議標(biāo)簽交換(Multi-Protocol Label Switching,MPLS)的標(biāo)記、端口號(hào)等字段作為匹配信息,根據(jù)匹配結(jié)果決定數(shù)據(jù)包是轉(zhuǎn)發(fā)或丟棄,過(guò)濾接入的用戶和數(shù)據(jù)報(bào)文,以此完成對(duì)數(shù)據(jù)報(bào)文安全性的校驗(yàn)和網(wǎng)絡(luò)某一連接流量的限制[5-7]。
高端路由器上執(zhí)行數(shù)據(jù)包轉(zhuǎn)發(fā)的是包轉(zhuǎn)發(fā)引擎PFE(Packet Forwarding Engine),通常是位于上行或下行接口板的NP芯片。NP芯片不僅要實(shí)現(xiàn)報(bào)文接收、解析、轉(zhuǎn)發(fā)、交換、封裝,還要進(jìn)行其他處理,其中包過(guò)濾就是一項(xiàng)十分關(guān)鍵的處理。從應(yīng)用到包過(guò)濾分為3 個(gè)部分:流分類、流動(dòng)作和流策略[8]。先設(shè)定ACL 匹配規(guī)則,再針對(duì)某類流量定義流動(dòng)作,將流分類和流動(dòng)作關(guān)聯(lián)后應(yīng)用到相應(yīng)接口上。
根據(jù)不同的匹配層次和不同的匹配信息可以定義多種規(guī)則,如表1 所示[9-10]。

表1 ACL分類信息
但是由于NP芯片自身暫不支持INTF_ACL的綁定,所以INTF_ACL 在后續(xù)的應(yīng)用中默認(rèn)為全匹配,全部執(zhí)行“通過(guò)”動(dòng)作,從而使ETH_ACL的規(guī)則編號(hào)擴(kuò)展為1~1 999,使用報(bào)文接口和以太幀頭部信息同時(shí)進(jìn)行匹配。
ACL的實(shí)現(xiàn)需要網(wǎng)絡(luò)處理平臺(tái)中各層聯(lián)通,大致將網(wǎng)絡(luò)平臺(tái)分為平臺(tái)側(cè)和驅(qū)動(dòng)側(cè),主要完成對(duì)數(shù)據(jù)的配置及下發(fā)、數(shù)據(jù)間邏輯關(guān)系的映射、數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換并寫(xiě)入底層的NP芯片。通過(guò)在NP芯片上預(yù)先編碼,微碼側(cè)能夠?qū)α魅氲牧髁堪凑諏?xiě)入的配置進(jìn)行解析和轉(zhuǎn)發(fā),實(shí)現(xiàn)相應(yīng)功能。
網(wǎng)管網(wǎng)元管理接口將配置下發(fā)到網(wǎng)絡(luò)操作平臺(tái)后,平臺(tái)中的網(wǎng)元管理接口子系統(tǒng)(Network Entity Management Subsystem)將配置傳遞到統(tǒng)一業(yè)務(wù)管理子系統(tǒng)(Unified Service Management Subsystem),根據(jù)所需功能定義在USM 中構(gòu)建平臺(tái)中FDPO的字段和數(shù)據(jù)結(jié)構(gòu),同時(shí)設(shè)計(jì)依賴鏈關(guān)系,主控盤通過(guò)映射模型構(gòu)建ID 管理組件中的DDPO,并且選擇相應(yīng)的映射關(guān)系,然后將配置下發(fā)到業(yè)務(wù)盤,業(yè)務(wù)盤中UDM組件負(fù)責(zé)業(yè)務(wù)的配置處理,接收到主控?cái)?shù)據(jù)后,從FDPO 中構(gòu)建出DDPO,通過(guò)MAC 地址狀態(tài)查詢組件、性能采集和事件告警組件后,下發(fā)到SDA。
FDPO 中的依賴鏈關(guān)系由ACL_RULE 建立,ACL_RULE 包含了acl_id(ACL 編號(hào))、match_type(匹配類型)、etype(以太幀中以太類型字段)、dst_mac/src_mac(目的MAC 地址和源MAC 地址)、ovid/ivid(內(nèi)外層和內(nèi)層VLAN 號(hào))、dscp(IP 頭部中DSCP 字段)等屬性。FDPO之間的迭代關(guān)系有兩種:依賴關(guān)系和父子關(guān)系,兩種關(guān)系的建立都需要使用外鍵作為連接橋梁,其中,acl_id 就是用來(lái)完成迭代關(guān)系的外鍵。
通過(guò)外鍵acl_id 索引到ACL_ACL 結(jié)構(gòu),ACL_ACL 包含了acl_id、acl_type 和phook 等屬性。通過(guò)外鍵logic_port_index 索引到IFMGR_IF_NET,再由IFMGR_IF_NET 中的外鍵索引到IFMGR_IF_LAG。其中,所有字段的數(shù)據(jù)均由網(wǎng)絡(luò)操作平臺(tái)下發(fā)。
SDA 層主要完成從FDPO 中將依賴鏈關(guān)系映射到DDPO 中,同時(shí)轉(zhuǎn)換部分?jǐn)?shù)據(jù)。DDOP 元素與FDPO 元素為一對(duì)一或一對(duì)多映射,使用工具生成簡(jiǎn)單映射代碼,復(fù)雜映射需要通過(guò)手寫(xiě)映射函數(shù)實(shí)現(xiàn)映射關(guān)系。DDPO 涉及3 種操作:創(chuàng)建、更新和刪除。DDPO 所需的FDPO 數(shù)據(jù)完整時(shí)才會(huì)觸發(fā)DDPO的創(chuàng)建,只有在DDPO的數(shù)據(jù)發(fā)生變化之后才會(huì)觸發(fā)更新操作,刪除操作可以通過(guò)FDPO 更新改變key值和刪除Start FDPO 來(lái)觸發(fā)。PSN 層完成DDPO 到微碼數(shù)據(jù)類型的轉(zhuǎn)換和配置的下發(fā),將獲取的數(shù)據(jù)下發(fā)到NP芯片,處理數(shù)據(jù)流。
ACL 分為KEY 和DATA 兩個(gè)部分,KEY 即為匹配的規(guī)則,DATA 為進(jìn)行的動(dòng)作。驅(qū)動(dòng)側(cè)有兩種KEY的模板,支持INTF_ACL 和IP_ACL,DATA的動(dòng)作包括通過(guò)、拒絕和鏡像到CPU 等。定義匹配規(guī)則時(shí),可以對(duì)KEY 值部分進(jìn)行任意比特的掩碼操作,取相應(yīng)有效位。查找時(shí)按照訪問(wèn)列表中的語(yǔ)句順序查找,首先判斷當(dāng)前業(yè)務(wù)是否配置了ACL,存在則從acl_id 最小的開(kāi)始,一旦匹配到其中某一匹配條件就結(jié)束匹配,不檢查后續(xù)的語(yǔ)句。
1)定義table acl_160_te0 和table acl_320_te0 兩種表項(xiàng),使用不同大小的三態(tài)內(nèi)容尋址存儲(chǔ)器表(Ternary Content Addressable Memory,TCAM)分別處理ETH_ACL 和IP_ACL,微碼側(cè)定義的TCAM 表項(xiàng)如圖1 所示。TCAM 使用的逐條匹配法足以保證查找的準(zhǔn)確性和有效性[11]。

圖1 微碼側(cè)定義TCAM表項(xiàng)的代碼
其中,key_tpye 對(duì)應(yīng)驅(qū)動(dòng)側(cè)KEY的部分,value_type 對(duì)應(yīng)驅(qū)動(dòng)側(cè)DATA的部分。struct ethernet_header_key 中定義了以太幀頭部信息,struct acl_320_request_t 中定義了鏡像過(guò)濾、IPv4、IPv6 和攜帶MPLS 標(biāo)簽的報(bào)文的數(shù)據(jù)結(jié)構(gòu)。
2)在入/出接口處理流程中判斷acl_id范圍,進(jìn)入對(duì)應(yīng)流程中,從報(bào)文的首部讀取相應(yīng)的信息匹配規(guī)則,得到返回?cái)?shù)據(jù)acl_response,判斷其中acl_action是否為deny,是則做丟包處理,反之則讀取其他信息或進(jìn)入業(yè)務(wù)功能處理流程中(如RFC2544、Remark 或NetFlow等)執(zhí)行相應(yīng)acl_action,從而實(shí)現(xiàn)包過(guò)濾。
測(cè)試方案:以Egress 側(cè)帶有MPLS 標(biāo)簽的ACL 流程為例完成測(cè)試。在設(shè)備中使能ACL 功能,然后進(jìn)入鏡像流程。使用Spirent Testcenter 儀表配置帶有MPLS 標(biāo)簽的二層業(yè)務(wù)流量,從pipo0的5 槽5 口(邏輯口:0x1c)進(jìn)入,再?gòu)? 槽0 口(邏輯口:0x1d)發(fā)出,同時(shí)將流鏡像到3 槽8 口(邏輯口:0x1f),若在6 槽0口的出口計(jì)數(shù),有流量通過(guò)就可以證明帶有標(biāo)簽的NNI 側(cè)160_ACL 匹配成功。
測(cè)試步驟:
1)登陸到主控:進(jìn)入到NP芯片的pipo0 上,打印各個(gè)端口流量的收發(fā)情況,確定0x1c、0x1d 和0x1f 端口的收發(fā)情況,查詢邏輯出口0x1d的配置情況,獲取acl_id 信息;
2)根據(jù)acl_id 查詢硬表信息:key+mask、mirror_to_port鏡像流走入0x1f口,獲取contid后查找出端口計(jì)數(shù),驗(yàn)證到ACL已經(jīng)匹配成功,如圖2、圖3所示。

圖2 查詢?cè)揳cl_id硬表的配置

圖3 獲取計(jì)數(shù)結(jié)果
開(kāi)啟防攻擊功能后,需要在報(bào)文上送CPU 之前進(jìn)行檢查,提前過(guò)濾掉有缺陷的、有欺騙性質(zhì)的、洪泛攻擊的報(bào)文,從而保證路由器在受到來(lái)自網(wǎng)絡(luò)的攻擊時(shí)仍然保持與其他設(shè)備正常通信的能力,提供持續(xù)而穩(wěn)定的服務(wù)。由于大量的網(wǎng)絡(luò)攻擊主要是信令攻擊,所以通過(guò)協(xié)議聯(lián)動(dòng)(Relative)、黑桶(Black)、白名單、用戶自定義4 種策略將ACL 功能綁定在設(shè)備接口上,如圖4 所示。所謂協(xié)議聯(lián)動(dòng),就是各協(xié)議模塊根據(jù)互相建立的會(huì)話信息來(lái)自動(dòng)下發(fā)協(xié)議類型、端口號(hào)、IP 地址等數(shù)據(jù)配置ACL 規(guī)則,將可以正常上送的報(bào)文加入到協(xié)議聯(lián)動(dòng)桶中。用戶可以根據(jù)實(shí)際需求選擇防攻擊的策略,配置信令報(bào)文匹配規(guī)則、優(yōu)先級(jí)、上送速率,達(dá)到攔截攻擊報(bào)文、降低CPU占用率、保證正常業(yè)務(wù)處理能力等目的。

圖4 開(kāi)啟防攻擊信令后上送流程
3.2.1 防攻擊策略
1)識(shí)別到畸形報(bào)文(如目的地址為網(wǎng)絡(luò)的A、B、C 類地址廣播地址的Smurf 攻擊報(bào)文、長(zhǎng)度大于64 K的Ping of Death 攻擊報(bào)文、源IP 地址和目的IP 地址相等的Land 攻擊報(bào)文等)后直接丟棄[12-14]。
2)在邏輯接口配置相關(guān)信令,提取使能開(kāi)關(guān),當(dāng)該接口的開(kāi)關(guān)使能時(shí)才對(duì)該信令執(zhí)行提取操作,否則默認(rèn)丟棄,如圖5 所示。

圖5 相關(guān)信令提取使能開(kāi)關(guān)
3)配置全局開(kāi)關(guān),全局開(kāi)關(guān)打開(kāi)后才提取信令,否則默認(rèn)丟棄,如圖6 所示。

圖6 全局開(kāi)關(guān)的配置
4)防攻擊協(xié)議聯(lián)動(dòng)桶命中后,已經(jīng)被識(shí)別為正常信令的報(bào)文以高優(yōu)先級(jí)上送,如圖7 所示。

圖7 協(xié)議聯(lián)動(dòng)桶的配置
5)防攻擊黑桶配置的限速處理如圖8 所示。

圖8 黑桶的配置
3.2.2 防攻擊測(cè)試
測(cè)試方案:進(jìn)入主控配置視圖創(chuàng)建防攻擊策略后使能畸形報(bào)文開(kāi)關(guān),將防攻擊策略與端口槽位綁定,提交配置。通過(guò)儀表向設(shè)備發(fā)送正常IPv4 報(bào)文以及特征是源IP 地址和目的IP 地址均為192.85.1.1的TCP SYN 報(bào)文的land 畸形攻擊報(bào)文、源IP 地址為255.255.255.255的ICMP Request 畸形攻擊報(bào)文,然后使用tcpdump 抓包分析報(bào)文。再進(jìn)入配置中去除使能開(kāi)關(guān),提交配置后繼續(xù)發(fā)送混合的報(bào)文流量,繼續(xù)使用Tcpdump 抓包對(duì)比兩次抓到的報(bào)文。
通過(guò)對(duì)比可以驗(yàn)證,在使能畸形報(bào)文防攻擊開(kāi)關(guān)后,打開(kāi)正常的IPv4 流、Smurf 攻擊報(bào)文流和Land攻擊報(bào)文流時(shí),本機(jī)Tcpdump 抓不到攻擊報(bào)文,能抓到正常的數(shù)據(jù)報(bào)文流;在關(guān)閉使能畸形報(bào)文防攻擊開(kāi)關(guān)后,再打開(kāi)Smurf 攻擊報(bào)文流、Land 攻擊報(bào)文流和正常的IPv4 流,本機(jī)Tcpdump 抓到了攻擊報(bào)文,如圖9、圖10 所示。實(shí)驗(yàn)結(jié)果表明,基于NP芯片配置ACL 能夠防止惡意攻擊報(bào)文對(duì)CPU的沖擊,有效降低CPU的占用率,保證正常通信服務(wù)質(zhì)量。

圖9 打開(kāi)使能開(kāi)關(guān)后獲取的報(bào)文

圖10 關(guān)閉使能開(kāi)關(guān)后獲取的報(bào)文
5G 時(shí)代帶來(lái)了機(jī)遇的同時(shí)也帶來(lái)了挑戰(zhàn),各種數(shù)據(jù)流量的接入對(duì)網(wǎng)絡(luò)提出了更高的要求,也向網(wǎng)絡(luò)安全發(fā)起了挑戰(zhàn)[15-16],可以看出,對(duì)接入的數(shù)據(jù)流量進(jìn)行流策略包過(guò)濾是非常必要的。通過(guò)測(cè)試可以驗(yàn)證,基于NP芯片實(shí)現(xiàn)ACL 包過(guò)濾,同時(shí)將ACL 應(yīng)用在防止報(bào)文攻擊上,在信令報(bào)文上送CPU 之前先基于IP 地址、源端口和目的端口、以太類型等數(shù)據(jù)對(duì)報(bào)文篩選過(guò)濾實(shí)現(xiàn)限速的目的,有效攔截了攻擊報(bào)文,防止上送過(guò)程中CPU 頻繁處理非正常報(bào)文后卡死,也可以更加合理地分配網(wǎng)絡(luò)帶寬資源,提高通信質(zhì)量和服務(wù)保障能力。可見(jiàn),在數(shù)據(jù)業(yè)務(wù)高速發(fā)展的時(shí)代,ACL 是十分重要的功能。