1. 程式人生 > >開啟Cisco交換機DHCP Snooping功能(1)

開啟Cisco交換機DHCP Snooping功能(1)

一、採用DHCP服務的常見問題
架設DHCP伺服器可以為客戶端自動分配IP地址、掩碼、預設閘道器、DNS伺服器等網路引數,簡化了
網路配置,提高了管理效率。但在DHCP服務的管理上存在一些問題,常見的有:

●DHCP Server的冒充
●DHCP Server的DOS攻擊,如DHCP耗竭攻擊
●某些使用者隨便指定IP地址,造成IP地址衝突
1、DHCP Server的冒充
由於DHCP伺服器和客戶端之間沒有認證機制,所以如果在網路上隨意新增一臺DHCP伺服器,它就可以為客戶端分配IP地址以及其他網路引數。只要讓該DHCP伺服器分配錯誤的IP地址和其他網路引數,那就會對網路造成非常大的危害。

2、DHCP Server的拒絕服務攻擊


通常DHCP伺服器通過檢查客戶端傳送的DHCP請求報文中的CHADDR(也就是Client MAC address)欄位來判斷客戶端的MAC地址。正常情況下該CHADDR欄位和傳送請求報文的客戶端真實的MAC地址是相同的。攻擊者可以利用偽造MAC的方式傳送DHCP請求,但這種攻擊可以使用Cisco 交換機的埠安全特性來防止。埠安全特性(Port Security)可以限制每個埠只使用唯一的MAC地址。但是如果攻擊者不修改DHCP請求報文的源MAC地址,而是修改DHCP報文中的CHADDR欄位來實施攻擊,那埠安全就不起作用了。由於DHCP伺服器認為不同的CHADDR值表示請求來自不同的客戶端,所以攻擊者可以通過大量傳送偽造CHADDR的DHCP請求,導致DHCP伺服器上的地址池被耗盡,從而無法為其他正常使用者提供網路地址,這是一種DHCP耗竭攻擊。DHCP耗竭攻擊可以是純粹的DOS攻擊,也可以與偽造的DHCP伺服器配合使用。當正常的DHCP伺服器癱瘓時,攻擊者就可以建立偽造的DHCP伺服器來為區域網中的客戶端提供地址,使它們將資訊轉發給準備擷取的惡意計算機。甚至即使DHCP請求報文的源MAC地址和CHADDR欄位都是正確的,但由於DHCP請求報文是廣播報文,如果大量傳送的話也會耗盡網路頻寬,形成另一種拒絕服務攻擊。

3、客戶端隨意指定IP地址
客戶端並非一定要使用DHCP服務,它可以通過靜態指定的方式來設定IP地址。如果隨便指定的話,將會大大提高網路IP地址衝突的可能性。

二、DHCP snooping技術介紹

DHCP監聽(DHCP snooping)是一種DHCP安全特性。Cisco交換機支援在每個VLAN基礎上啟用DHCP監聽特性。通過這種特性,交換機能夠攔截第二層VLAN域內的所有DHCP報文。

DHCP監聽將交換機埠劃分為兩類:

●非信任埠:通常為連線終端裝置的埠,如PC,網路印表機等
●信任埠:連接合法DHCP伺服器的埠或者連線匯聚交換機的上行埠
通過開啟DHCP監聽特性,交換機限制使用者埠(非信任埠)只能夠傳送DHCP請求,丟棄來自使用者埠的所有其它DHCP報文,例如DHCP Offer報文等。而且,並非所有來自使用者埠的DHCP請求都被允許通過,交換機還會比較DHCP 請求報文的(報文頭裡的)源MAC地址和(報文內容裡的)DHCP客戶機的硬體地址(即CHADDR欄位),只有這兩者相同的請求報文才會被轉發,否則將被丟棄。這樣就防止了DHCP耗竭攻擊。信任埠可以接收所有的DHCP報文。通過只將交換機連線到合法DHCP伺服器的埠設定為信任埠,其他埠設定為非信任埠,就可以防止使用者偽造DHCP伺服器來攻擊網路。DHCP監聽特性還可以對埠的DHCP報文進行限速。通過在每個非信任埠下進行限速,將可以阻止合法DHCP請求報文的廣播攻擊。DHCP監聽還有一個非常重要的作用就是建立一張DHCP監聽繫結表(DHCP snooping Binding)。一旦一個連線在非信任埠的客戶端獲得一個合法的DHCP Offer,交換機就會自動在DHCP監聽繫結表裡新增一個繫結條目,內容包括了該非信任埠的客戶端IP地址、MAC地址、埠號、VLAN編號、租期等資訊。如:

