DHCP工作原理概述
在學(xué)習(xí)DHCP Snooping之前,,我們需要先回顧一下DHCP的工作原理。下面從兩個(gè)場(chǎng)景分析DHCP工作原理
DHCP無中繼場(chǎng)景
DHCP無中繼場(chǎng)景
DHCP客戶端通過廣播DHCP Discover
報(bào)文來向局域網(wǎng)內(nèi)的DHCP服務(wù)器請(qǐng)求服務(wù),。
DHCP服務(wù)器根據(jù)自身配置的IP地址池,、相應(yīng)的子網(wǎng)掩碼和網(wǎng)關(guān)等信息,,通過DHCP Offer
報(bào)文應(yīng)答客戶端,。
若接受DHCP Offer報(bào)文中的配置,DHCP客戶端則廣播DHCP Request
報(bào)文以通告DHCP服務(wù)器和局域網(wǎng)內(nèi)其他主機(jī)其生效的IP地址,。
DHCP客戶端收到DHCP ACK報(bào)文,,會(huì)廣播發(fā)送免費(fèi)ARP報(bào)文,探測(cè)本網(wǎng)段是否有其他終端使用服務(wù)器分配的IP地址,。
DHCP有中繼場(chǎng)景
DHCP有中繼場(chǎng)景
DHCP中繼接收到DHCP客戶端廣播發(fā)送的DHCP DISCOVER報(bào)文后,,進(jìn)行如下處理:
?- 第1步:檢查DHCP報(bào)文中的hops字段,如果大于16,,則丟棄DHCP報(bào)文,;否則,,將hops字段加1(表明經(jīng)過一次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地址,源地址改為中繼連接客戶端的接口地址,,通過路由轉(zhuǎn)發(fā)將DHCP報(bào)文單播發(fā)送到DHCP服務(wù)器或下一跳中繼,。
”
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客戶端,。
”
中繼接收到來自客戶端的DHCP REQUEST報(bào)文的處理過程同"發(fā)現(xiàn)階段",。
中繼接收到來自服務(wù)器的DHCP ACK報(bào)文的處理過程同"提供階段"。
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)用的過程中遇到很多安全方面的問題,網(wǎng)絡(luò)中存在一些針對(duì)DHCP的攻擊,,如DHCP Server仿冒者攻擊,、DHCP Server的拒絕服務(wù)攻擊,、仿冒DHCP報(bào)文攻擊等。
- DHCP Snooping主要是通過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ù),無法正常通信,。DHCP Snooping信任功能可以控制DHCP服務(wù)器應(yīng)答報(bào)文的來源,,以防止網(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ā)給所有的信任接口,如果沒有其他信任接口,,則丟棄該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)系,故通過對(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功能用于防止:
根據(jù)不同的攻擊類型,,DHCP Snooping提供不同的工作模式,,如下表:
攻擊類型 | DHCP Snooping工作模式 |
---|
DHCP Server仿冒者工具 | 信任(trust)/不信任(Untrusted) |
中間人工具IP/MAC Spooping攻擊 | DHCP Snooping綁定 |
改變CHADDR值的Dos工具 | 檢查DHCP報(bào)文的CHADDR字段 |
DHCP Server仿冒者攻擊
攻擊原理:
由于DHCP請(qǐng)求報(bào)文以廣播形式發(fā)送,,所以DHCP Server仿冒者可以偵聽到此報(bào)文。DHCP Server仿冒者回應(yīng)給DHCP Client仿冒信息,,如錯(cuò)誤的網(wǎng)關(guān)地址,、錯(cuò)誤的DNS服務(wù)器、錯(cuò)誤的IP等,,達(dá)到DoS(Deny of Service)的目的,。解決方法:
- 為防止DHCP Server仿冒者攻擊,可使用DHCP Snooping的“信任(Trusted)/不信任(Untrusted)”工作模式,。
- 把某個(gè)物理接口或者VLAN的接口設(shè)置為“信任(Trusted)”或者“不信任(Untrusted)”,。
- 凡是從“不信任(Untrusted)”接口上收到的DHCP Reply(Offer、ACK,、NAK)報(bào)文直接丟棄,,這樣可以隔離DHCP Server仿冒者攻擊。
改變CHADDR值的DoS攻擊
攻擊原理:
攻擊者持續(xù)大量地向DHCP Server申請(qǐng)IP地址,,直到耗盡DHCP Server地址池中的IP地址,導(dǎo)致DHCP Server不能給正常的用戶進(jìn)行分配,。解決方法:
為了避免受到攻擊者改變CHADDR值的攻擊,,可以在設(shè)備上配置DHCP Snooping功能,檢查DHCP Request報(bào)文中CHADDR字段,。如果該字段跟數(shù)據(jù)幀頭部的源MAC相匹配,,轉(zhuǎn)發(fā)報(bào)文;否則,,丟棄報(bào)文,。從而保證合法用戶可以正常使用網(wǎng)絡(luò)服務(wù)。
DHCP中間人攻擊
攻擊原理:
攻擊者利用ARP機(jī)制,,讓Client學(xué)習(xí)到DHCP Server IP與Attacker MAC的映射關(guān)系,,又讓Server學(xué)習(xí)到Client IP與Attacker Mac的映射關(guān)系。如此一來,,Client與Server之間交互的IP報(bào)文都會(huì)經(jīng)過攻擊者中轉(zhuǎn),。從本質(zhì)上講,中間人攻擊是一種Spoofing IP/MAC攻擊,,中間人利用了虛假的IP地址與MAC地址之間的映射關(guān)系來同時(shí)欺騙DHCP的客戶端和服務(wù)器,。解決方法:
為防御中間人攻擊與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配置命令介紹
[Huawei] dhcp snooping enable [ ipv4 | ipv6 ]
[Huawei-vlan2] dhcp snooping enable
?在VLAN視圖下執(zhí)行此命令,,則對(duì)設(shè)備所有接口接收到的屬于該VLAN的DHCP報(bào)文命令功能生效
”
[Huawei-vlan2] dhcp snooping trusted interface interface-type interface-number
?在VLAN視圖下執(zhí)行此命令,則命令功能僅對(duì)加入該VLAN的接口收到的屬于此VLAN的DHCP報(bào)文生效,。
”
[Huawei-GigabitEthernet0/0/1] dhcp snooping enable
[Huawei-GigabitEthernet0/0/1] dhcp snooping trusted
?缺省情況下,,設(shè)備接口為非信任狀態(tài)。
”
- (可選)配置丟棄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功能。
”
[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
[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 ------