CDP协议(Cisoco发现协议)是一种工作在数据链路层上的协议,主要用来发现和查看相邻设备的简单配置信息。这也是思科网络设备默认启用的一种第二层协议,而且还是识别所连接设备详细信息的一种重要协议。在故障排错、性能优化等方面有着不可替代的作用。不过可惜的是,其也存在着一定的安全隐患。在这篇文章中,笔者就对CDP协议的功过得失作一个客观的评价,并对安全方面的问题给出一点建议。
一、CDP协议的工作原理
要了解CDP协议在安全上的漏洞,首先需要知道其工作的原理。通常情况下,CDP协议与现有的网络协议类型无关,其运行在路由器和交换机等网络设备上。一般来说,CDP协议可以运行在所有支持SNAP子网访问协议帧类型的介质中。通过在所有支持CDP协议的接口上向多播MAC地址发送周期性信息的方式,CDP协议就能够进行工作。其基本的原理就是通过利用邻接设备所发送的信息,设备能够学到所连接设备的相关信息。这里需要注意的是,在所有的CDP消息中,都含有相关网络设备的重要信息。如果这些信息泄露的话,就能够被攻击者所用,威胁企业网络的安全。这些有关安全的信息可能包括如下这些内容。
如网络地址、发送消息的端口或者接口信息、硬件平台、发送设备的功能、
软件盘本等等。这些信息主要是被存放在TLV字段的嵌入部分。通常情况下这部分信息都是明文保存的,即没有采取加密的措施。只要能够获取这个信息的用户,通过一些工具就可以轻松的活得这些机密信息。
二、CDP协议给企业内网造成的安全隐患分析
确实在大部分情况下,CDP协议的作用是不可替代的。如在大多数网络中,CDP能够提供很多有用的信息并且可以协助管理员进行网络排错和性能优化。但是,其带来的安全隐患也不容忽视。如默认情况下,交换机是默认在所有的接口上发送系统信息(如上面所述,这些系统信息中包含一些敏感的信息并且是没有加密处理的)。为此攻击者可以通过网络嗅探器等工具轻松的获取这些信息。显而易见,CDP协议能够导致安全方面的问题。特别是等网络连接到多个组织机构的时候,这个安全隐患会更加的突出。不过各位用户也不必过于担心。如果出于安全考虑,将这个CDP协议废了,那也有点小题大做。现在网络管理员需要考虑的是,如何在安全与功能之间取得一个均衡。即能够享受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协议是一种与网络协议类型无关的协议。