show ip dhcp snooping binding

III. DHCP監聽繫結表不僅用於防禦DHCP攻擊,還為後續的IPSG和DAI技術提供動態資料庫支援。

IV. DHCP監聽繫結表裡的Lease列就是每個客戶端對應的DHCP租約時間。當客戶端離開網路後,該條目並不會立即消失。當客戶端再次接入網路,重新發起DHCP請求以後,相應的條目內容就會被更新。如上面的00F.1FC5.1008這個客戶端原本插在Fa0/1埠,現在插在Fa0/3埠,相應的記錄在它再次傳送DHCP請求並獲得地址後會更新為:

Switch#show ip DHCP snooping binding
or
Switch#show ip source binding
MacAddress      IpAddress  Lease(sec)   Type   VLAN    Interface
------------------    ---------------   ----------   -------------   ----   ----------------
00:0F:1F:C5:10:08 192.168.10.131  691023   DHCP-snooping 10   FastEthernet0/3

V.當交換機收到一個DHCPDECLINE或DHCPRELEASE廣播報文,並且報文頭的源MAC地址存在於DHCP監聽繫結表的一個條目中。但是報文的實際接收埠與繫結表條目中的埠欄位不一致時,該報文將被丟棄。

●DHCPRELEASE報文:此報文是客戶端主動釋放IP 地址(如Windows 客戶端使用ipconfig/release),當DHCP伺服器收到此報文後就可以收回IP地址,分配給其他的客戶端了
●DHCPDECLINE報文:當客戶端發現DHCP伺服器分配給它的IP地址無法使用(如IP地址發生衝突)時,將發出此報文讓DHCP伺服器禁止使用這次分配的IP地址。

VI. DHCP監聽繫結表中的條目可以手工新增。

VII. DHCP監聽繫結表在裝置重啟後會丟失,需要重新繫結,但可以通過設定將繫結表儲存在flash或者tftp/ftp伺服器上,待裝置重啟後直接讀取,而不需要客戶端再次進行繫結

VIII. 當前主流的Cisco交換機基本都支援DHCP snooping功能。

這張DHCP監聽繫結表為進一步部署IP源防護(IPSG)和動態ARP檢測(DAI)提供了依據。說明:

I. 非信任埠只允許客戶端的DHCP請求報文通過,這裡只是相對於DHCP報文來說的。其他非DHCP報文還是可以正常轉發的。這就表示客戶端可以以靜態指定IP地址的方式通過非信任埠接入網路。由於靜態客戶端不會發送DHCP報文,所以DHCP監聽繫結表裡也不會有該靜態客戶端的記錄。信任埠的客戶端資訊不會被記錄到DHCP監聽繫結表裡。如果有一客戶端連線到了一個信任埠,即使它是通過正常的DHCP方式獲得IP地址,DHCP監聽繫結表裡也不有該客戶端的記錄。如果要求客戶端只能以動態獲得IP的方式接入網路,則必須藉助於IPSG和DAI技術。

II.交換機為了獲得高速轉發,通常只檢查報文的二層幀頭,獲得目標MAC地址後直接轉發,不會去檢查報文的內容。而DHCP監聽本質上就是開啟交換機對DHCP報文的內容部分的檢查,DHCP報文不再只是被檢查幀頭了。

三、DHCP Option 82

