边缘上的单播RPF


10

假定单播RPF可以防止源地址与应允许的源地址不同。在阅读URPF的思科文档时,我注意到有一些选项,可以通过将其放在路由表中来允许在上行链路接口上使用。

我的问题是,如果按照默认路线进行操作,会不会允许所有源地址?那时URPF会做什么?

我确定我缺少一些东西,所以我真的很想指出正确方向的观点。

Answers:


15

单播反向路径转发(RPF)具有三种不同的模式,可以潜在地帮助减少路由器的攻击向量,特别是来自欺骗性IP地址的攻击向量。

严格模式

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

在严格模式下,路由器将根据其转发信息库(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丢弃的数据包:

#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

可以通过添加以下allow-self-ping语法来更改此行为:

(config-if)#ip verify unicast source reachable-via rx allow-self-ping

此外,如您的问题所述,严格模式可以允许根据默认路由检查传入数据包的源IP地址。这是通过以下语法启用的allow-default

在严格模式下,allow-default单独添加语法只会阻止从传入数据包的源IP地址接收到的数据,该IP地址的路由是通过与接收的接口不同的接口发出的。这是假设在路由器上没有配置访问列表或空路由。从接收接口可访问的所有可路由源地址都将与特定路由或默认路由匹配。

但是,如果要使用空路由,则将在URPF检查到达默认路由之前首先评估最特定的路由,并将其作为已知恶意IP范围的黑名单。

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

(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语法来完成允许和拒绝地址的结构化列表。在接收到的接口之外到达的地址以及在定义的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

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

#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

松散模式

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

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

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

(config-if)#ip verify unicast source reachable-via any ?
  <1-199>          A standard IP access list number
  <1300-2699>      A standard IP expanded access list number
  allow-default    Allow default route to match when checking source address
  allow-self-ping  Allow router to ping itself (opens vulnerability in
                   verification)

VRF模式

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


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


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

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

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

想象一下,如果客户宣布BGP前缀192.0.2.0/24,那么您也有指向此核心的静态路由。如果客户接口具有uRPF / strict,则将丢弃来自源地址为192.0.2.42的客户的数据包,即使在RIB(路由表)中存在该条目,也不是/ best /条目,因此不在FIB中。但是,如果您运行“ uRPF /严格可行”数据包将不会被丢弃(JunOS支持可行,因此其文档将提供更多信息)。
ytti
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.