安全與合規

ARP 攻擊防禦措施:IP-MAC 繫結、DAI 與連接埠隔離怎麼配

機房級的 ARP 攻擊防禦要做在交換器上,而不是指望每台伺服器裝 ARP 防火牆:用 DAI 或靜態繫結校驗每一個 ARP 報文,用連接埠隔離或客戶 VLAN 讓欺騙報文根本到不了別人,在閘道器上把關鍵 ARP 表項固定。伺服器側繫結閘道器 MAC 只是最後一道補充。

作者 頂聯產品團隊發布於 5 分鐘閱讀

ARP 攻擊防禦措施在機房裡要按“交換器為主、閘道器為輔、伺服器補充”來做:交換器上啟用 DHCP Snooping 與 DAI(動態 ARP 檢測)或靜態 IP-MAC-連接埠繫結,讓偽造的 ARP 報文在接入口就被丟棄;同一 VLAN 內的客戶之間做連接埠隔離,或者乾脆每個客戶一個 VLAN;閘道器上固定關鍵伺服器的 ARP 表項並防止閘道器位址被冒用;伺服器上再把閘道器 MAC 綁死。下面先看攻擊在機房裡長什麼樣,再逐項給配置。

ARP 攻擊在機房裡長什麼樣

ARP 協議沒有認證,誰都可以在二層廣播“某個 IP 對應我的 MAC”。在 IDC 環境裡,攻擊者通常是同一 VLAN 裡一台被入侵的客戶機,典型後果有兩種:

  • 冒充閘道器:向全 VLAN 廣播“閘道器 IP 對應我的 MAC”,其他客戶的出向流量被劫持到攻擊機,表現為大面積掉線、延遲飆升、HTTPS 證書告警;
  • 冒充某台伺服器(IP 盜用):宣告別人的公網 IP 對應自己的 MAC,搶佔 IP 或製造衝突。

排查時看兩處:伺服器上 ip neigh show 看到的閘道器 MAC 與交換器上聯口後面的閘道器 MAC 是否一致;交換器 MAC 表裡閘道器 MAC 是否出現在了某個接入口上。

# 伺服器側:閘道器 MAC 是否被改寫
ip neigh show 103.45.12.1
# 華為:這個 MAC 是從哪個連接埠學到的
display mac-address 0011-2233-4455
# 思科
show mac address-table address 0011.2233.4455

防禦措施一覽

措施 部署位置 防住什麼 前提與代價
DHCP Snooping + DAI 接入交換器 與繫結表不符的 ARP 報文 靜態 IP 需要手工加繫結;繫結不全會誤斷
靜態 IP-MAC-連接埠繫結 + IP Source Guard 接入交換器 ARP 欺騙與源 IP 偽造 換網路卡、換連接埠都要改配置,靠台帳維護
連接埠隔離 / 每客戶 VLAN 接入交換器 欺騙報文根本到不了同段其他客戶 同段客戶互訪要經閘道器轉發
閘道器側防護 三層交換器或路由器 閘道器 IP 被冒用、閘道器 ARP 表被刷 需要裝置支援相應特性
伺服器側繫結閘道器 MAC 每台伺服器 本機被劫持出向流量 只保護自己,閘道器換裝置後要改

措施一:DHCP Snooping 與 DAI

DHCP Snooping 透過監聽 DHCP 互動建立“IP-MAC-連接埠-VLAN”繫結表,DAI 用這張表校驗每一個 ARP 報文,對不上就丟棄。上聯口要設為信任連接埠,否則閘道器的 ARP 應答也會被攔。IP Source Guard 則用同一張表校驗 IP 報文的源位址,把源位址偽造也一起擋掉。

思科 IOS 的配置:

ip dhcp snooping
ip dhcp snooping vlan 100
ip arp inspection vlan 100
! 同時校驗 ARP 報文裡的源 MAC、目的 MAC 和 IP 合法性
ip arp inspection validate src-mac dst-mac ip
!
interface GigabitEthernet1/0/48
 description uplink
 ip dhcp snooping trust
 ip arp inspection trust
