2.4 三层和四层欺骗
IPv6安全
和IPv4一样,您可产生没有一个合法源地址的精心伪造的IPv6数据包。如果黑客执行单向(盲)攻击或试图利用信任关系执行攻击,就能够使用这种技术。在IPv4网络中,通常情况是禁止数据包的源路由,因为其允许攻击者接收返回流量。在IPv6网络中,因为IPv6的层次化寻址方式,所以将限制这种攻击。
由组织机构的Internet服务提供商(ISP)向组织机构分配IPv6地址块,所以当组织机构发出Internet流量时,仅使用那些被分配的地址块。如果从那个组织机构发出的数据包不是源自其被分配的地址块,则应该丢弃那些数据包。如果组织机构接收到的数据包具有与其被分配的地址块不同的目的地址,则这些数据包就是无效数据包,应该被丢弃。一种有案可查的最佳实践(BCP38/RFC 2827)是针对IPv4网络执行进入/出过滤。虽然针对IPv6过滤当前没有有案可查的最佳实践,但逻辑上相同类型的过滤将是有益处的。而且针对IPv6进行入口过滤是比较容易的,原因其寻址结构是层次化的。人们也应该实现IPv6多播源地址数据包的入口过滤,原因是正常情况下不应该出现这类数据包。
注释
一些极大型的组织机构可有与提供商无关的(PI)的IPv6前缀。为了更灵活,他们通常具有通过多个ISP到Internet的多条连接;这被称作多宿连接。在这种情形中,ISP的进入/出过滤设置是比较复杂的,但仍然应该可以完成。
如果一个IP数据包进入到一个接口,该接口不是用来向那个源地址发回一个数据包的接口,那么这就是IP数据包具有一个伪造源地址的另一个标志。那将意味着该数据包来自于一个不正确的载体,其源也许是不合法的。因此,路由器必须比较进入数据包的源地址,以便验证数据包到达正确的接口。如果单播数据包不是来自于相同的反向路径,则应该过滤这个数据包。
您能够产生具有欺骗源地址的精心伪造的IPv6数据包,并将它们发送到网络上。例2-30显示,您可使用Scapy6产生这些数据包。在这种情形中,Scapy6脚本产生一条源于“spoofsrc”并发送到“dest”的一个ICMPv6回声请求数据包。攻击者位于VLAN 11(2001:DB8:11:0/64)的一台主机上,但发出来自VLAN 12(2001:db8:22:0/64)的数据包。当在VLAN 22(2001:DB8:22.0/64)上的主机接收到这条数据包时,那台主机向它认为发送该数据包的主机发出一条回声应答。在VLAN 12上的未知主机之后就接收到它没有预料到的一个回声应答数据包。在这种情形中,那台VLAN 12主机向VLAN 22上的主机发送一个ICMPv6参数问题数据包。在本章前面的图2-3给出了这种网络拓扑的一个例子。
例2-30 Scapy6精心伪造具有欺骗源地址的数据包
这个测试是成功的,原因是当在目的主机上使用嗅探器时,数据包解码显示,在VLAN 22上的节点dest接收到数据包,并向VLAN 12上的节点spoofsrc地址发回一个回声应答数据包。
为了防止这些类型的地址欺骗攻击,您可使用进入/出过滤,并使用称为单播反向路径转发(单播RPF)检查的一项技术。在一台Cisco路由器中,单播RPF检查Cisco快速转发(CEF)表,基于路由表(转发信息库[FIB])中的信息验证流量应该从哪里发出。路由器将源地址与其FIB(路由表)进行比较,查看向那个子网发回流量时将使用哪个接口。比较两个接口:从路由表中确定的接口和数据包接收到的接口,如果这两个接口不同,则数据包就没有通过RPF检查。如果在FIB中朝向源的路径不匹配数据包的到达接口,则路由器就识别出了一个问题。之后就丢弃数据包,原因是该数据包一定是从不能返回到源的一个接口上接收到的,至此路由器得出结论,即该数据包一定具有一个欺骗的源地址。
在这个例子中,将单播RPF命令添加到路由器的接口,帮助捕获Scapy6欺骗数据包。例2-31是如何设置单播RPF过滤的一个Cisco配置示例。首先,在路由器上激活CEF,之后将反向路径命令应用到被路由的接口。
例2-31 接口上的单播反向路径过滤
当产生欺骗的数据包时,由接口上的单播RPF命令阻止这些数据包。如例2-32中的一条show命令,可确认路由器阻塞了这个数据包。存在几条命令可显示数据包是因为单播RPF检查失败而被丢弃。丢弃是在VLAN 20上发生的,原因是这是导引回到VLAN 11上的攻击者的路径,是由该攻击者发出的欺骗数据包。因此,单播RPF措施在最接近源处丢弃数据包。
例2-32 查看CEF VFR数据包计数统计信息
例 2-33 给出一个单播 RPF ACL 的另一个例子,该 ACL 产生前缀2001:db8: 100:100::/64的一个例外。这意味着对于源自2001:db8:100:100::/64前缀的数据包,将不执行RPF检查。
例2-33 单播RPF例外访问表
在一台Cisco路由器内部可执行两种不同类型的单播RPF检查。
严格模式比照当前有效的路由表(FIB)检查进入数据包。如果在一个接口不同于由FIB确定的路径上接收到数据包,则丢弃该数据包。
松散模式(只要存在)仅检查到达数据包的源地址是否出现在路由表中,而不将接收接口与路由表中的接口加以比较。一些Cisco设备不支持松散模式(例如Cisco 12000系列和Catalyst 6500系列)。但是,具有超级管理器32s或720s的Cisco 6500交换机以硬件方式支持单播RPF。
随着时间推移,预计仅支持严格模式的ipv6 verify unicast reverse-path [access-list**name]命令将被淘汰,而倾向于采用新的参数,从而允许对单播RPF的更细粒度的控制。较新的命令语法如下。
为配置严格模式单播RPF,使用如下接口命令。
为配置松散模式单播RPF,使用如下接口命令。
allow-default参数用于匹配默认路由的查找。其他参数allow-self-ping允许路由器ping在其接口上配置的辅助地址。