IE241212_路由安全技术(三层安全)
转发面安全
URPF:查找路由表判断你有没有伪造源 IP 地址。
考试题目:
②在 FW 上部署 URPF 技术,防止攻击者仿冒(FTP、WEB 服务器)的 IP 地址访问内部网络。
URPF技术背景
- 随着IP网络的发展,潜在的网络风险也在日渐增加,网络设备会面临各种攻击,其中DoS攻击已经成为Internet上一种非常普遍的攻击形式。
- DoS攻击是一种阻止连接服务的网络攻击。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
- 如图所示:
- RouterA后面的Attack伪造源地址为2.2.2.2的报文向RouterC发起请求;
- RouterC响应请求时将向真正的“2.2.2.2” 即RouterB发送报文,这种非法报文对RouterB和RouterC都造成了攻击。

URPF概述
- 针对前面的攻击形式,提出了URPF(Unicast Reverse Path Forwarding,单播逆向路径转发)技术。该技术根据报文的源IP地址查找转发表中是否存在去往该地址的路由,并判断报文入接口与路由出接口是否一致。如果路由表不存在去往该源IP地址的路由或报文入接口与路由出接口不一致,则丢弃该报文,从而预防IP欺骗,特别是针对伪造源IP地址的DoS攻击非常有效。

URPF工作模式
- 在复杂的网络环境中应用URPF时,会遇到路由不对称的情况,即对端设备记录的路由路径不一样,此时使能URPF的设备可能丢弃合法报文,造成设备不能正确转发。
- 如图所示,RouterC从G0/0/1接口收到PC的合法报文。但是由于路由不对称,会将PC的合法报文丢弃,导致正常用户无法通信。
- 为了解决复杂网络中应用URPF的问题,设备实现了URPF的两种工作模式:严格模式和松散模式。

URPF应用场景 – 严格模式
- URPF严格模式下,设备不仅要求报文源地址在FIB表中存在相应表项,还要求接口匹配才能通过URPF检查。
- 建议在路由对称的环境下使用URPF严格模式,例如两个网络边界设备之间只有一条路径的话,这时,使用严格模式能够最大限度的保证网络的安全性。

URPF应用场景 – 松散模式
- URPF松散模式下,设备不检查接口是否匹配,只要FIB表中存在该报文源地址的路由,报文就可以通过。
- 建议在不能保证路由对称的环境下使用URPF的松散模式,例如两个网络边界设备之间如果有多条路径连接的话,路由的对称性就不能保证,在这种情况下,URPF的松散模式也可以保证较强的安全性。

URPF配置
-
配置接口URPF检查模式。
[HUAWEI] interface GigabitEthernet 0/0/1 [HUAWEI-GigabitEthernet0/0/1] ip urpf { loose | strict } [ allow-default-route ] [ acl acl-number ]注意:URPF通过选择是否配置参数allow-default-route来确定对缺省路由的处理方式。
- 不配置参数allow-default-route时,不管是严格检查还是松散检查,如果报文的源地址在FIB表中不存在,即使找到缺省路由作为其相应的路由,该报文都将被丢弃。
- 配置参数allow-default-route时,如果报文的源地址在FIB表中不存在:
- 严格检查模式下,如果缺省路由的出接口与报文的入接口一致,报文将通过URPF检查,进行正常的转发。如果缺省路由的出接口与报文的入接口不一致,则报文将被丢弃。
- 松散检查模式下,不管缺省路由的出接口和报文的入接口是否一致,都将通过URPF检查,进行正常的转发。
-
如下图场景,此时在防火墙上配置URPF,无法拦截攻击者,需要将URPF配置到R2上。

- 此时严格模式下,R2会检查出接口,拦截攻击者。

配置示例IE241212

[R1]ip route-s 192.168.2.0 24 100.1.1.2
[R1]ip route-s 192.168.2.0 24 200.1.1.2
#
## 路由器的URPF配置
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]urf
[R1-GigabitEthernet0/0/0]urpf ?
loose Loose check
strict Strict check
[R1-GigabitEthernet0/0/0]urpf strict ?
allow-default-route Allow default route
<cr> Please press ENTER to execute command
[R1-GigabitEthernet0/0/0]urpf strict

