DHCP Snooping

計算機術語之一

DHCPSnooping是DHCP的一種安全特性,主要應用在交換機上。其作用是屏蔽接入網路中的非法的DHCP伺服器。即開啟DHCPSnooping功能后,網路中的客戶端只有從管理員指定的DHCP伺服器獲取IP地址。由於DHCP報文缺少認證機制,如果網路中存在非法DHCP伺服器,管理員將無法保證客戶端從管理員指定的DHCP伺服器獲取合法地址,客戶機有可能從非法DHCP伺服器獲得錯誤的IP地址等配置信息,導致客戶端無法正常使用網路。啟用DHCPSnooping功能后,必須將交換機上的埠設置為信任(Trust)和非信任(Untrust)狀態。交換機只轉發信任埠的DHCPOFFER/ACK/NAK報文,丟棄非信任埠的DHCPOFFER/ACK/NAK報文,從而達到阻斷非法DHCP伺服器的目的。建議將連接DHCP伺服器的埠設置為信任埠,其他埠設置為非信任埠。此外DHCPSnooping還會監聽經過本機的DHCP數據包,提取其中的關鍵信息並生成DHCPBindingTable記錄表,一條記錄包括IP、MAC、租約時間、埠、VLAN、類型等信息,結合DAI(DynamicARPInspection)和IPSG(IPSourceGuard)可實現ARP防欺騙和IP流量控制功能。

介紹


當交換機開啟了DHCP-Snooping后,會對DHCP報文進行偵聽,並可以從接收到的DHCPRequest或DHCPAck報文中提取並記錄IP地址和MAC地址信息。另外,DHCP-Snooping允許將某個物理埠設置為信任埠或不信任埠。信任埠可以正常接收並轉發DHCPOffer報文,而不信任埠會將接收到的DHCPOffer報文丟棄。這樣,可以完成交換機對假冒DHCPServer的屏蔽作用,確保客戶端從合法的DHCPServer獲取IP地址。

作用


1.dhcp-snooping的主要作用就是隔絕非法的dhcpserver,通過配置非信任埠。
2.與交換機DAI的配合,防止ARP病毒的傳播。
3.建立和維護一張dhcp-snooping的綁定表,這張表一是通過dhcpack包中的ip和mac地址生成的,二是可以手工指定。這張表是後續DAI(dynamicarpinspect)和IPSourceGuard基礎。這兩種類似的技術,是通過這張表來判定ip或者mac地址是否合法,來限制用戶連接到網路的。
4.通過建立信任埠和非信任埠,對非法DHCP伺服器進行隔離,信任埠正常轉發DHCP數據包,非信任埠收到的伺服器響應的DHCPoffer和DHCPACK后,做丟包處理,不進行轉發。

配置


Cisco交換機為例:
switch(config)#ipdhcpsnooping
switch(config)#ipdhcpsnoopingvlan10

防止ARP污染


DHCPsnooping還可以跟蹤主機的物理位置,從而可以防禦(ARP)緩存污染攻擊。它在防禦這些攻擊的過程中發揮重要作用,因為您可以使用DHCPsnooping技術丟棄一些來源與目標MAC地址不符合已定義規則的DHCP消息。管理會收到通過DHCPsnooping警報通知的違規行為。當DHCPsnooping服務檢測到違規行為時,它會在系統日誌伺服器上記錄一條消息“DHCPSnooping”。
DHCPsnooping是實現2層協議流量安全性的第一步。惡意DHCP伺服器不僅會導致網路問題,它們還可以被攻擊者用於轉發敏感流量和發起中間人攻擊。如果還沒有做好這些措施,那麼一定要考慮實現這些防禦措施,保證網路基礎架構的安全性。

應用場景


(1)對網路安全要求程度比較高和對IP地址管理有一定需求的單位,如xx煙草、XX電網等
(2)此策略應配置在接入層交換機當中。其中,在交換機上聯埠以及聚合埠需配置為信任埠,需靜態IP的埠需開啟信任!

