Cisco DHCP snooping
一、***原理:
DHCP Sproofing同樣是一種中間人***方式。DHCP是提供IP地址分配的服務。當局域網中的計算機設置為自動獲取IP,就會在啟動後發送廣播包請求IP地址。DHCP服務器(如路由器)會分配一個IP地址給計算機。在分配的時候,會提供DNS服務器地址。
***者可以通過偽造大量的IP請求包,而消耗掉現有DHCP服務器的IP資源。當有計算機請求IP的時候,DHCP服務器就無法分配IP。這時,***者可以偽造一個DHCP服務器給計算機分配IP,並指定一個虛假的DNS服務器地址。這時,當用戶訪問網站的時候,就被虛假DNS服務器引導到錯誤的網站。
DHCP Sproofing成功的前提是有計算機請求IP。如果計算機使用靜態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)。一旦一個連接在非信任端口的客戶端獲得一個合法的DHCPOffer,交換機就會自動在DHCP監聽綁定表裏添加一個綁定條目,內容包括了該非信任端口的客戶端IP地址、MAC地址、端口號、VLAN編號、租期等信息。
Switch#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Int
00:0F:1F:C5:10:08 192.168.10.131 682463 dhcp-snooping 10 FastEthernet0/1
這張DHCP監聽綁定表為進一步部署IP源防護(IPSG)和動態ARP檢測(DAI)提供了依據。說明:
I. 非信任端口只允許客戶端的DHCP請求報文通過,這裏只是相對於DHCP報文來說的。其他非DHCP報文還是可以正常轉發的。這就表示客戶端可以以靜態指定IP地址的方式通過非信任端口接入網絡。由於靜態客戶端不會發送DHCP報文,所以DHCP監聽綁定表裏也不會有該靜態客戶端的記錄。
信任端口的客戶端信息不會被記錄到DHCP監聽綁定表裏。如果有一客戶端連接到了一個信任端口,即使它是通過正常的DHCP方式獲得IP地址,DHCP監聽綁定表裏也不有該客戶端的記錄。如果要求客戶端只能以動態獲得IP的方式接入網絡,則必須借助於IPSG和DAI技術。
II.交換機為了獲得高速轉發,通常只檢查報文的二層幀頭,獲得目標MAC地址後直接轉發,不會去檢查報文的內容。而DHCP監聽本質上就是開啟交換機對DHCP報文的內容部分的檢查,DHCP報文不再只是被檢查幀頭了。
III. DHCP監聽綁定表不僅用於防禦DHCP***,還為後續的IPSG和DAI技術提供動態數據庫支持。
三、DHCP snooping 配置:
Switch(config)#ip dhcp snooping //打開DHCP Snooping功能
Switch(config)#ip dhcp snooping vlan 10
//設置DHCP Snooping功能將作用於哪些VLAN
Switch(config)#ip dhcp snoopiing verify mac-address
//非信任端口收到的DHCP請求報文的源MAC和CHADDR字段是否相同,以防止DHCP耗竭***,該功能默認即為開啟。
Switch(config-if)#ip dhcp snooping trust
//配置接口為DHCP監聽特性的信任接口,所有接口默認為非信任接口
Switch(config-if)#ip dhcp snoopiing limit rate 15
//限制非信任端口的DHCP報文速率為每秒15個包(默認即為每秒15個包)如果不配該語句,則show ip dhcp snooping的結果將不列出沒有該語句的端口,可選速率範圍為1-2048
建議,在配置了端口的DHCP報文限速之後,最好配置以下兩條命令
Switch(config)#errdisable recovery cause dhcp-rate-limit
//使由於DHCP報文限速而被禁用的端口能自動從err-disable狀態後,經過30秒時間才能恢復
Switch(config)#ip dhcp snooping information option
//設置交換機是否為非信任端口收到的DHCP報文插入Option 82,默認即為開啟狀態
Swtich(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(租期)
Switch(config)#ip dhcp snooping database flash:dhcp_snooping.db
//將DHCP監聽表保存在flash中,文件名為dhcp_snooping.db
Swtich(config)#ip dhcp snooping database tftp://192.168.2.5/Switch/dhcp_snooping.db
//將DHCP事先確定可達。URL中的Switch是tftp服務器下一個文件夾;保存後的文件名為dhcp_snooping.db,當更改保存位置後會立即執行“寫”操作。
Swtich(config)#ip dhcp snooping database write-delay 30
//指DHCP監聽綁定表發生更新後,等待30秒,再寫入文件,默認為300秒;可選範圍為15-86400秒
Switch(config)#ip dhcp snooping database timeout 60
//指DHCP監聽綁定表嘗試寫入操作失敗後,重新嘗試寫入操作,直到60秒後停止嘗試。默認為300秒;可選範圍為0-86400秒
說明:實際上當DHCP監聽綁定表發生改變時會先等待write-delay的時間,然後執行寫入操作,如果寫入操作失敗(比如tftp服務器不可達),接著就等待timeout的時間,在此時間段內不斷重試。在timeout時間過後,停止寫入嘗試。但由於監聽綁定表已經發生了改變,因此重新開始等待write-delay時間執行寫入操作,不斷循環,直到寫入操作成功。
Switch#renew ip dhcp snooping database flash:dhcp_snooping.db
//特權級命令:立即保存好的數據庫文件中讀取DHCP監聽表。
顯示DHCP Snooping的狀態
Switch#show ip dhcp snooping
//顯示當前DHCP監聽的各選項和各端口的配置情況
Switch#show ip dhcp snooping binding //顯示當前的DHCP監聽綁定表
Switch#show ip dhcp snooping database //顯示DHCP監聽綁定數據庫的相關信息
Switch#show ip dhcp snooping statistics //顯示DHCP監聽的工作統計
Switch#clear ip dhcp snooping binding //清除DHCP監聽綁定表;註意:本命令無法對單一條目進行清楚,只能清楚所有條目
Switch#clear ip dhcp snooping database statistics
//清空DHCP監聽綁定數據庫的計數器
Switch#clear ip dhcp snooping statistics //清空DHCP監聽的工作統計計數器
Cisco DHCP snooping