別讓黑客悄悄侵入你的網(wǎng)絡(luò):深入解析DHCP Snooping
一、DHCP工作原理概述
在學(xué)習(xí)DHCP Snooping之前,我們需要先回顧一下DHCP的工作原理。下面從兩個(gè)場(chǎng)景分析DHCP工作原理
1.DHCP無(wú)中繼場(chǎng)景
DHCP無(wú)中繼場(chǎng)景
(1) 發(fā)現(xiàn)階段
DHCP客戶端通過(guò)廣播DHCP Discover報(bào)文來(lái)向局域網(wǎng)內(nèi)的DHCP服務(wù)器請(qǐng)求服務(wù)。
(2) 提供階段
DHCP服務(wù)器根據(jù)自身配置的IP地址池、相應(yīng)的子網(wǎng)掩碼和網(wǎng)關(guān)等信息,通過(guò)DHCP Offer報(bào)文應(yīng)答客戶端。
(3) 請(qǐng)求階段
若接受DHCP Offer報(bào)文中的配置,DHCP客戶端則廣播DHCP Request報(bào)文以通告DHCP服務(wù)器和局域網(wǎng)內(nèi)其他主機(jī)其生效的IP地址。
() 確認(rèn)階段
DHCP客戶端收到DHCP ACK報(bào)文,會(huì)廣播發(fā)送免費(fèi)ARP報(bào)文,探測(cè)本網(wǎng)段是否有其他終端使用服務(wù)器分配的IP地址。
2.DHCP有中繼場(chǎng)景
DHCP有中繼場(chǎng)景
(1) 發(fā)現(xiàn)階段
DHCP中繼接收到DHCP客戶端廣播發(fā)送的DHCP DISCOVER報(bào)文后,進(jìn)行如下處理:
- 第1步:檢查DHCP報(bào)文中的hops字段,如果大于16,則丟棄DHCP報(bào)文;否則,將hops字段加1(表明經(jīng)過(guò)一次DHCP中繼),并繼續(xù)第2步的操作。
- 第2步:檢查DHCP報(bào)文中的giaddr字段。如果是0,將giaddr字段設(shè)置為接收DHCP DISCOVER報(bào)文的接口IP地址。如果不是0,則不修改該字段,繼續(xù)第3步的操作。
- 第3步:將DHCP報(bào)文的目的IP地址改為DHCP服務(wù)器或下一跳中繼的IP地址,源地址改為中繼連接客戶端的接口地址,通過(guò)路由轉(zhuǎn)發(fā)將DHCP報(bào)文單播發(fā)送到DHCP服務(wù)器或下一跳中繼。
(2) 提供階段
DHCP服務(wù)器接收到DHCP DISCOVER報(bào)文后,選擇與報(bào)文中g(shù)iaddr字段為同一網(wǎng)段的地址池,并為客戶端分配IP地址等參數(shù),然后向giaddr字段標(biāo)識(shí)的DHCP中繼單播發(fā)送DHCP OFFER報(bào)文。
DHCP中繼收到DHCP OFFER報(bào)文后,會(huì)進(jìn)行如下處理:
- 第1步:檢查報(bào)文中的giaddr字段,如果不是接口的地址,則丟棄該報(bào)文;否則,繼續(xù)下面的操作。
- 第2步:DHCP中繼檢查報(bào)文的廣播標(biāo)志位。如果廣播標(biāo)志位為1,則將DHCP OFFER報(bào)文廣播發(fā)送給DHCP客戶端;否則將DHCP OFFER報(bào)文單播發(fā)送給DHCP客戶端。
(3) 請(qǐng)求階段
中繼接收到來(lái)自客戶端的DHCP REQUEST報(bào)文的處理過(guò)程同"發(fā)現(xiàn)階段"。
(4) 確認(rèn)階段
中繼接收到來(lái)自服務(wù)器的DHCP ACK報(bào)文的處理過(guò)程同"提供階段"。
二、DHCP Snooping概述
為了保證網(wǎng)絡(luò)通信業(yè)務(wù)的安全性,引入了DHCP Snooping技術(shù),在DHCP Client和DHCP Server之間建立一道防火墻,以抵御網(wǎng)絡(luò)中針對(duì)DHCP的各種攻擊。
DHCP Snooping是DHCP的一種安全特性,用于保證DHCP客戶端從合法的DHCP服務(wù)器獲取IP地址。DHCP 服務(wù)器記錄DHCP客戶端IP地址與MAC地址等參數(shù)的對(duì)應(yīng)關(guān)系,防止網(wǎng)絡(luò)上針對(duì)DHCP攻擊。
目前DHCP協(xié)議在應(yīng)用的過(guò)程中遇到很多安全方面的問(wèn)題,網(wǎng)絡(luò)中存在一些針對(duì)DHCP的攻擊,如DHCP Server仿冒者攻擊、DHCP Server的拒絕服務(wù)攻擊、仿冒DHCP報(bào)文攻擊等。
DHCP Snooping主要是通過(guò)DHCP Snooping信任功能和DHCP Snooping綁定表實(shí)現(xiàn)DHCP網(wǎng)絡(luò)安全。
DHCP Snooping信任功能
DHCP Snooping的信任功能,能夠保證客戶端從合法的服務(wù)器獲取IP(Internet Protocol)地址。
如下圖所示,網(wǎng)絡(luò)中如果存在私自架設(shè)的DHCP Server仿冒者,則可能導(dǎo)致DHCP客戶端獲取錯(cuò)誤的IP地址和網(wǎng)絡(luò)配置參數(shù),無(wú)法正常通信。DHCP Snooping信任功能可以控制DHCP服務(wù)器應(yīng)答報(bào)文的來(lái)源,以防止網(wǎng)絡(luò)中可能存在的DHCP Server仿冒者為DHCP客戶端分配IP地址及其他配置信息。
DHCP Snooping信任功能示意圖
DHCP Snooping信任功能將接口分為信任接口和非信任接口:
- 信任接口正常接收DHCP服務(wù)器響應(yīng)的DHCP ACK、DHCP NAK和DHCP Offer報(bào)文。
- 非信任接口收到的DHCP Server發(fā)送的DHCP OFFER、DHCP ACK、DHCP NAK報(bào)文會(huì)被直接丟棄。
- 配置dhcp snooping enable命令的接口,收到DHCP請(qǐng)求報(bào)文后,轉(zhuǎn)發(fā)給所有的信任接口;收到DHCP響應(yīng)報(bào)文后丟棄。
- 配置dhcp snooping trusted命令的接口,收到DHCP請(qǐng)求報(bào)文后,轉(zhuǎn)發(fā)給所有的信任接口,如果沒(méi)有其他信任接口,則丟棄該DHCP請(qǐng)求報(bào)文;收到DHCP響應(yīng)報(bào)文后,只轉(zhuǎn)發(fā)給連接對(duì)應(yīng)客戶端的并且配置命令dhcp snooping enable的接口,如果查不到上述接口,則丟棄該DHCP響應(yīng)報(bào)文。
三、DHCP Snooping綁定表
DHCP Snooping綁定表功能示意圖
二層接入設(shè)備使能了DHCP Snooping功能后,從收到DHCP ACK報(bào)文中提取關(guān)鍵信息(包括PC的MAC地址以及獲取到的IP地址、地址租期),并獲取與PC連接的使能了DHCP Snooping功能的接口信息(包括接口編號(hào)及該接口所屬的VLAN),根據(jù)這些信息生成DHCP Snooping綁定表。
由于DHCP Snooping綁定表記錄了DHCP客戶端IP地址與MAC地址等參數(shù)的對(duì)應(yīng)關(guān)系,故通過(guò)對(duì)報(bào)文與DHCP Snooping綁定表進(jìn)行匹配檢查,能夠有效防范非法用戶的攻擊。
DHCP Snooping綁定表根據(jù)DHCP租期進(jìn)行老化或根據(jù)用戶釋放IP地址時(shí)發(fā)出的DHCP Release報(bào)文自動(dòng)刪除對(duì)應(yīng)表項(xiàng)。
四、DHCP Snooping 的作用
DHCP Snooping功能用于防止:
- DHCP Server仿冒者攻擊
- 中間人攻擊與IP/MAC Spooping攻擊
- 改變CHADDR值的DoS攻擊
根據(jù)不同的攻擊類(lèi)型,DHCP Snooping提供不同的工作模式,如下表:
1.DHCP Server仿冒者攻擊
(1) 攻擊原理:
由于DHCP請(qǐng)求報(bào)文以廣播形式發(fā)送,所以DHCP Server仿冒者可以偵聽(tīng)到此報(bào)文。DHCP Server仿冒者回應(yīng)給DHCP Client仿冒信息,如錯(cuò)誤的網(wǎng)關(guān)地址、錯(cuò)誤的DNS服務(wù)器、錯(cuò)誤的IP等,達(dá)到DoS(Deny of Service)的目的。
(2) 解決方法:
- 為防止DHCP Server仿冒者攻擊,可使用DHCP Snooping的“信任(Trusted)/不信任(Untrusted)”工作模式。
- 把某個(gè)物理接口或者VLAN的接口設(shè)置為“信任(Trusted)”或者“不信任(Untrusted)”。
- 凡是從“不信任(Untrusted)”接口上收到的DHCP Reply(Offer、ACK、NAK)報(bào)文直接丟棄,這樣可以隔離DHCP Server仿冒者攻擊。
2.改變CHADDR值的DoS攻擊
(1) 攻擊原理:
攻擊者持續(xù)大量地向DHCP Server申請(qǐng)IP地址,直到耗盡DHCP Server地址池中的IP地址,導(dǎo)致DHCP Server不能給正常的用戶進(jìn)行分配。
(2) 解決方法:
為了避免受到攻擊者改變CHADDR值的攻擊,可以在設(shè)備上配置DHCP Snooping功能,檢查DHCP Request報(bào)文中CHADDR字段。如果該字段跟數(shù)據(jù)幀頭部的源MAC相匹配,轉(zhuǎn)發(fā)報(bào)文;否則,丟棄報(bào)文。從而保證合法用戶可以正常使用網(wǎng)絡(luò)服務(wù)。
3.DHCP中間人攻擊
(1) 攻擊原理:
攻擊者利用ARP機(jī)制,讓Client學(xué)習(xí)到DHCP Server IP與Attacker MAC的映射關(guān)系,又讓Server學(xué)習(xí)到Client IP與Attacker Mac的映射關(guān)系。如此一來(lái),Client與Server之間交互的IP報(bào)文都會(huì)經(jīng)過(guò)攻擊者中轉(zhuǎn)。從本質(zhì)上講,中間人攻擊是一種Spoofing IP/MAC攻擊,中間人利用了虛假的IP地址與MAC地址之間的映射關(guān)系來(lái)同時(shí)欺騙DHCP的客戶端和服務(wù)器。
(2) 解決方法:
為防御中間人攻擊與IP/MAC Spoofing攻擊,可使用DHCP Snooping的綁定表工作模式,當(dāng)接口接收到ARP或者IP報(bào)文,使用ARP或者IP報(bào)文中的“源IP+源MAC”匹配DHCP Snooping綁定表。如果匹配就進(jìn)行轉(zhuǎn)發(fā),如果不匹配就丟棄。
五、DHCP Snooping配置命令介紹
(1) 全局使能DHCP Snooping功能:
[Huawei] dhcp snooping enable [ ipv4 | ipv6 ]
(2) VLAN視圖下使能DHCP Snooping功能:
[Huawei-vlan2] dhcp snooping enable
在VLAN視圖下執(zhí)行此命令,則對(duì)設(shè)備所有接口接收到的屬于該VLAN的DHCP報(bào)文命令功能生效。
(3) VLAN視圖下配置接口為“信任”狀態(tài)\
[Huawei-vlan2] dhcp snooping trusted interface interface-type interface-number
在VLAN視圖下執(zhí)行此命令,則命令功能僅對(duì)加入該VLAN的接口收到的屬于此VLAN的DHCP報(bào)文生效。
(4) 接口視圖下使能DHCP Snooping功能
[Huawei-GigabitEthernet0/0/1] dhcp snooping enable
(5) 接口視圖下配置接口為“信任”狀態(tài)
[Huawei-GigabitEthernet0/0/1] dhcp snooping trusted
缺省情況下,設(shè)備接口為非信任狀態(tài)。
(6)(可選)配置丟棄GIADDR字段非零的DHCP報(bào)文
[Huawei] dhcp snooping check dhcp-giaddr enable vlan { vlan-id1 [ to vlan-id2 ] }
使能檢測(cè)DHCP Request報(bào)文中GIADDR字段是否非零的功能。此命令同時(shí)可以在VLAN視圖或接口視圖下進(jìn)行配置。在VLAN視圖下執(zhí)行此命令,則對(duì)設(shè)備所有接口接收到的屬于該VLAN的DHCP報(bào)文命令功能生效;在接口下執(zhí)行該命令,則對(duì)該接口下的所有DHCP報(bào)文命令功能生效。
六、DHCP Snooping配置舉例
如圖所示,DHCP和VLAN基礎(chǔ)配置已完成,在Switch配置DHCP Snooping功能。
(1) 配置方式一:接口視圖
[Switch] dhcp snooping enable ipv4
[Switch] interface GigabitEthernet 0/0/1
[Switch-GigabitEthernet0/0/1] dhcp snooping enable
[Switch] interface GigabitEthernet 0/0/2
[Switch-GigabitEthernet0/0/2] dhcp snooping enable
[Switch] interface GigabitEthernet 0/0/3
[Switch-GigabitEthernet0/0/3] dhcp snooping enable
[Switch-GigabitEthernet0/0/3] dhcp snooping trusted
(2) 配置方式二:VLAN視圖
[Switch] dhcp snooping enable ipv4
[Switch] vlan 2
[Switch-vlan2] dhcp snooping enable
[Switch] interface GigabitEthernet 0/0/3
[Switch-GigabitEthernet0/0/3] dhcp snooping trusted
配置驗(yàn)證執(zhí)行命令display dhcp snooping interface,查看接口下的DHCP Snooping運(yùn)行信息。
[Switch]display dhcp snooping interface GigabitEthernet 0/0/3
DHCP snooping running information for interface GigabitEthernet0/0/3 :
DHCP snooping : Enable
Trusted interface : Yes
Dhcp user max number : 1024 (default)
Current dhcp user number : 0
Check dhcp-giaddr : Disable (default)
Check dhcp-chaddr : Disable (default)
Alarm dhcp-chaddr : Disable (default)
Check dhcp-request : Disable (default)
Alarm dhcp-request : Disable (default)
----- more ------