802.1x协议加上IP地址绑定功能,这个问题被当成802.1x协议的缺陷,引发了不少讨论。有观点认为,这种设计上的缺陷,给设备制造商在管理上带来了很多挑战。
事实上,802.1x是一个基于端口的安全管理协议,其管理的对象是二层交换机的端口,这个协议将原本开发的局域网络变得可运营、可管理、易维护。由于这是一个纯二层的协议,因此从协议本身来说,并没有IP地址绑定等功能的设计。我们从802.1x-2004标准上,确实也无法找到任何关于IP方面的说明。
IP地址绑定,实际上是各个厂商在此协议基础上的一个附加(还谈不上增强),设计的初衷也就是为了增加一些管理手段,使网络更加便于管理。与此类似的还有MAC、VLAN、PORT等的绑定,但后者仍属于二层的范畴,因此并不显得太过唐突。
下面我们脱离802.1x协议本身来谈谈IP绑定的在部分厂商上的实现。
由于802.1x协议本身并没有规定如何来进行IP绑定,这样就给各个厂商留下了很大的想像空间,各个厂商的实现千差万别,没有统一的标准,这样也就造成了在客户端及radius服务器上的很多私有实现。
用于完成认证交互过程的EAP报文,是纯二层的报文,从这个报文中,不可能得到用户的IP地址,因此各个厂商的通用作法就是在EAP报文中采用私有的定义,生硬的加上IP地址的内容。通常被利用的报文有EAP-Start及EAP-Identity Request这两种报文。为了避免其它交换机不认识这些私有的报文格式,交换机的工作模式通常是工作在EAP模式,即对EAP报文进行透传处理。这样交换机不对该报文进行解析就直接透传给RADIUS SERVER,RADIUS SERVER收到该报文后,再用自己的格式进行解析。因此,通常情况之下,客户端与服务器必须配合使用才能够完成IP地址绑定的功能。
在802.1x-2004规范中,对EAP-Identity Request所携带的内容是有明确定义的,通常这里应该填写的是用户的用户名信息,而纯用户名对一些不可见的字符是不接受的,因此,如果遇到对用户名的有效性进行校验的交换机,那么这种设计就会失效,因为IP地址在表达成字符后,通常是一些非法的字符,交换机会将该报文过滤掉。这种问题在标准则出来时是会经常遇到的。但是由于后来大家在具体实现上,没有完全按照标准来做,为了能够有更好的兼容性,各个厂商也将此校验逐步去掉,到现在,可能已经很少有厂商的设备会对用户名进行严格校验了。
有朋友提到,使用了IP绑定功能,用户偷换了IP,系统却没有进行相应的干预处理,那么IP绑定究竟有什么作用呢?大家别忘了,802.1x协议是一个二层协议,其真正要管理的是用户的MAC,如果你将用户MAC进行了修改,然后系统又不做出任何响应的话,那么我们认为这个协议是有很大问题的。至于修改IP系统没有采取相应的措施,这其实是是否有必要进行这样管理的一个问题。实际上,我们有很多手段知道用户的IP进行了修改,如握手报文携带的信息、计费报文携带的信息,这些报文随时都可以告知管理员用户私自修改了IP地址,没有采取对应的措施,是到目前为止,还没有哪个管理员认为做了这样的限制对其对网络的管理能够带来什么帮助。说白了,也就是还没有这方面的应用需求。
802.1x的IP地址绑定功能,确实能够给我们的网络管理带来一些便利的东西,这个功能是否鸡肋,只好仁者见仁、智者见智了。