網絡的結構相當復雜,在各個層次中也有著不同的協議。那么,CDP協議(Cisoco發現協議)是一種工作在數據鏈路層上的協議,主要用來發現和查看相鄰設備的簡單配置信息。這也是思科網絡設備默認啟用的一種第二層協議,而且還是識別所連接設備詳細信息的一種重要協議。在故障排錯、性能優化等方面有著不可替代的作用。不過可惜的是,其也存在著一定的安全隱患。在這篇文章中,筆者就對CDP協議的功過得失作一個客觀的評價,并對安全方面的問題給出一點建議。
一、CDP協議的工作原理
要了解CDP協議在安全上的漏洞,首先需要知道其工作的原理。通常情況下,CDP協議與現有的網絡協議類型無關,其運行在路由器和交換機等網絡設備上。一般來說,CDP協議可以運行在所有支持SNAP子網訪問協議幀類型的介質中。通過在所有支持CDP協議的接口上向多播MAC地址發送周期性信息的方式,CDP協議就能夠進行工作。其基本的原理就是通過利用鄰接設備所發送的信息,設備能夠學到所連接設備的相關信息。這里需要注意的是,在所有的CDP消息中,都含有相關網絡設備的重要信息。如果這些信息泄露的話,就能夠被攻擊者所用,威脅企業網絡的安全。這些有關安全的信息可能包括如下這些內容。
如網絡地址、發送消息的端口或者接口信息、硬件平臺、發送設備的功能、軟件盤本等等。這些信息主要是被存放在TLV字段的嵌入部分。通常情況下這部分信息都是明文保存的,即沒有采取加密的措施。只要能夠獲取這個信息的用戶,通過一些工具就可以輕松的活得這些機密信息。
二、CDP協議給企業內網造成的安全隱患分析
確實在大部分情況下,CDP協議的作用是不可替代的。如在大多數網絡中,CDP能夠提供很多有用的信息并且可以協助管理員進行網絡排錯和性能優化。但是,其帶來的安全隱患也不容忽視。如默認情況下,交換機是默認在所有的接口上發送系統信息(如上面所述,這些系統信息中包含一些敏感的信息并且是沒有加密處理的)。為此攻擊者可以通過網絡嗅探器等工具輕松的獲取這些信息。顯而易見,CDP協議能夠導致安全方面的問題。特別是等網絡連接到多個組織機構的時候,這個安全隱患會更加的突出。不過各位用戶也不必過于擔心。如果出于安全考慮,將這個CDP協議廢了,那也有點小題大做?,F在網絡管理員需要考慮的是,如何在安全與功能之間取得一個均衡。即能夠享受CDP協議所帶來的優勢,而又不被其安全問題所困擾。如下圖所示,筆者給出了一個示意圖。
根據CDP協議的工作原理,我們可以知道,CDP協議所發送的信息中包含了一些比較敏感的信息。如果這些信息被不法分子獲得的話,那么將給企業的網絡帶來很大的安全隱患。為此我們保護的重點就是如何讓這些敏感的信息不被外人所知。故筆者的建議是,為了避免CDP協議泄露網絡設備的相關系悉尼,可以只在企業內部網絡的設備中啟用CDP協議。而在連接到互聯網的企業級邊緣路由器上的接口上禁用CDP協議。如此的話,相關的敏感信息不會泄露到企業的外部網絡上。在配合網絡防火墻等功能,就可以保證CDP協議信息的安全。為此如上圖所示,筆者建議,可以在連接到服務器提供商或者企業邊緣路由器的接口上禁用CDP協議。其他地方如果有安全需要的話,可以根據情況來判斷是否啟用CDP協議。在可以的情況下,還是啟用CDP協議為好。
三、開啟或者禁用CDP協議
默認情況下,CDP協議是開啟的。出于安全考慮,安全專員可能需要在某些特定的接口上禁用CDP協議。要做到這一點,從操作上說并沒有多少難度。主要還在于需要根據上面提到的原則來判斷在哪些接口上要禁用CDP協議。如果禁用的多了,那么CDP協議將不能夠發揮其應有的作用。相反,如果開啟的多了,那么就會造成比較嚴重的安全隱患。是開還是關,這就需要安全專員根據實際情況來進行權衡。如根據企業對于安全的重視程度、企業的行業性質等等來進行判斷。
另外在禁用CDP協議的時候,安全專員還可以選擇是使用全局性禁用,還是以每個接口為基礎進行禁用。如對于安全級別比較高的行業,像金融行業,他們可能在整個企業網絡中都會禁用CDP協議。此時就只需要使用全局性禁用的策略即可。如此的話,只需要在一臺交換機或者路由器上操作一次即可。而像大部分行業,其只需要在特定的接口上禁用CDP協議,如在企業邊緣路由器上禁用CDP協議。在這種情況下,需要選擇以每個接口為基礎進行禁用CDP協議。
如果安全專員需要在全局性的禁用CDP協議,可以在某臺交換機上使用如下命令來完成:no cdp run。這個命令運行完畢后,網絡內的所有設備(包括交換機與路由器)的CDP協議都將被禁用掉。由于這個命令會影響到多臺網路設備,為此在使用時需要慎重。注意這個命令只有在IOS軟件上有效。如果需要在CATOS軟件上使用的話,則需要通過命令set dp disable來實現。兩者效果是一樣的,只是語法上稍有不同而已。
如果需要通過基于特定的端口來禁用CDP協議的話,首先需要進入到交換機或者路由器的接口配置模式,然后可以通過如下的命令來單據的禁用某個端口或者接口的CDP協議:no cdp enable。這里需要特別強調一下,在基于特定接口下配置,與在全局模式下配置,其所使用的關鍵字是不同的。全局模式下,使用的關鍵字是run。而基于特定接口模式的配置,使用的關鍵字是enable。同理,這個命令也只是對IOS軟件有效。如果采用的是CATOS軟件的話,則需要使用set cdp disable命令來完成。
最后需要強調的是,啟用或者禁用CDP協議難度并不是很大,只是一個簡單的命令、幾秒鐘就可以完成的事情。但是困難的是,安全專員需要判斷在什么情況下該使用或者禁用CDP協議。這可能是一個漫長的分析過程。有時候還需要根據企業網絡拓撲的變化或者故障排除的需要進行調整。無論是什么情況下,安全專員都需要在功能與安全兩者之間進行權衡。筆者一個總的原則是,在企業內部網絡上,可以啟用CDP協議。而在邊緣路由器上,要禁用CDP協議。這個原則可能對大部分企業都是適用的。
四、語音VLAN與CDP的安全沖突
在語音VLAN應用環境中,一般也需要使用到CDP協議。如一個典型的VoIP案例,就是將工作站連接到IP電話,然后再將IP電話連接到交換機。在這個案例中,如果交換機上啟用了CDP協議,那么對于VoIP來說,也涉及到一個CDP協議安全的問題。同上面的分析一樣,筆者建議在企業內部網絡中可以啟用CDP協議。而在企業級別的邊緣路由器上則禁用CDP協議。
筆者這里需要強調一點,通過Vlan將企業的內部網絡劃分成幾個獨立的虛擬網,能夠起到分割廣播包、縮小沖突域等作用,對于企業內部網絡的安全有著很大的作用。不過需要注意的是,這個并不會影響CDP協議的使用。即即使采用了Vlan網絡,CDP發送的信息包仍然可以在多個虛擬網內進行傳播。這是出自功能上的考慮。筆者在一開始就談到,CDP協議是一種與網絡協議類型無關的協議。