前言
DHCP Snooping是DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)的一種安全特性,用於保證DHCP客戶端從合法的DHCP服務器獲取IP地址,並記錄DHCP客戶端IP地址與MAC地址等參數的對應關係。DHCP Snooping可以抵禦網絡中針對DHCP的各種攻擊,為用戶提供更安全的網絡環境和更穩定的網絡服務。
01
為什麼需要DHCP Snooping?
目前DHCP協議(RFC2131)在應用的過程中遇到很多安全方面的問題,網絡中存在一些針對DHCP的攻擊,如DHCP Server仿冒者攻擊、DHCP Server的拒絕服務攻擊、仿冒DHCP報文攻擊等。為了保證網絡通信業務的安全性,引入DHCP Snooping技術。在DHCP Client和DHCP Server之間建立一道防火牆,以抵禦網絡中針對DHCP的各種攻擊。
02
DHCP Snooping應用場景有哪些?
2.1 防止DHCP Server仿冒者攻擊導致用戶獲取到錯誤的IP地址和網絡參數
攻擊原理
由於DHCP Server和DHCP Client之間沒有認證機制,所以如果在網絡上隨意添加一台DHCP服務器,它就可以為客戶端分配IP地址以及其他網絡參數。如果該DHCP服務器為用戶分配錯誤的IP地址和其他網絡參數,將會對網絡造成非常大的危害。
如下圖所示,DHCP Discover報文是以廣播形式發送,無論是合法的DHCP Server,還是非法的DHCP Server都可以接收到DHCP Client發送的DHCP Discover報文。

DHCP Client發送DHCP Discover報文示意圖
如果此時DHCP Server仿冒者回應給DHCP Client仿冒信息,如錯誤的網關地址、錯誤的DNS(Domain Name System)服務器、錯誤的IP等信息,如圖2所示。DHCP Client將無法獲取正確的IP地址和相關信息,導致合法客戶無法正常訪問網絡或信息安全受到嚴重威脅。

圖1-3DHCP Server仿冒者攻擊示意圖
解決方法
為了防止DHCP Server仿冒者攻擊,可配置設備接口的「信任(Trusted)/非信任(Untrusted)」工作模式。
將與合法DHCP服務器直接或間接連接的接口設置為信任接口,其他接口設置為非信任接口。此後,從「非信任(Untrusted)」接口上收到的DHCP回應報文將被直接丟棄,這樣可以有效防止DHCP Server仿冒者的攻擊。如下圖所示。

圖1-4Trusted/Untrusted工作模式示意圖
2.2 防止非DHCP用戶攻擊導致合法用戶無法正常使用網絡
攻擊原理
在DHCP網絡中,靜態獲取IP地址的用戶(非DHCP用戶)對網絡可能存在多種攻擊,譬如仿冒DHCP Server、構造虛假DHCP Request報文等。這將為合法DHCP用戶正常使用網絡帶來了一定的安全隱患。
解決方法
為了有效的防止非DHCP用戶攻擊,可開啟設備根據DHCP Snooping綁定表生成接口的靜態MAC表項功能。
之後,設備將根據接口下所有的DHCP用戶對應的DHCP Snooping綁定表項自動執行命令生成這些用戶的靜態MAC表項,並同時關閉接口學習動態MAC表項的能力。此時,只有源MAC與靜態MAC表項匹配的報文才能夠通過該接口,否則報文會被丟棄。因此對於該接口下的非DHCP用戶,只有管理員手動配置了此類用戶的靜態MAC表項其報文才能通過,否則報文將被丟棄。
動態MAC表項是設備自動學習並生成的,靜態MAC表項則是根據命令配置而成的。MAC表項中包含用戶的MAC、所屬VLAN、連接的接口號等信息,設備可根據MAC表項對報文進行二層轉發。
2.3 防止DHCP報文泛洪攻擊導致設備無法正常工作
攻擊原理
在DHCP網絡環境中,若攻擊者短時間內向設備發送大量的DHCP報文,將會對設備的性能造成巨大的衝擊以致可能會導致設備無法正常工作。
解決方法
為了有效的防止DHCP報文泛洪攻擊,在使能設備的DHCP Snooping功能時,可同時使能設備對DHCP報文上送DHCP報文處理單元的速率進行檢測的功能。此後,設備將會檢測DHCP報文的上送速率,並僅允許在規定速率內的報文上送至DHCP報文處理單元,而超過規定速率的報文將會被丟棄。
2.3 防止仿冒DHCP報文攻擊導致合法用戶無法獲得IP地址或異常下線
攻擊原理
已獲取到IP地址的合法用戶通過向服務器發送DHCP Request或DHCP Release報文用以續租或釋放IP地址。如果攻擊者冒充合法用戶不斷向DHCP Server發送DHCP Request報文來續租IP地址,會導致這些到期的IP地址無法正常回收,以致一些合法用戶不能獲得IP地址;而若攻擊者仿冒合法用戶的DHCP Release報文發往DHCP Server,將會導致用戶異常下線。
解決方法
為了有效的防止仿冒DHCP報文攻擊,可利用DHCP Snooping綁定表的功能。設備通過將DHCP Request續租報文和DHCP Release報文與綁定表進行匹配操作能夠有效的判別報文是否合法(主要是檢查報文中的VLAN、IP、MAC、接口信息是否匹配動態綁定表),若匹配成功則轉發該報文,匹配不成功則丟棄。
2.4 防止DHCP Server服務拒絕攻擊導致部分用戶無法上線
攻擊原理
如下圖所示,若設備接口if1下存在大量攻擊者惡意申請IP地址,會導致DHCP Server中IP地址快速耗盡而不能為其他合法用戶提供IP地址分配服務。
另一方面,DHCP Server通常僅根據DHCP Request報文中的CHADDR(Client Hardware Address)字段來確認客戶端的MAC地址。如果某一攻擊者通過不斷改變CHADDR字段向DHCP Server申請IP地址,同樣將會導致DHCP Server上的地址池被耗盡,從而無法為其他正常用戶提供IP地址。