注意事項


若交換機下聯有Hub、路由器等設備,若網路中有靜態IP地址存在,配置snooping+dai以後會造成小範圍內多個用戶不能上網。因此建議先在交換機開啟snooping,觀察網路沒有異常以後,逐個vlan開啟DAI功能。

機制概述


DHCP都非常熟悉了,對於DHCP客戶端而言,初始過程中都是通過發送廣播的DHCPdiscovery消息尋找DHCP伺服器,然而這時候如果內網中存在私設的DHCP伺服器,那麼就會對網路造成影響,例如客戶端通過私設的DHCP伺服器拿到一個非法的地址,最終導致PC無法上網。
在DHCPsnooping環境中(部署在交換機上),我們將埠視為trust或untrust兩種安全級別,也就是信任或非信任介面。在交換機上,將連接合法DHCP伺服器的介面配置為trust。只有trust介面上收到的來自DHCPserver的報文(如DHCPOFFER、DHCPACK、DHCPNAK或者DHCPLEASEQUERY)才會被放行,相反,在untrust介面上收到的來自DHCPserver的報文將被過濾掉,這樣一來就可以防止非法的DHCPserver接入。同時在部署了DHCPSnooping的交換機本地,還能維護一張DHCPsnooping的綁定資料庫(bindingdatabase),用於保存偵聽到的DHCP交互的表項,信息包括(針對untrust介面的):MAC地址、IP地址(DHCP分配的)、租期、綁定類型、VLAN號、介面編號(DHCP客戶端也就是連接客戶端PC的untrust介面)。這個DHCPsnoopingbindingdatabase除了可以做一些基本的安全接入控制,還能夠用於DAI等防ARP欺騙的解決方案。
一台支持DHCPsnooping的交換機,如果在其untrust介面上,收到來自下游交換機發送的、且帶有option82的DHCP報文,則默認的動作是丟棄這些報文。如果該交換機開啟了DHCPsnooping並且帶有option82的DHCP報文是在trusted介面上收到的,則交換機接收這些報文,但是不會根據報文中包含的相關信息建立DHCPbindingdatabase表項。
如果交換機確實通過一個untrust介面連接了下游交換機,並且希望放行該介面收到的、下游交換機發送出來的帶有option82的DHCP報文,則可使用全局命令:ipdhcpsnoopinginformationoptionallow-untrusted,同時由於是通過untrust介面收到的DHCP報文,因此會根據偵聽的結果創建DHCPsnoopingbindingdatabase表項。

案例配置教程


DHCPSnooping案例配置拓撲
DHCPSnooping案例配置需求
1、配置PC1、PC2屬於VLAN10;
2、在SW2上創建VLAN10,將F0/1、F0/2埠劃分到VLAN10;
3、配置SW1F0/23和SW2F0/23為Trunk鏈路,封裝協議使用dot1q
4、配置SW2F0/1屬於VLAN20;
5、配置SW2的VLAN10IP地址為192.168.10.254/24,VLAN20的IP地址為192.168.20.254/24;
6、配置DHCPServer地址為192.168.10.1,網關為192.168.20.254;
7、配置DHCPPOOL,為PC分配IP地址;
8、在SW2上啟用DHCPSnooping,防止AttackerDHCP欺騙攻擊;
DHCPSnooping案例配置思路
1、在SW2上創建VLAN10,並將F0/1、F0/2劃分到VLAN10。
2、配置SW1F0/23和SW2F0/23為Trunk鏈路,封裝協議使用dot1q。
3、配置SW2F0/1屬於VLAN20。
4、配置SW2的VLAN10IP地址為192.168.10.254/24,VLAN20的IP地址為192.168.20.254/24。
5、配置DHCPServer地址為192.168.10.1,網關為192.168.20.254。
6、配置DHCPPOOL,為PC分配IP地址。
7、在SW2上啟用DHCPSnooping,防止AttackerDHCP欺騙攻擊。
8、配置PC,動態獲取IP地址。