引言: 在企業的日常網絡管理中,網絡運維存在的一個問題主要集中在如何管理好用戶PC終端接入的IP地址和MAC地址,同時對端口進行實時數據流量的監測,以防止內部網絡出現DHCP攻擊或ARP(Address Resolution Protocol,地址解析協議)攻擊。若企業的網絡管理者能夠清晰地了解這些網絡接入設備的信息,對于內部電腦“誤開啟”DHCP Server服務或者內部PC中了病毒造成的ARP攻擊造成了網絡癱瘓時,網管員就可以更輕松地去處理解決。
如今,很多企業的網絡交換設備都開啟了DHCP功能,當PC終端通過RJ45接口接入網絡設備后,可以自動從DHCP Server獲取一個IP地址用于連接到內部局域網或通過路由器接入Internet,此時的接入設備的接口便自動識別并綁定了當前接入終端的MAC地址,但由于處于接入端的設備運行在數據鏈路層中,在其轉發的數據報里并不能封裝當前分配的IP地址,因此往往在調查其IP地址時還需要從三層交換設備中的ARP表中查詢,一旦遭受ARP攻擊,可能所有的接入設備會出現不能動態獲取到IP地址的情況,設備中的ARP表也會出現錯亂,造成企業的業務癱瘓甚至造成數據泄露。因此為了降低出現這種情況的概率,可以使用華為交換設備的DHCP snooping相關命令來控制每一個接入設備的接入權限,防止惡意的數據包干擾網絡網絡設備。(注:在本文的華為交換機案例中,DHCP Server為三層核心交換機)
當然現階段也有非常多分配靜態IP來上網的企業,一般情況下都會使用MAC+IP或MAC+IP+端口綁定來統一管理,靜態分配的IP地址在網絡設備中不會觸發DHCP snooping用戶綁定表的更新,只會在三層交換機中的arp表項中更新。這種管理方式安全性較高,但如此管理需要較多的人員來維護,每一位員工的接入設備都要關聯一個IP地址,對實時維護此表項的效率要求高,對于一般大于百人的企業并不是很適用。
D H C P Snooping包含了非常多的擴展命令,它的主要功能是將交換機的接口分為兩類,信任接口和非信任接口,開啟DHCP Snooping功能后,交換機開始對每一個端口進行監聽,針對DHCP報文,非信任接口只能夠轉發DHCP請求報文,丟棄掉其他DHCP報文,信任接口可以發送DHCP offer、ACK、NAK報文,這樣可以對信任端口下的合法DHCP服務器發出的報文進行保護,防止“假”的DHCP服務器干擾網絡運行環境。在用戶通過合法DHCP Server獲得一個IP地址后,交換機會建立一個用戶綁定表,以保存接入設備的IP地址、MAC地址、端口號、VLAN號、地址租約期等信息,通過此表管理員可以開啟端口IP檢測(IPSG)或動態ARP檢測(DAI)來禁止使用非法IP地址的人員接入內部網絡。以下通過一個配置實例對DHCP snooping的功能做一個具體說明。(華為設備配置案例)在企業的網絡中,禁止用戶自行使用靜態IP的方式上網:


不僅檢測IP報文方式可以實現這個功能,同樣的也可以檢測arp報文實現用養的功能,命令如下:

上邊檢查arp報文的命令經過筆者的測試,發現它的響應速度比IP檢測要慢一些,推斷是因為arp表項需要一定的老化時間,導致交換機不能及時地發現用戶綁定表項已經被清除。
通過DHCP獲取到IP地址后,接入交換機會記錄下接入設備的MAC地址和IP地址的綁定表,可用以下命令查看:


此時如果不能查詢到用戶綁定表信息的話,有可能是因為接入設備還沒有發送續租的報文,一般情況下,續租報文會在當前租約期還剩下50%的時候發送,當續租報文發送出后,接入交換機會立刻將用戶綁定表進行更新。若不想等待接入設備自動發送續租報文,可以在接入PC的管理員模式下運行cmd(命令提示符)在命令行中輸入“ipconfig /registerdns” 系統會自動刷新所有 DHCP 租約并重新注冊 DNS 名稱。除了PC之外的設備可以將下行口進行shutdown然后undo shutdown,大部分設備都會觸發發送DHCP租約報文。另外筆者發現,在用戶綁定表中同時標記了每一個接入設備IP地址租約的釋放到期時間,針對這個情況筆者嘗試將接入交換機時間調快了一分鐘,發現此表項被立即刷新,由于表項刷新,交換機在檢查此表時查不到任何設備信息,因此所有接入這個交換機的設備都斷開了連接,此時解決辦法可以將交換機所有接口全部重啟一遍,或者將接入終端網卡禁用、重新插網線均可重新連接上網絡。通過這個例子在這里要提醒各位讀者,為了保證網絡連接的穩定,交換機的系統時間不可以輕易去修改。顯然修改時間刷新這個表項只是一個筆者進行的一個測試,通過使用如下命令也是可以直接清除這個表項的:
同樣針對DHCP Snooping命令,在思科交換機中,筆者通過GNS3模擬器進行了模擬調試,并簡要介紹一下使用DHCP Snooping命令來防止三種DHCP攻擊的方法:

開啟此功能后,默認交換機所有的接口都處于DHCP Snooping 的 untrust區域,因此屏蔽掉了接入這些端口的DHCP服務器發出的offer、ack和nak報文。所以若想在這些接口中配置DHCP server,需要在服務器接入的端口配置如下命令:

將交換機連接合法的DHCP服務器的端口設置為trust模式后,該端口放行DHCP Server的相關報文,使得該服務器可以正常工作,通過這樣配置預防了DHCP的仿冒攻擊。
餓死攻擊是通過非法的DHCP服務器截取到合法的DHCP服務器的MAC地址后,通過發送discovery報文強行多次進行IP地址的獲取,最終導致DHCP地址池資源耗盡,正常的用戶不能獲取IP地址導致網絡癱瘓的攻擊。對于DHCP的餓死攻擊可以通過命令:

泛洪攻擊是通過攻擊者在單位時間內通過廣播向合法的DHCP服務器大量發送DHCP discover 報文,導致合法的服務器不能接受如此多的請求信息而癱瘓的攻擊。對于泛洪攻擊可以限制每秒鐘交換機接口轉發的DHCP discover報文數量來防范,命令如下:

以上兩個配置案例看出,通過使用DHCP snooping相關命令可以幫助管理員在管理MAC與IP地址上有一個很大的幫助,同時能夠防御針對DHCP的幾種攻擊,在一定程度上保證了企業網絡的安全與穩定。