圖1-5DHCP Server服務拒絕攻擊示意
解決方法
為了抑制大量DHCP用戶惡意申請IP地址,在使能設備的DHCP Snooping功能後,可配置設備或接口允許接入的最大DHCP用戶數,當接入的用戶數達到該值時,則不再允許任何用戶通過此設備或接口成功申請到IP地址。而對通過改變DHCP Request報文中的CHADDR字段方式的攻擊,可使能設備檢測DHCP Request報文幀頭MAC與DHCP數據區中CHADDR字段是否一致功能,此後設備將檢查上送的DHCP Request報文中的幀頭MAC地址是否與CHADDR值相等,相等則轉發,否則丟棄。
2.5 通過LDRA功能感知用戶位置信息
LDRA稱為輕量級DHCPv6中繼代理,該中繼代理能夠記錄用戶位置信息並將其發送到DHCPv6 Server,從而使得DHCPv6 Server能夠獲取到用戶詳細的物理位置信息,以實現對用戶客戶端部署諸如地址分配、計費、接入控制等策略。
如圖1所示,用戶通過DHCPv6方式獲取IPv6地址。在管理員部署該網絡時需要限制接口interface1下的用戶對網絡資源的訪問以提高網絡的安全性。

LDRA應用組網圖
在傳統的DHCPv6動態分配IPv6地址過程中,DHCPv6 Server無法獲取到用戶詳細的物理位置信息,以致不能為interface1接口下的用戶部署地址分配、接入控制等策略。
為解決上述問題,管理員在使能Switch的DHCP Snooping功能之後,可使能其LDRA功能。這樣,Switch既能夠獲取用戶詳細的位置信息並將其發送到DHCPv6 Server。DHCPv6 Server即可根據用戶的詳細位置信息為其部署地址分配策略或其他安全策略。
LDRA功能僅是記錄了DHCPv6用戶的詳細位置信息並通過RELAY-FORW報文將該信息發送給DHCPv6 Server,對不同的用戶部署諸如地址分配、計費、接入控制等策略,由DHCPv6 Server實現。
03
DHCP Snooping是如何工作的?
DHCP Snooping分為DHCPv4 Snooping和DHCPv6 Snooping,兩者實現原理相似,以下以DHCPv4 Snooping為例進行描述。使能了DHCP Snooping的設備將用戶(DHCP客戶端)的DHCP請求報文通過信任接口發送給合法的DHCP服務器。之後設備根據DHCP服務器回應的DHCP ACK報文信息生成DHCP Snooping綁定表。後續設備再從使能了DHCP Snooping的接口接收用戶發來的DHCP報文時,會進行匹配檢查,能夠有效防範非法用戶的攻擊。
3.1 DHCP Snooping信任功能
DHCP Snooping的信任功能,能夠保證客戶端從合法的服務器獲取IP(Internet Protocol)地址。
如下圖所示,網絡中如果存在私自架設的DHCP Server仿冒者,則可能導致DHCP客戶端獲取錯誤的IP地址和網絡配置參數,無法正常通信。DHCP Snooping信任功能可以控制DHCP服務器應答報文的來源,以防止網絡中可能存在的DHCP Server仿冒者為DHCP客戶端分配IP地址及其他配置信息。
DHCP Snooping信任功能將接口分為信任接口和非信任接口:
信任接口正常接收DHCP服務器響應的DHCP ACK、DHCP NAK和DHCP Offer報文。
非信任接口在接收到DHCP服務器響應的DHCP ACK、DHCP NAK和DHCP Offer報文後,丟棄該報文。
在二層網絡接入設備使能DHCP Snooping場景中,一般將與合法DHCP服務器直接或間接連接的接口設置為信任接口(如下圖中的if1接口),其他接口設置為非信任接口(如下圖中的if2接口),使DHCP客戶端的DHCP請求報文僅能從信任接口轉發出去,從而保證DHCP客戶端只能從合法的DHCP服務器獲取IP地址,私自架設的DHCP Server仿冒者無法為DHCP客戶端分配IP地址。

