单播RPF应该防止源地址与应允许的源地址不同。在阅读思科关于URPF的文档时,我注意到有一些选项可以通过让它通过路由表通过来允许在上行链路接口上使用。默认路由会不会允许所有源地址?那时URPF会做什么?

我确定我错过了一些东西,所以我真的很想向正确的方向发展。

#1 楼

单播反向路径转发(RPF)具有三种不同的模式,可以潜在地帮助减少路由器的攻击向量,特别是来自欺骗性IP地址的攻击向量。 >
在严格模式下,路由器将根据其转发信息库(FIB)表检查并检查传入数据包的源IP地址,以查找匹配的路由。如果通过接收该源IP地址的接口可到达该源IP地址的路由,则将接收该数据包。默认情况下,在严格模式下(如上配置)不考虑默认路由。严格模式选项:在给定接口上配置单播RPF严格模式后,请按照以下步骤进行操作:

严格模式选项:

,路由器将无法再对该接口执行ping操作:

#sh ip int bri | ex unas|Int
FastEthernet0/0            11.0.11.1

#ping 11.0.11.1                                    
.....
Success rate is 0 percent (0/5)


URPF丢弃数据包的验证: />可以通过添加(config-if)#ip verify unicast source reachable-via rx语法来更改此行为:针对默认路由。通过语法allow-self-ping启用此功能:在严格模式下,单独添加语法(config-if)#ip verify unicast source reachable-via rx allow-self-ping只会阻止接收来自传入数据包的源IP地址的接收,该传入IP地址的IP地址通过与接收的接口不同。这是假设在路由器上没有配置访问列表或空路由。

但是,如果要使用空路由,则将评估最特定的路由,以使接收到的接口可到达的所有可路由源地址都与特定路由或默认路由匹配。首先,在URPF检查到达默认路由之前,它将被视为已知恶意IP范围的黑名单。

示例-来自3.0.0.0/8的所有流量都将被丢弃通过URPF检查:

#show ip int fa0/0 | i ^  [1-9]+ verification drops
     5 verification drops
#show ip traffic | i unicast
     0 no route, 5 unicast RPF, 0 forced drop


此外,您可以指定访问控制列表(ACL)来代替添加allow-default语法来完成允许和拒绝地址的结构化列表。在接收到的接口之外到达的地址以及在定义的ACL中匹配的地址将被丢弃或相应地被允许。

(config-if)#ip verify unicast source reachable-via rx allow-default
(config)#ip route 3.0.0.0 255.0.0.0 null 0

Bad-Source-RTR#ping 11.0.11.1 so l1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 11.0.11.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3 
.....
Success rate is 0 percent (0/5)


最后,您可以指定一个ACL使用allow-default语法,但不会生效。不会根据allow-default选项指定的ACL检查数据包。

!
access-list 23 permit 3.0.0.0 0.255.255.255
access-list 23 deny   4.0.0.0 0.255.255.255 log
access-list 23 permit any
!
(config)#int fa0/0                                 
(config-if)#ip verify unicast source reachable-via rx 23


松散模式

#ip verify unicast source reachable-via rx allow-default ? 
  <1-199>          A standard IP access list number
  <1300-2699>      A standard IP expanded access list number


在松散模式下,路由器将检查传入数据包的源IP地址,并根据FIB表对其进行匹配路由检查。如果到该源IP地址的路由可达,则无论接收该数据包的接口如何,都可以接收该数据包。默认情况下,在松散模式(如上配置)中不考虑默认路由。

松散模式和严格模式具有相似的配置选项;主要区别在于所使用的语法(allow-defaultallow-default)以及传入数据包的源IP地址是否可以通过接收该数据包的接口到达。

R1(config-if)#ip verify unicast source reachable-via any

/> VRF模式

VRF模式可以在给定VRF中利用松散或严格模式,并将针对为eBGP邻居配置的VRF表评估传入数据包的源IP地址。


参考:Cisco URPF白皮书了解单播反向路径转发URPF配置指南

评论


实际应用如何?将其放在上行链路上是否真的有意义/有所不同?

–考克斯利
2013年9月7日在6:29

@codey我不会在上行链路上运行uRPF,而仅在面向客户的界面上运行。 one.time,+ 1,良好的工作,可靠的答案,我想指出的是,在某些非cisco平台上到达null0的静态路由不会导致“松散”模式失败。也许应该使用``接收''而不是``已回复'',即不会接收到失败的RPF数据包。同样,“针对路由表”(RIB)应该更改为“针对转发表”(FIB)。由于存在称为“可行的松散/严格”的uRPF风格,它会针对RIB进行检查(Cisco不支持它,因此仅针对FIB进行检查)。

–ytti
2013年9月7日在6:40

@ytti当我查看Cisco文档时,它只是针对路由表说了一点。我并不是说那是正确的,但是奇怪的是,他们只是说FIB而已。

–考克斯利
2013年9月7日在6:52

想象一下,如果客户宣布BGP前缀192.0.2.0/24,那么您也有指向此核心的静态路由。如果客户接口具有uRPF / strict,则将丢弃来自源地址为192.0.2.42的客户的数据包,即使在RIB(路由表)中存在该条目,也不是/ best /条目,因此不在FIB中。但是,如果您运行“ uRPF /严格可行”数据包将不会被丢弃(JunOS支持可行,因此其文档将提供更多信息)。

–ytti
2013年9月7日在6:56