!
interface GigabitEthernet1/0/1
 switchport access vlan 100
 ! 每秒超過 15 個 ARP 報文即認為異常,連接埠進入 err-disabled
 ip arp inspection limit rate 15
 ip verify source

華為 S 系列的配置:

dhcp enable
dhcp snooping enable
#
vlan 100
 dhcp snooping enable
 arp anti-attack check user-bind enable
#
interface GigabitEthernet0/0/48
 description uplink
 dhcp snooping trusted
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 100
 arp anti-attack check user-bind enable
 ip source check user-bind enable
 arp anti-attack rate-limit enable
 arp anti-attack rate-limit packet 10

驗證命令:思科 show ip dhcp snooping binding、show ip arp inspection statistics;華為 display dhcp snooping user-bind all、display arp anti-attack statistics check user-bind interface GigabitEthernet0/0/1。統計裡的丟包數持續增長,就說明有連接埠在發偽造報文。命令細節以裝置型號和軟體版本的官方文件為準。

措施二:靜態 IP-MAC-連接埠繫結

機房裡的公網 IP 絕大多數是靜態配置,Snooping 學不到,必須手工寫入繫結表,DAI 和 IP Source Guard 才有依據。

! 思科:把靜態 IP 的伺服器加入繫結表
ip source binding 0011.2233.4455 vlan 100 103.45.12.10 interface GigabitEthernet1/0/1
# 華為:系統檢視下新增靜態繫結
user-bind static ip-address 103.45.12.10 mac-address 0011-2233-4455 interface GigabitEthernet0/0/1 vlan 100

如果只想限制連接埠後面的 MAC 而不校驗 IP,可以用連接埠安全或靜態 MAC 表項:

! 思科:連接埠只允許一個指定 MAC
interface GigabitEthernet1/0/1
 switchport mode access
 switchport port-security
 switchport port-security maximum 1
 switchport port-security mac-address 0011.2233.4455
 switchport port-security violation restrict
# 華為:靜態 MAC 表項
mac-address static 0011-2233-4455 GigabitEthernet0/0/1 vlan 100

靜態繫結的難點不在命令,而在維護:客戶換網路卡、伺服器遷移連接埠、IP 回收再分配,每一次都要同步改交換器,漏改一次就是一個斷網工單。這也是後面要講台帳的原因。

措施三:連接埠隔離與客戶 VLAN

繫結是“校驗”,隔離是“不讓它到達”。兩種做法:

  • 每客戶一個 VLAN:廣播域徹底分開,ARP 欺騙只能在自己的 VLAN 裡發生,影響不到別人。代價是每個 VLAN 要單獨規劃閘道器和位址段,一個 /29 分給一個客戶時位址利用率不高;
  • 連接埠隔離:多個客戶共用一個公網 /24 時,把接入口加入同一個隔離組,接入口之間二層不通,只能與上聯口通訊。華為預設的隔離模式(port-isolate mode l2)是二層隔離、三層可互通,同段客戶互訪只能經閘道器轉發。
# 華為:接入口加入隔離組 1
interface GigabitEthernet0/0/1
 port-isolate enable group 1
! 思科:受保護連接埠,同一交換器上的受保護連接埠之間不轉發
interface GigabitEthernet1/0/1
 switchport protected

思科的受保護連接埠只在單台交換器內生效,跨交換器隔離要用私有 VLAN(PVLAN);華為側對應的還有 MUX VLAN 和 Super VLAN,用來在共享一個閘道器的同時隔離客戶。

隔離之後,同段客戶之間連 ARP 請求都收不到,預設互相不通。如果確實需要同段互訪,要在閘道器的 VLAN 介面上開啟 VLAN 內代理 ARP(華為 VLANIF 下 arp-proxy inner-sub-vlan-proxy enable,思科 SVI 下 ip local-proxy-arp),由閘道器代答 ARP 後再做三層轉發。託管場景下客戶之間本來就不該互訪,一般不用開。

措施四:閘道器側防護

閘道器是被冒充的頭號目標,三層交換器上做三件事:

