被认为有害的有线网络上的 802.1X


       首先,文章指出“802.1X 是一种基于端口的访问控制方法,可以配置成需要客户端和网络间的相互身份验证。如果没有身份验证,将不允许进行通信。802.1X 同“可扩展身份验证协议一起使用,以便向网络验证客户端,向客户端验证网络,并确保双方以被识别的实体进行通信。”

       然后,作者描述了802.1X 的运行方式。 
       作者说:802.1X 可在几乎任意种类的网络上运行:有线网络、无线网络、有刺铁丝网,甚至传信鸽和邦戈鼓。
       ——本人所了解的,只有有线网络、无线网络。无线网络的802.1x也不是很了解。

      “要使 802.1X 在有线网络中发挥作用,基础结构需要相当先进。网络中的所有交换机 - 或者至少与客户端和服务器相连的交换机 - 必须支持 802.1X。每台交换机均需要一个数字证书,当向客户端进行身份验证时其将提供该数字证书。”
       ——对于这个,现实来看,似乎并没有证书之类的。 

      “客户端必须均拥有一个具有 802.1X 功能的 IP 堆栈。如果运行的是 Windows XP,已针对 802.1X 在有线网络上的使用对 Windows XP 中内置的堆栈进行了测试和批准。如果运行的不是 Windows XP(且不能升级),则您具有一种选择:Microsoft 已经为 Windows 2000 发布了 802.1X 堆栈 ”
        ——请注意:Windows 2000的客户端下载(http://support.microsoft.com/kb/313664)。 

        ——在 Windows XP 和 Windows 2000 下,计算机将出现不能登录到域的情况!
      “只为计算机(而非计算机和用户)身份验证配置了 802.1X,使用的是 PEAP(而非 EAP-TLS),且您计算机的计算机帐户密码已过期,则此计算机将不能登录到域。”
      原因是: “客户端身份验证中涉及到的两个 DLL 不能正确交换信息。更改这些 DLL 的可能性微乎其微;这需要对其进行彻底重新设计,且存在太多的其他从属风险。” 
      解决方法: “必须配置有 PEAP 和仅限计算机的身份验证。如果使用的是 EAP-TLS,就不存在此问题,因为是通过另外一组 DLL 来处理身份验证的。如果使用的是机器和计算机身份验证,当用户身份验证成功时计算机密码将被重置。”



       作者接下来明确指出:“802.1X 是无线安全性的完美基础,但是,有线 802.1X 中存在一个根本缺陷,其严重影响了在阻止无赖计算机方面的效果。我将介绍***是如何能够利用实现协议时的缺陷的。” 

       首先:
      “在 AD 组策略中,存在多种用来管理无线网络上的 802.1X 的组策略对象。有线界面中没有这些“组策略对象”(GPO),也没有用于管理有线 802.1X 客户端计算机的发布的 API。对于有线 802.1X,某些体系结构方面的原因禁止将“组策略对象”(GPO) 添加到 Windows 2000 和 Windows XP 中。”
       ——这就是说,不能针对有线 802.1X 实施组策略。这个问题,在微软知识库另外一篇关于管理无线网络上的 802.1X 的组策略的文章有深入的分析。这对于Windows XP /2003来说,的确是很严重的缺陷,令人遗憾。希望在windows下一个补丁可以修复。 

       除此之外,
      “此协议中存在一个重大缺陷:其仅在建立连接时进行身份验证。一旦请求者进行了身份验证且交换机端口处于打开状态,请求者与交换机之间的进一步通信将不被验证。从而使得***者有可能进入网络。


        ——对于这个,之前已经有所了解,做过试验,并已经确认。
       但是,还有些问题当时没有搞清楚。 
       其中一个问题,就是文章中提到的,并且作者给了一个完整解答。

       “***者不能通过 TCP 与网络进行通信 - 受害者计算机将重置由影子主机发起的任何连接。 
       1.影子计算机将 SYN 数据包发送到受保护网络上的某台服务器。
       2.服务器返回 SYN-ACK,影子和受害者计算机都将接收到它。
       3.受害者计算机并不需要此 SYN-ACK,因此其会向服务器返回一个 RST。
       4.服务器返回一个 RST-ACK(确认接收到了 RST 并发送它自己的 RST),影子和受害者计算机都将接收到它。 
       5.影子计算机并不需要此 RST-ACK,但其会保留并终止连接。”

        ——之前我也和作者想法一样,使用同一个账号的两个人,会出现丢包严重的情况,以至于不能完整通信。
       但是这里还有一个问题,如果处于交换网络环境下,情形又是如何?交换机如何处理相同mac地址的情况?它的mac 表会如何? 

       ——但是,作者马上指出,一个非常有趣的例外!这个非常特别!
      “如果受害者计算机正在运行可丢掉未请求的入站 SYN-ACK 的防火墙(大多数防火墙会如此),则受害者计算机不会处理在步骤 2 中接收到的 SYN-ACK,因此也不会向服务器发送 RST。不会发生上述通信顺序的其余操作,影子计算机可对受保护网络进行完全访问。” 


       不过对于作者所说:“***者会将影子计算机的 MAC 和 IP 地址配置为与受害者计算机上的 MAC 和 IP 地址相同。” 
        ——本人认为恐怕行不通。 
       相同的 IP 地址会引起 IP 地址冲突,处于高层的操作系统会发现这一问题,并自动弹出警示。


        最后,作者无线网络不易受***的原因:

       因为 802.1X+EAP 将创建具有按请求者加密密钥的相互验证会话(这称为“动态 WEP”)。由于密钥从不以无线方式进行发送,因此影子计算机***将无效 - 其无法获取密钥。影子计算机无法连接到受害者计算机已与之相连的入口点。因此,从某种意义上讲,具有 802.1X+EAP 的无线网络实际上要比有线网络更安全。 

       同时,对于有线网络,作者强烈建议您使用 IPsec 而不是 802.1X。
11

       总的而言,有线网络上的 802.1X 确实存在一个重大缺陷。
       但是,现在很多厂商都提出了自己的解决方案。
私有的客户端程序,IP、MAC、PORT、VLAN 的多元绑定,应该部分解决问题。