當DHCP伺服器和客戶端不在同一個子網內時,客戶端要想從DHCP伺服器上分配到IP地址,就必須由DHCP中繼代理(DHCP Relay Agent)來轉發DHCP請求包。DHCP中繼代理將客戶端的DHCP報文轉發到DHCP伺服器之前,可以插入一些選項資訊,以便DHCP伺服器能更精確的得知客戶端的資訊,從而能更靈活的按相應的策略分配IP地址和其他引數。這個選項被稱為:DHCP relay agent information option(中繼代理資訊選項),選項號為82,故又稱為option 82,相關標準文件為RFC3046。Option 82是對DHCP選項的擴充套件應用。選項82只是一種應用擴充套件,是否攜帶選項82並不會影響DHCP原有的應用。另外還要看DHCP伺服器是否支援選項82。不支援選項82的DHCP伺服器接收到插入了選項82的報文,或者支援選項82的DHCP伺服器接收到了沒有插入選項82的報文,這兩種情況都不會對原有的基本的DHCP服務造成影響。要想支援選項82帶來的擴充套件應用,則DHCP伺服器本身必須支援選項82以及收到的DHCP報文必須被插入選項82資訊。從非信任埠收到DHCP請求報文,不管DHCP伺服器和客戶端是否處於同一子網,開啟了DHCP監聽功能的Cisco交換機都可以選擇是否對其插入選項82資訊。預設情況下,交換機將對從非信任埠接收到的DHCP請求報文插入選項82資訊

當一臺開啟DHCP監聽的匯聚交換機和一臺插入了選項82資訊的邊界交換機(接入交換機)相連時:

●如果邊界交換機是連線到匯聚交換機的信任埠,那麼匯聚交換機會接收從信任埠收到的插入選項82的DHCP報文資訊,但是匯聚交換機不會為這些資訊建立DHCP監聽繫結表條目。
●如果邊界交換機是連線到匯聚交換機的非信任埠,那麼匯聚交換機會丟棄從該非信任埠收到的插入了選項82的DHCP報文資訊。但在IOS 12.2(25)SE版本之後,匯聚交換機可以通過在全域性模式下配置一條ip DHCP snooping information allow-untrusted命令。這樣匯聚交換機就會接收從邊界交換機發來的插入選項82的DHCP報文資訊,並且也為這些資訊建立DHCP監聽繫結表條目。
在配置匯聚交換機下聯口時,將根據從邊界交換機發送過來的資料能否被信任而設定為信任或者非信任埠。

Switch(config)#ip DHCP snooping //開啟DHCP snooping功能
Switch(config)#ip DHCP snooping vlan 10 //設定DHCP snooping功能將作用於哪些VLAN
Switch(config)#ip DHCP snooping verify mac-address //檢測非信任埠收到的DHCP請求報文的源MAC和CHADDR欄位是否相同,以防止DHCP耗竭攻擊,該功能預設即為開啟
Switch(config-if)#ip DHCP snooping trust //配置介面為DHCP監聽特性的信任介面,所有介面預設為非信任介面
Switch(config-if)#ip DHCP snooping limit rate 15 //限制非信任埠的DHCP報文速率為每秒15個包(預設即為每秒15個包)如果不配該語句,則show ip DHCP snooping的結果裡將不列出沒有該語句的埠,可選速率範圍為1-2048

建議:在配置了埠的DHCP報文限速之後,最好配置以下兩條命令
Switch(config)#errdisable recovery cause DHCP-rate-limit //使由於DHCP報文限速原因而被禁用的埠能自動從err-disable狀態恢復
Switch(config)#errdisable recovery interval 30 //設定恢復時間;埠被置為err-disable狀態後,經過30秒時間才能恢復

Switch(config)#ip DHCP snooping information option //設定交換機是否為非信任埠收到的DHCP報文插入Option 82,預設即為開啟狀態
Switch(config)#ip DHCP snooping information option allow-untrusted //設定匯聚交換機將接收從非信任埠收到的接入交換機發來的帶有選項82的DHCP報文
Switch#ip DHCP snooping binding 000f.1fc5.1008 vlan 10 192.168.10.131 interface fa0/2 expiry 692000 //特權模式命令;手工新增一條DHCP監聽繫結條目;expiry為時間值,即為監聽繫結表中的lease(租期