- 两条等价路由的情况,fib表中存在对应条目,URPF检查可以通过

┌──(root㉿kali)-[~]
└─# route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.232.254
┌──(root㉿kali)-[~]
└─# hping3 -c 200 --rand-source 192.168.10.1 --icmp
// 使用KALI构建icmp包,在FW1的G1/0/0和G1/0/1口分别抓包

[USG6000V1]int g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip urpf ?
loose Don't check interface
strict check interface
[USG6000V1-GigabitEthernet1/0/0]ip urpf strict ?
acl Access list
allow-default-route Allow default route
<cr>
[USG6000V1-GigabitEthernet1/0/0]ip urpf strict
[USG6000V1-GigabitEthernet1/0/0]

[USG6000V1]ip route-s 0.0.0.0 0 192.168.232.145
# 配置缺省路由指向KALI
[USG6000V1-GigabitEthernet1/0/0]ip urpf strict allow-default-route ?
acl Access list
<cr>
[USG6000V1-GigabitEthernet1/0/0]ip urpf strict allow-default-route
当数据包的 SIP 匹配任何路由都匹配不上,且此时此刻你希望数据包能够通过检查进入到网络中时,才会用到 ACL。
[USG6000V1]acl 2000 [USG6000V1-acl-basic-2000]ru per sou 192.168.20.0 0.0.0.255 [USG6000V1-acl-basic-2000]quit [USG6000V1]int g1/0/0 [USG6000V1-GigabitEthernet1/0/0]ip urpf strict allow-default-route acl 2000 [USG6000V1-GigabitEthernet1/0/0]
总结
URPF: 查找路由表判断你有没有伪造源 IP 地址。 怎么样能够通过查找路由表判断你是不是伪造的数据包。
ip urpf strict|loose (allow‑default‑route) (acl xxxx)
-
首先所有数据包来了之后,按照严格/宽松的要求,将数据包的SIP地址跟FIB中的信息做比对
1)如果是严格模式,不仅要有路由,而且接收到数据包的接口必须跟明细路由的出接口一致
2)如果是宽松模式,则有路由就行了,接口一不一致不需要检查
-
如果fib中查不到你数据包的SIP地址信息的话,则判断你有没有敲allow‑default‑route命令
1)如果没敲,拦截
2)如果敲了allow‑default‑route命令
a) 如果是严格模式,不仅要有缺省路由,而且接收到数据包的接口必须跟缺省路由的出接口一致
b) 如果是宽松模式,则有缺省路由就行了,接口一不一致不需要检查
-
当报文被上述两部都拒绝之后,才会去匹配ACL列表。如果ACL允许通过,则转发数据包;如果ACL不允许通过,则丢包
缺省情况下不启用URPF检查。
URPF的处理流程如下:
如果报文的源地址在路由器的FIB表中存在
- 对于strict型检查,反向查找报文出接口,若只有一个出接口和报文的入接口一一匹配,则报文通过检查;否则报文将被拒绝。当有多个出接口和报文的入接口相匹配时,必须使用loose型检查。(反向查找是指查找以该报文源IP地址为目的IP地址的报文的出接口)
- 对于loose型检查,当报文的源地址在路由器的FIB表中存在且不是黑洞路由时(不管反向查找的出接口和报文的入接口是否一致),报文就通过检查;否则报文将被拒绝。
如果报文的源地址在路由器的FIB表中不存在,则检查缺省路由及URPF的allow‑default‑route参数。
- 对于配置了缺省路由,但没有配置参数allow‑default‑route的情况
不管是strict型检查还是loose型检查,只要报文的源地址在路由器的FIB表中不存在,该报文都将被拒绝。- 对于配置了缺省路由,同时又配置了参数allow‑default‑route的情况
- 如果是strict检查,只要缺省路由的出接口与报文的入接口一致,则报文将通过URPF的检查,进行正常的转发;如果缺省路由的出接口和报文的入接口不一致,则报文将拒绝。
- 如果是loose型检查,报文都将通过URPF的检查,进行正常的转发。当且仅当报文被拒绝后,才去匹配ACL列表。如果被ACL允许通过,则报文继续进行正常的转发;如果被ACL拒绝,则报文被丢弃。
发表评论