# 華為,系統檢視
# 發現有人宣告閘道器 IP 時告警並丟棄
arp anti-attack gateway-duplicate enable
# 已學到的 ARP 表項 MAC 不被後續報文改寫
arp anti-attack entry-check fixed-mac enable
# 定期傳送免費 ARP,重新整理下游對閘道器 MAC 的記憶
arp gratuitous-arp-sending enable
# 關鍵伺服器寫成靜態 ARP
arp static 103.45.12.10 0011-2233-4455 vid 100 interface GigabitEthernet0/0/1
! 思科:靜態 ARP
arp 103.45.12.10 0011.2233.4455 arpa

閘道器側的靜態 ARP 與接入交換器的靜態繫結是一套資料的兩個方向:前者保證閘道器找伺服器不會被騙,後者保證伺服器找閘道器不會被騙。

措施五:伺服器側繫結閘道器 MAC

這一步只能保護本機,但在客戶機上做起來成本很低,適合寫進交付文件:

# Linux:把閘道器 ARP 表項設為永久
ip neigh replace 103.45.12.1 lladdr 00:aa:bb:cc:dd:ee dev eth0 nud permanent
# 開機自動執行時寫進網路指令碼或 systemd 單元
:: Windows:管理員許可權
netsh interface ipv4 add neighbors "Ethernet" 103.45.12.1 00-aa-bb-cc-dd-ee

閘道器裝置更換或做了主備切換、MAC 變化時,這條繫結會讓伺服器斷網,所以機房側一定要把閘道器 MAC 的變更納入變更通知。

在 IPAM 裡維護繫結台帳怎麼落地

前面四類措施的共同前提是:每個 IP 對應哪個 MAC、接在哪台交換器的哪個連接埠、屬於哪個 VLAN,必須有一份準確的台帳,並且交換器上的繫結要隨台帳變化而變化。用 Excel 維護,幾個月後就會和現網對不上。落地的做法:

  1. 在 IPAM 裡以 IP 為主鍵記錄歸屬伺服器、客戶、MAC、交換器與連接埠、VLAN、繫結狀態,IP 段本身記錄所在 VLAN 和閘道器裝置;
  2. 把繫結動作掛在 IP 的生命週期上:分配給伺服器時下發繫結,回收時刪除繫結,換網路卡時更新繫結,不允許繞過系統手工改交換器;
  3. 定期把交換器上的繫結表(display dhcp snooping user-bind all、show ip source binding)匯出與台帳比對,差異條目逐一處理;
  4. 新客戶上線的檢查單里加一條“繫結已下發並驗證”,用 ip neigh 和交換器統計確認。

Toplink DCIM 的 IP 位址管理按段登記位址,每個段記錄所在 VLAN 和閘道器掛在哪台交換器上,IP 分配給伺服器後,伺服器列表裡直接顯示它接在哪台交換器的哪個連接埠和 VLAN;交換器管理裡的 ARP 繫結與源位址校驗在網頁上填寫,由系統按華為、H3C、思科等廠商的指令集翻譯成命令下發,MAC 位址可以自動學習並繫結,換線、遷移時不需要再人工核對。台帳和交換器配置出自同一處,前面那些“漏改一次就斷網”的問題就不再靠人的記性了。

常見問題

DHCP Snooping 對靜態 IP 的伺服器有用嗎?

本身沒有用,Snooping 只能從 DHCP 互動中學到繫結關係。機房裡的公網 IP 大多是靜態配置的,需要用靜態繫結命令把 IP、MAC、連接埠、VLAN 手工加進繫結表,DAI 和 IP Source Guard 才能據此校驗。

開了 DAI 之後客戶突然全斷網是怎麼回事?

DAI 會丟棄與繫結表不匹配的 ARP 報文,如果某個連接埠還沒有繫結條目,這個連接埠上的所有 ARP 都會被丟掉。正確順序是先把繫結表補齊並核對,再在 VLAN 上啟用 DAI,上聯口記得設為信任連接埠。

每個客戶一個 VLAN 和連接埠隔離選哪個?

位址夠用、交換器 VLAN 數量夠用時,優先每客戶一個 VLAN,廣播域徹底分開;多個客戶共用一個公網段時用連接埠隔離,接入口之間二層不通、只能與上聯口通訊,同樣能擋住欺騙報文。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88