天天看點

Cisco交換機DHCP​Snooping

一、為什麼要使用DHCP服務及能解決的問題 

    DHCP提高了管理效率,但在DHCP服務的管理上存在一些問題,如DHCP Server的冒充,DHCP Server的DOS攻擊,DHCP耗竭攻擊,有些使用者随便指定IP位址,造成IP位址沖突等。

二、DHCP Snooping技術 

    DHCP監聽(DHCP Snooping)是一種DHCP安全特性。Cisco交換機支援在每個VLAN基礎上啟用DHCP監聽特性,交換機能夠攔截第二層VLAN域内的所有 DHCP封包。 

    DHCP監聽将交換機端口劃分為兩類: 

    ●非信任端口:通常為連接配接終端裝置的端口 

    ●信任端口:連接配接合法DHCP伺服器的端口或者連接配接彙聚交換機的上行端口 

    通過開啟DHCP監聽特性,交換機限制使用者端口(非信任端口)隻能夠發送DHCP請求,丢棄來自使用者端口的所有其它DHCP封包,例如DHCPOffer 封包等。而且,并非所有來自使用者端口的DHCP請求都被允許通過,交換機還會比較DHCP請求封包的(封包頭裡的)源MAC位址和(封包内容裡 的)DHCP客戶機的硬體位址(即CHADDR字段),隻有這兩者相同的請求封包才會被轉發,否則将被丢棄。這樣就防止了DHCP耗竭攻擊。信任端口可以 接收所有的DHCP封包。通過隻将交換機連接配接到合法DHCP伺服器的端口設定為信任端口,其他端口設定為非信任端口,就可以防止使用者僞造DHCP伺服器來 攻擊網絡。DHCP監聽特性還可以對端口的DHCP封包進行限速。通過在每個非信任端口下進行限速,将可以阻止合法DHCP請求封包的廣播攻擊。DHCP 監聽還有一個非常重要的作用就是建立一張DHCP監聽綁定表(DHCP SnoopingBinding)。一旦一個連接配接在非信任端口的用戶端獲得一個合法的DHCPOffer,交換機就會自動在DHCP監聽綁定表裡添加一個 綁定條目,内容包括了該非信任端口的用戶端IP位址、MAC位址、端口号、VLAN編号、租期等資訊。 

    Switch#show ip dhcp snooping binding 

    MacAddress IpAddress Lease(sec) Type VLAN Interface 

    —————— ————— ———- ————- —- —————- 

    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技術提供動态資料庫支援。 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 

    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 Snooping的配置 

    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(租期) 

    Switch(config)#ip dhcp snooping database flash:dhcp_snooping.db //将DHCP監聽綁定表儲存在flash中,檔案名為dhcp_snooping.db 

    Switch(config)#ip dhcp snooping database tftp://192.168.2.5/Switch/dhcp_snooping.db // 将DHCP監聽綁定表儲存到tftp伺服器;192.168.2.5為tftp伺服器位址,必須事先确定可達。URL中的Switch是tftp服務 器下一個檔案夾;儲存後的檔案名為dhcp_snooping.db,當更改儲存位置後會立即執行“寫”操作。 

    Switch(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監聽的工作統計計數器

Linux起點

      本文轉自Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1601723,如需轉載請自行聯系原作者