圖1-7DHCP Snooping信任功能示意圖
3.2 DHCP Snooping綁定表
如下圖所示的DHCP場景中,連接在二層接入設備上的PC配置為自動獲取IP地址。PC作為DHCP客戶端通過廣播形式發送DHCP請求報文,使能了DHCP Snooping功能的二層接入設備將其通過信任接口轉發給DHCP服務器。最後DHCP服務器將含有IP地址信息的DHCP ACK報文通過單播的方式發送給PC。
在這個過程中,二層接入設備收到DHCP ACK報文後,會從該報文中提取關鍵信息(包括PC的MAC地址以及獲取到的IP地址、地址租期),並獲取與PC連接的使能了DHCP Snooping功能的接口信息(包括接口編號及該接口所屬的VLAN),根據這些信息生成DHCP Snooping綁定表。以PC1為例,圖中二層接入設備會從DHCP ACK報文提取到IP地址信息為192.168.1.253,MAC地址信息為MACA。再獲取與PC連接的接口信息為if3,根據這些信息生成一條DHCP Snooping綁定表項。

圖1-8DHCP Snooping綁定表功能示意圖
DHCP Snooping綁定表根據DHCP租期進行老化或根據用戶釋放IP地址時發出的DHCP Release報文自動刪除對應表項。
由於DHCP Snooping綁定表記錄了DHCP客戶端IP地址與MAC地址等參數的對應關係,故通過對報文與DHCP Snooping綁定表進行匹配檢查,能夠有效防範非法用戶的攻擊。
為了保證設備在生成DHCP Snooping綁定表時能夠獲取到用戶MAC等參數,DHCP Snooping功能需應用於二層網絡中的接入設備或第一個DHCP Relay上。
在DHCP中繼使能DHCP Snooping場景中,DHCP Relay設備不需要設置信任接口。因為DHCP Relay收到DHCP請求報文後進行源目的IP、MAC轉換處理,然後以單播形式發送給指定的合法DHCP服務器,所以DHCP Relay收到的DHCP ACK報文都是合法的,生成的DHCP Snooping綁定表也是正確的。
侵權請私聊公眾號刪文
熱文推薦
藍隊應急響應姿勢之Linux
通過DNSLOG回顯驗證漏洞
記一次服務器被種挖礦溯源
內網滲透初探 | 小白簡單學習內網滲透
實戰|通過惡意 pdf 執行 xss 漏洞
免殺技術有一套(免殺方法大集結)(Anti-AntiVirus)
內網滲透之內網信息查看常用命令
關於漏洞的基礎知識
任意賬號密碼重置的6種方法
乾貨 | 橫向移動與域控權限維持方法總匯
手把手教你Linux提權
歡迎關注LemonSec
覺得不錯點個「贊」、「在看」