在IPv4世界中,每个网络运营商和安全管理人员都知道如何识别发送错误IPv4数据的主机。在今天的文章中,我们所说的“错误”意指攻击或发送恶意代码,亦或是破坏可接受使用策略(AUP)和错误配置等行为。
如果IPv4地址仍在使用,那么就很容易:只要浏览访问IP地址的最后路由,找到地址解析协议(ARP)缓冲就可以找到IPv4附带的介质访问控制层(MAC)地址,然后浏览交换机的相联存储机(CAM),找出哪个端口才是这个MAC地址:这样我们就可以找出是哪个IPv4地址出了问题。
如果IPv4地址没有启用,那么问题要复杂一些。信息的关键源码是动态主机配置协议(DHCP) 日志文件,该文件会列出究竟是MAC地址基于时间借用的IPv4地址。在“错误”事件发生的时间里,找到DHCP借用的IPv4地址意味着我们必须寻找一个MAC地址。如果该MAC地址在网络中处于联网状态,那么浏览当前时间的相同DHCP日志文件,它会给出错误主机的当前IPv4地址。如果该主机通过 WiFi进行连接,那么可以查看RADIUS日志,运营商可以找到RADIUS用户名以便识别错误主机的所有者。
当然,上述过程也有变通之法,但是,关键在于如何将这些过程应用到IPv6世界中。因为在IPv6中出现了一些改变:
·ARP被NDP取代。
·只有Vista使用DHCPv6,其他系统默认使用无状态自动配置。
·一个主机可使用多个IPv6地址。
·具备隐私扩展的主机每天都会更改其IPv6地址。
·EUI-64 IPv6地址内置MAC地址。
上面所有的更改都增加了追踪错误IPv6地址的难度。追踪正在使用的IPv6地址和IPv4中的操作类似:找到最近的路由,浏览IPv6 NDP缓存,找到错误主机的MAC地址,然后查看所有交换机找到指定的MAC地址。
如果IPv6地址没有被激活,即便所有路由都发送带有M标记的路由器公告信息,且这些信息迫使所有的DHCPv6主机使用DHCPv6,那么寻找的任务依然艰巨。的确,DHCPv6日志不再包含用于指定IPv6地址的MAC地址,相反,它包含的是DHCP特有标识符,每个DHCPv6主机的标识符都是唯一的,而且不会总是一个MAC地址。
如果主机依靠无状态自动配置,就存在两种情况:最简单的情况是主机使用单独永久性EUI-64 IPv6地址,最困难的则是主机具备隐私扩展。
EUI-64地址在其界面标识符部分有一个‘ff:fe’,所以易于识别。不需要从EUI-64 IPv6地址中分离出MAC地址,然后再去追踪MAC地址。
最糟糕的情况,也就是IPv6地址基于隐私扩展的情况以及该IPv6数据已经离开此网络。这样的话,就无法找到错误主机。幸运的话,可能Web服务器的日志记录了IPv6地址以及相关的用户名称,或者ACL记录了IPv6地址及附带的MAC地址,又或者IPS记录了MAC和IPv6地址,但这都是假设的情况,要凭运气。
简而言之,所有的企业都应该运行DHCPv6服务器,并且在路由通告信息上使用M标记。AUP也应该指明不要使用隐私扩展;这一问题在Windows中很普遍,因为大多数 Linux和Mac操作系统都不会默认使用隐私扩展。微软有阻止使用隐私扩展的设置,也可以用Active Directory将这一设置部署到所有AD域中的主机上。命令如下:
netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent
netsh interface ipv6 set privacy state=disabled store=persistent
责任编辑:小草