筆者在工作中,經(jīng)常碰到有用戶反映IP地址沖突、上網(wǎng)時斷時續(xù)、上網(wǎng)速度時快時慢等問題。通過解決問題,發(fā)現(xiàn)主要原因是部分用戶感染了ARP病毒,給交換機造成了巨大負擔,導致交換機無法正常工作,雖然查殺了ARP病毒后,問題得到了解決,卻已經(jīng)造成其他用戶較長時間無法正常辦公。只有對癥下藥,發(fā)揮交換機自身防護功能,讓交換機免疫ARP攻擊,才能最小程度地減小影響,本文從ARP工作原理入手,分析ARP攻擊類型及原理,交換機防范ARP攻擊技術,并以華為交換機為例,通過具體配置方法實現(xiàn)交換機對ARP攻擊免疫。
圖1 同一網(wǎng)段HOSTA與HOSTB通信
圖2 其他終端收到HOSTA請求報文
ARP(Address Resolution Protocol),地址解析協(xié)議,其基本功能就是知道目標設備的IP地址,查詢目標設備的MAC地址。在TCP/IP網(wǎng)絡環(huán)境下,每個終端或三層設備正常均有一個IP地址,這是標識終端或三層設備的邏輯地址,位于三層,為了正常通信須知道終端或三層設備的二層地址即MAC地址,這樣就存在將IP地址解析為MAC地址的問題,而這個“翻譯官”就是ARP協(xié)議。ARP地址解析過程由ARP請求和ARP應答兩個過程完成。
如圖1所示,HOSTA和HOSTB在同一網(wǎng)段,HOSTA要 和HOSTB通信,HOSTA首先查看自己的ARP緩存表,查看表中是否有HOSTB的IP和MAC地址相應的ARP表項,如果存在,則HOSTA直接利用ARP表中HOSTB的MAC地址,對IP數(shù)據(jù)包進行封裝,并將數(shù)據(jù)包發(fā)送給HOSTB,如果HOSTA在ARP表中找不到HOSTB對應的MAC地址,則先緩存該報文數(shù)據(jù),然后以廣播方式發(fā)送一個ARP請求報文(即ARP Request報文)。ARP請求報文中的發(fā)送端IP地址和發(fā)送端MAC地址為HOSTA的IP地址和MAC地址,目標IP地址為HOSTB的IP地址,目標MAC地址為全0的MAC地址。由于ARP請求報文以廣播方式發(fā)送,該網(wǎng)段上的所有終端都可以接收到該請求,HOSTB發(fā)現(xiàn)ARP請求報文中的IP地址是自己的IP地址,就會對該ARP請求報文予以回應。
如圖2所示,網(wǎng)絡中的其他終端在收到HOSTA的請求報文后,會將ARP請求報文中的HOSTA的IP地址和MAC地址存入自己的ARP緩存表中,同時將請求報文中的IP地址跟自己的IP地址進行對比,當IP地址不同時,則直接丟棄該報文。HOSTB接收到該ARP請求報文后,發(fā)現(xiàn)報文中的IP地址與自己的IP地址相同,會以單播方式發(fā)送ARP響應報文(即ARP Reply報文)給HOSTA,HOSTA收到ARP響應報文后,將HOSTB的MAC地址加入到自己的ARP緩存表中。
如果每次終端通信前都要廣播發(fā)送一個ARP請求報文的話,網(wǎng)絡中所有終端都必須接收和處理這個ARP請求報文,會極大地增加網(wǎng)絡負擔。為解決這個問題,每個終端都維護著一個高速緩存,在這個高速緩存中,存放著獲得的IP地址到MAC地址的映射關系,每次通信時,各終端都會在各自的高速緩存中查找目標IP地址所對應的MAC地址,如果ARP緩存中有對應的MAC地址,終端就不會再發(fā)送ARP請求報文,如果ARP緩存中沒有對應的MAC地址時,終端才會發(fā)送廣播的ARP請求報文。當然,這個映射關系不可能永遠保持不變或一直存在,在每個網(wǎng)絡設備或終端的高速緩存中都設有一個動態(tài)ARP表項老化超時定時器(不同的網(wǎng)絡設備或操作系統(tǒng)中這個老化時間不同,在Windows 2010、Windows 7等環(huán)境中,該值是2分鐘,在思科網(wǎng)絡設備中,該值一般是5分鐘,在華為網(wǎng)絡設備中,該值一般是20分鐘。在操作系統(tǒng)中,可以通過修改注冊表修改該值,在網(wǎng)絡設備中可使用相關命令修改該值),當時間達到動態(tài)ARP表項的老化超時時間,網(wǎng)絡設備或終端會進行老化探測,如果探測失敗,則刪除該映射表項,否則,保留該表項。
ARP表項老化之前,接口會發(fā)送ARP老化探測報文,這個老化探測報文可以是單播報文,也可以是廣播報文。缺省情況下,接口以廣播模式發(fā)送ARP老化探測報文,在華為網(wǎng)絡設備中,默認探測次數(shù)為3次,除原有的老化時間探測,交換機會在1/2時間點和3/4時間點發(fā)送探測報文,這兩個探測時間點的探測次數(shù)都為3次且不能修改,在這兩個時間點,如果接收到響應報文則老化時間初始化,未接收到則會在達到老化時間后,每隔5s發(fā)送一個探測報文,如果3次沒有收到應答消息則刪除該表項。
動態(tài)ARP表項由ARP協(xié)議通過ARP報文自動生成和維護,可被老化、被靜態(tài)ARP表項覆蓋和被更新,當?shù)竭_老化時間、接口不工作時會刪除相應的動態(tài)ARP表項。靜態(tài)ARP一般由管理人員手動配置IP地址和MAC的映射關系,不可被老化、更新。
ARP協(xié)議工作原理簡單,網(wǎng)絡應用簡單便捷,是網(wǎng)絡通信的根本協(xié)議,但ARP協(xié)議缺乏有效的安全機制,也就給攻擊者提供了機會。ARP攻擊按攻擊方式分為ARP泛洪攻擊和ARP欺騙攻擊。
終端在轉發(fā)IP報文時,如果高速緩存中沒有對應的ARP表項,需要發(fā)送ARP請求,攻擊者利用這一點,發(fā)送大量IP地址不可達報文,侵占網(wǎng)絡設備和用戶終端的ARP緩存資源,導致資源耗盡,大量的ARP請求報文還會造成網(wǎng)絡帶寬阻塞,從而使正常用戶業(yè)務受到影響,嚴重時導致設備重啟和網(wǎng)絡癱瘓。如圖3所示,ARP泛洪攻擊可細分為拒絕服務攻擊、緩存溢出攻擊和掃描攻擊3種。
拒絕服務攻擊流程如下:攻擊者發(fā)送大量偽造的ARP請求、應答報文報文,造成網(wǎng)絡設備資源長期忙于ARP報文處理,影響其他業(yè)務處理,正常用戶請求ARP或者其他業(yè)務報文被阻塞,從而導致業(yè)務中斷。
緩存溢出攻擊流程如下:攻擊者向網(wǎng)絡設備發(fā)送大量偽造的ARP請求報文或免費ARP報文,超出網(wǎng)絡設備ARP高速緩存空間,ARP緩存表溢出,無法緩存正常的ARP表項,從而導致業(yè)務流量中斷。
掃描攻擊流程如下:攻擊者掃描本網(wǎng)段終端或其他網(wǎng)段時,網(wǎng)絡設備在發(fā)送回應報文前,會查找ARP表項,如果目的MAC地址不存在,網(wǎng)絡設備會向上層發(fā)送消息,要求上層發(fā)送ARP請求報文到其他網(wǎng)段以獲得目的端的MAC地址。大量的掃描報文會導致大量的消息,導致網(wǎng)絡設備資源浪費,影響對其他業(yè)務的處理,從而阻礙正常報文轉發(fā),正常用戶請求ARP或者其他業(yè)務報文被阻塞,從而導致業(yè)務中斷。
圖3 ARP泛洪攻擊類型
圖4 仿冒用戶終端流程
圖5 仿冒網(wǎng)關流程
ARP協(xié)議規(guī)定終端或網(wǎng)絡設備在收到ARP響應包時,如果有此項映射信息則進行刷新時,若無此項映射信息,則進行記錄。攻擊者利用這個特點,發(fā)送大量偽造的IP地址和MAC地址映射ARP請求報文,惡意修改網(wǎng)關或網(wǎng)絡內(nèi)其他終端的ARP表項,造成用戶或網(wǎng)絡的報文轉發(fā)異常。ARP欺騙攻擊可細分為仿冒用戶終端、仿冒網(wǎng)關2種。
仿冒用戶終端流程如圖4所示:三層網(wǎng)關發(fā)送ARP廣播請求,詢問用戶A的地址,用戶A發(fā)送ARP回應報文,三層網(wǎng)關會在ARP緩存中建立用戶A的ARP映射表項,攻擊者發(fā)出仿冒用戶A的ARP回應報文,報文中的MAC地址可以攻擊MAC地址,也可以是網(wǎng)絡中其他用戶地址甚至是不存在的地址。三層網(wǎng)關中的用戶A合法的ARP映射表項被修改為仿冒的ARP映射表項。這種正常發(fā)送給用戶A的數(shù)據(jù)包會轉發(fā)給攻擊者,使用其他用戶地址,則流量被轉發(fā)到其他用戶,如果仿冒的是不存在的地址,則流量會在網(wǎng)絡中被阻斷。
仿冒網(wǎng)關流程如圖5所示:用戶A廣播ARP請求,詢問網(wǎng)關的MAC地址,網(wǎng)關回應自己的MAC地址。用戶A終端建立合法網(wǎng)關的ARP表項,用戶B發(fā)出仿冒的網(wǎng)關ARP表項,可以是自己的MAC地址,也可以是網(wǎng)絡中其他用戶地址甚至是不存在的地址。用戶A終端合法網(wǎng)關的ARP表項被修改為仿冒的ARP表項,用戶A的流量轉發(fā)到用戶B,如果仿冒的是其他用戶的地址,則流量被轉發(fā)到其他用戶,如果仿冒的是不存在的地址,則流量在網(wǎng)絡中被阻斷。
定位ARP攻擊源時,需先排除鏈路、環(huán)路或路由問題,網(wǎng)絡受到了ARP攻擊時,用戶終端會出現(xiàn)時斷時續(xù)、上網(wǎng)速度時快時慢、業(yè)務中斷或無法上網(wǎng),Ping網(wǎng)關和其他用戶終端時延變長、丟包率高或不通等現(xiàn)象,交換機會出現(xiàn)CPU占用率較高、外連設備掉線、設備主備狀態(tài)震蕩、設備端口指示燈閃爍速度快等現(xiàn)象,可以在網(wǎng)絡中抓出大量ARP垃圾數(shù)據(jù)包,利用交換機定位ARP攻擊接口和排除ARP故障流程圖如圖6所示,通過對接口ARP報文的統(tǒng)計數(shù)量可以快速找到攻擊源所在的交換機端口。
針對不同的ARP攻擊技術,交換機采取不同的防范技術。
目前交換機針對ARP泛洪攻擊的方法主要以抑制攻擊源的ARP包為主,一般在交換機設置一個防ARP攻擊閾值,當設定時間段內(nèi)交換機接收到的ARP報文超過閾值時,交換機會對該MAC進行限制或直接對所在交換機端口進行阻斷,阻斷時間內(nèi)對該MAC地址或端口所發(fā)的ARP包不進行任何處理,直接丟棄,以保證網(wǎng)絡通暢。
圖6 利用交換機定位ARP攻擊接口和排除ARP故障流程圖
交換機防范的具體常用措施有:一是針對源MAC地址、源IP地址、全局、VLAN和接口進行ARP報文限速報文限速。網(wǎng)絡中一旦有ARP攻擊,就會產(chǎn)生大量ARP包,會增加交換機CPU負荷,為了防止這種情況出現(xiàn),可以在交換機上配置ARP報文速率抑制,配置后,交換機會對接到的ARP報文進行數(shù)量統(tǒng)計,如果在規(guī)定時間內(nèi),接收到的ARP報文數(shù)量超出了配置的閾值,交換機不會處理超出部分的ARP報文,將交換機處理的ARP報文數(shù)量限制在一個合理的范圍內(nèi),可以有效減輕交換機CPU的處理壓力;二是針對源IP地址、全局、VLAN和接口進行ARP Miss報文限速。如果交換機收到大量目標IP地址不能解析的IP報文時,會觸發(fā)交換機發(fā)送大量的ARP Miss報文,也會給交換機CPU造成很大負荷,同時嚴重消耗目的網(wǎng)絡的帶寬資源,對ARP Miss報文進行限速也是非常必要的,同限制ARP報文一樣,在規(guī)定時間內(nèi),如果ARP Miss報文的數(shù)量超過了配置的閾值,交換機則不會處理超出部分的ARP Miss消息;三是修改ARP表項的老化時間。當觸發(fā)交換ARP Miss報文時,會生成臨時ARP表項,同時向目標終端發(fā)送ARP請求報文,尋求目標終端的ARP響應報文,以確認目標終端是否存在,交換機在收到ARP應答報文前,在臨時ARP表項老化時間內(nèi),交換機將不會處理收到的ARP無效報文且不會觸發(fā)ARP Miss報文,只有在收到ARP應答報文后,才會將正確的ARP表項來更新臨時ARP表項。當超過配置的老化時間,仍未收到ARP應答報文,交換機就會清除臨時ARP表項,所以,可以通過修改交換機表項的老化時間來控制ARP Miss報文的觸發(fā)時間,適當調(diào)大可以有效減少ARP Miss報文數(shù)量;四是針對接口的ARP表項進行限制。一個交換機可以緩存的ARP數(shù)量有限,哪怕遭到一個或幾個用戶終端的攻擊都會造成整個交換機的ARP緩存溢出,從而造成整個網(wǎng)絡癱瘓,故對這一個或幾個用戶終端端口的ARP表項數(shù)量進行限制是非常必要的,這樣,當指定接口下的動態(tài)ARP表項達到配置的最大數(shù)量后,將不允許增加新的ARP表項。
防范ARP欺騙攻擊有很多方法,比較常用的方法有兩種:一是交換機正常關閉ARP學習功能,同時對正常用戶的IP地址和MAC地址進行綁定,這樣,交換機就不會自動刷新ARP表,只要是同IP地址和MAC綁定表不一致的報文都會被丟棄;二是交換機發(fā)送免費報文,免費ARP報文就是廣播正確的ARP信息,使得收到此報文的終端強制學習,以防止被欺騙,還可以有效防止局域網(wǎng)內(nèi)IP地址沖突。
交換機防范的具體常用措施有:一是使用靜態(tài)ARP和禁止接口學習ARP表項。在用戶終端比較少的情況下或?qū)W(wǎng)絡中比較重要的用戶終端和網(wǎng)絡設備時,為防止ARP攻擊,可以采取靜態(tài)ARP,即手動配置IP地址和MAC地址之間的映射關系,在這種情況下,可以禁止接口學習ARP表項,交換機將不會處理新的ARP表項,可以保護重要用戶和網(wǎng)絡設備;二是動態(tài)ARP檢測(DAI:Dynamic ARP Inspection)。ARP攻擊的主要目的之一就是竊取合法用戶的數(shù)據(jù),為防止這種攻擊,一般在交換機上使能動態(tài)ARP檢測DAI功能,交換機會將ARP報文對應的源IP、源MAC、接口、VLAN信息和緩存表中的信息進行比較,如果信息相匹配,則該用戶為合法用戶,否則就被認定為攻擊,丟棄該ARP報文;三是發(fā)送ARP免費報文。這主要針對仿冒網(wǎng)關的ARP攻擊,避免其他用戶終端ARP表中記錄錯誤的網(wǎng)關地址映射,造成其他用戶終端的正常數(shù)據(jù)不能被網(wǎng)關接收,在交換機上配置發(fā)送免費ARP報文的功能,用來定時更新合法用戶的ARP表項,使得合法用戶ARP表項中記錄的是正確的網(wǎng)關地址映射關系;四是ARP報文內(nèi)MAC地址一致性檢查。主要對要學習的ARP報文進行一致性檢查,是交換機對收到的用戶終端ARP報文和收到的該用戶的正常數(shù)據(jù)報文進行比對,如果以正常數(shù)據(jù)報文首部中的源/目的MAC地址和ARP報文中的源/目的MAC地址不同,則認為是攻擊報文,將其丟棄不予處理,否則,則對ARP報文進行學習;五是ARP報文合法性檢查。為防止非法ARP報文攻擊,交換機對ARP報文中的MAC地址和IP地址進行分析,對認為不合法的ARP報文進行過濾,一般對ARP應答報文的源IP地址和目的IP地址進行合法性檢查,對ARP請求報文的源IP地址進行合法性檢查,一般認為ARP報文中的源IP和目的IP地址,全0、全1或者組播IP地址不正常時視為不合法ARP報文。對ARP報文中的源MAC地址和正常數(shù)據(jù)報的源MAC地址進行比對,一致則為合法,不一致則為不合法。對ARP應答報文中的目的MAC地址是否和以太網(wǎng)數(shù)據(jù)報文目的MAC地址進行比對,一致則認為合法,不一致則為不合法;六是ARP表項嚴格學習。這主要是針對仿冒用戶的ARP攻擊,為避免攻擊者假冒正常用戶向交換機發(fā)送ARP請求報文,交換機可使其具有嚴格表項學習功能,配置該功能后,交換機將不處理任何來自用戶終端的ARP請求報文,只有在交換機向用戶終端發(fā)送ARP請求報文,接收到用戶終端的ARP響應報文才觸發(fā)交換機學習ARP;七是配置DHCP觸發(fā)ARP學習。在一般局域網(wǎng)環(huán)境下,交換機除正常的數(shù)據(jù)交換功能外,還具備DHCP功能,當DHCP用戶數(shù)目較多時,交換機會處理巨量的ARP表項,對交換機性能和網(wǎng)絡帶寬造成巨大負荷,為了避免此問題,可在交換機上使其具有DHCP觸發(fā)ARP學習功能,當DHCP服務器給用戶分配了IP地址,網(wǎng)關設備會根據(jù)VLANIF接口上收到的DHCP ACK報文直接生成該用戶的ARP表項,較大程度地減少了ARP報文的交互。
以華為交換機為例,所有初始配置界面均為系統(tǒng)視圖,在用戶視圖執(zhí)行命令systemview,可進入系統(tǒng)視圖,配置中H-H-H為MAC地址,X.X.X.X為IP地址,Y為子網(wǎng)掩碼,***為設定數(shù)值,N/A為接口,[ ]中為可選項,{ }為必選項,|為多選項。
(1)配置ARP報文限速,可根據(jù)MAC地址、源IP地址、針對全局、VLAN和接口進行限速。
根據(jù)MAC地址進行限速,配置方法如下:執(zhí)行命令arp speed-limit source-mac H-H-H maximum***,配置根據(jù)源MAC地址進行ARP報文限速的限速值。
根據(jù)源IP地址進行限速,配置方法如下:執(zhí)行命令arp speed-limit source-ip X.X.X.X maximum***,配置對指定IP地址用戶的ARP報文進行限速的限速值,正常取值范圍0-16384。
針對全局、VLAN和接口進行限速,配置方法如下:執(zhí)行命令arp anti-attack ratelimit enable,使能 ARP 報文限速功能,需進入VLAN和接口模式。執(zhí)行命令arp antiattack rate-limit packet***[interval interval-value|block-timer***],配置ARP報文的限速值、限速時間,以及當某個接口的ARP報文超過限速值時,在后續(xù)一段時間內(nèi)持續(xù)丟棄該接口下收到的所有ARP報文的功能(即開啟黑洞模式)。
(2)配置ARP Miss消息限速,可以根據(jù)源IP地址進行配置。
根據(jù)源IP地址進行限速,配置方法如下:執(zhí)行命令arp-miss speed-limit source-ip X.X.X.X mask Y maximum *** [ noneblock|block timer *** ]。
針對全局、VLAN和接口進行限速,配置方法如下:執(zhí)行命令arp-miss anti-attack rate-limit enable,使能 ARP Miss消息限速功能,在VLAN和接口模式下需進入相應接口。
執(zhí)行命令arp-miss antiattack rate-limit packet *** [interval ***],配置 ARP Miss消息的限速值和限速時間。
執(zhí)行命令arp-miss antiattack rate-limit alarm threshold ***,配置ARP Miss消息限速丟棄告警閾值。
(3)配置臨時ARP表項的老化時間,其配置方法如下。
執(zhí)行命令interface interface-type N/A,進入接口視圖。
執(zhí)行命令arp-fake expire-time***,配 置 臨 時ARP表項的老化時間。
(4)配置ARP表項嚴格學習,可在全局或接口模式下進行配置。
全局使能,配置方法如下:執(zhí)行命令arp learning strict,配置全局ARP表項嚴格學習功能。
接口使能,配置方法如下:執(zhí)行命令interface interfacetype N/A,進入接口視圖,支持的接口類型包括VLANIF接口、三層以太網(wǎng)接口和以太網(wǎng)子接口。
執(zhí)行命令arp learning strict{force-enable|forcedisable|trust},配置接口的ARP表項嚴格學習功能。
(5)配置基于接口的ARP表項限制,可以基于二層以太網(wǎng)接口、三層接口和以太網(wǎng)子接口進行配置,配置方法如下。
執(zhí)行命令interface interface-type N/A,進 入接口視圖。執(zhí)行命令arplimit vlan vlan-id1[to vlanid2] maximum***,配置基于二層以太網(wǎng)接口的ARP表項限制。(執(zhí)行命令arp-limit maximum ***,配置基于三層接口或以太網(wǎng)子接口ARP表項限制)。
(6)配置禁止接口學習ARP表項,配置方法如下。
執(zhí)行命令interface vlanif N/A,進入VLANIF接口視圖。執(zhí)行命令arp learning disable,禁止接口學習動態(tài)ARP表項。
(1)配置ARP表項固化,可以在全局或接口使能該功能。
在全局使能配置方法如下:執(zhí)行命令arp anti-attack entry-check{fixed-mac|fixed-all|send-ack}enable。
在接口使能配置方法如下:執(zhí)行命令interface vlanif N/A,進入VLANIF接口視圖。執(zhí)行命令arp antiattack entry-check{fixedmac|fixed-all|send-ack}enable。
(2)配置動態(tài)ARP檢測,交換機使能該功能的配置方法如下。
執(zhí)行命令interface interface-type N/A,進入接口視圖。執(zhí)行命令vlan vlanid,進入VLAN視圖。在接口視圖或VLAN視圖中執(zhí)行命令arp anti-attack check user-bind enable,使能動態(tài)ARP檢測功能。在接口視圖下執(zhí)行命令arp anti-attack check user-bind alarm threshold***,配置動態(tài)ARP檢測丟棄報文告警閾值。
(3)配置ARP防網(wǎng)關沖突,交換機使能該功能的配置方法如下。
執(zhí)行命令arp anti-attack gateway-duplicate enable,使能ARP防網(wǎng)關沖突功能。
(4)配置發(fā)送ARP免費報文,交換機使能該功能的配置方法如下。
執(zhí)行命令arp gratuitousarp send enable,使能發(fā)送免費ARP報文的功能。執(zhí)行命令arp gratuitous-arp send interval***,配置發(fā)送免費ARP報文的時間間隔。
(5)配置ARP報文內(nèi)MAC地址一致性檢查,交換機使能該功能的配置方法如下。
執(zhí)行命令interface interface-type N/A,進入接口視圖。執(zhí)行命令arp validate{ sourcemac|destination-mac },使能ARP報文內(nèi)MAC地址一致性檢查功能。
(6)配置ARP報文合法性檢查,交換機使能該功能的配置方法如下。
執(zhí)行命令arp anti-attack packet-check{ip|dst-mac|sender-mac},使能ARP 報文合法性檢查功能,并指定ARP報文合法性檢查項。
(7)配置ARP表項嚴格學習,可以全局、接口使能該功能。
全局使能配置方法如下:執(zhí)行命令arp learning strict,配置全局ARP表項嚴格學習功能。在接口使能配置方法如下:執(zhí)行命令interface interface-type N/A,進 入接口視圖。執(zhí)行命令arp learning strict{force-enable|force-disable|trust},配置接口的ARP表項嚴格學習功能。
(8)配置DHCP觸發(fā)ARP學習,交換機使能該功能的配置方法如下。
執(zhí)行命令interface vlanif N/A,進入VLANIF接口視圖。
執(zhí)行命令arp learning dhcp-trigger,使能 DHCP 觸發(fā)ARP學習功能。