採用DHCP服務的常見問題
架設DHCP服務器能夠爲客戶端自動分配IP地址、掩碼、默認網關、DNS服務器等網絡參數,簡化了網絡配置,提升了管理效率。但在DHCP服務的管理上存在一些問題,常見的有:
●DHCP Server的冒充
●DHCP Server的DOS攻擊,如DHCP耗竭攻擊
●某些用戶隨便指定IP地址,形成IP地址衝突
DHCP Server的冒充
因爲DHCP服務器和客戶端之間沒有認證機制,因此若是在網絡上隨意添加一臺DHCP服務器,它就能夠爲客戶端分配IP地址以及其餘網絡參數。只要讓該DHCP服務器分配錯誤的IP地址和其餘網絡參數,那就會對網絡形成很是大的危害。
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請求報文是廣播報文,若是大量發送的話也會耗盡網絡帶寬,造成另外一種拒絕服務攻擊。
客戶端隨意指定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編號、租期等信息。如:html
Switch#show ip dhcp snooping binding |
這張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 |
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 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監聽綁定表條目。
在配置匯聚交換機下聯口時,將根據從邊界交換機發送過來的數據可否被信任而設置爲信任或者非信任端口。網絡