DHCP snooping技術解析和配置詳述
網絡的安全和穩定,是我們考慮的頭等大事,在DHCP的應用中,我們也能看到相應的體現。DHCP Snooping技術,就是DHCP安全特性的一種表現手段。那么這里我們就來詳細介紹一下它的技術,以及配置內容吧。
一、DHCP snooping 技術介紹
DHCP監聽(DHCP Snooping)是一種DHCP安全特性。Cisco交換機支持在每個VLAN基礎上啟用DHCP監聽特性。通過這種特性,交換機能夠攔截第二層VLAN域內的所有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編號、租期等信息。
二、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-adress
- //檢測非信任端口收到的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監聽綁定表。