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都造成了攻击。

image-20260902143638726

URPF概述

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

image-20260902143844954

URPF工作模式

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

image-20260902143921697

URPF应用场景 – 严格模式

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

image-20260902144003355

URPF应用场景 – 松散模式

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

image-20260902144036623

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上。

20260902145720

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

20260902150019

配置示例IE241212

image-20260902151401377

[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 

image-20260902151325036

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

image-20260902152337213

┌──(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口分别抓包

image-20260902154425700

[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]

image-20260902154712000

[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)
  1. 首先所有数据包来了之后,按照严格/宽松的要求,将数据包的SIP地址跟FIB中的信息做比对

    1)如果是严格模式,不仅要有路由,而且接收到数据包的接口必须跟明细路由的出接口一致

    2)如果是宽松模式,则有路由就行了,接口一不一致不需要检查

  2. 如果fib中查不到你数据包的SIP地址信息的话,则判断你有没有敲allow‑default‑route命令

    1)如果没敲,拦截

    2)如果敲了allow‑default‑route命令

    ​ a) 如果是严格模式,不仅要有缺省路由,而且接收到数据包的接口必须跟缺省路由的出接口一致

    ​ b) 如果是宽松模式,则有缺省路由就行了,接口一不一致不需要检查

  3. 当报文被上述两部都拒绝之后,才会去匹配ACL列表。如果ACL允许通过,则转发数据包;如果ACL不允许通过,则丢包

缺省情况下不启用URPF检查。

URPF的处理流程如下:

  1. 如果报文的源地址在路由器的FIB表中存在

    • 对于strict型检查,反向查找报文出接口,若只有一个出接口和报文的入接口一一匹配,则报文通过检查;否则报文将被拒绝。当有多个出接口和报文的入接口相匹配时,必须使用loose型检查。(反向查找是指查找以该报文源IP地址为目的IP地址的报文的出接口)
    • 对于loose型检查,当报文的源地址在路由器的FIB表中存在且不是黑洞路由时(不管反向查找的出接口和报文的入接口是否一致),报文就通过检查;否则报文将被拒绝。
  2. 如果报文的源地址在路由器的FIB表中不存在,则检查缺省路由及URPF的allow‑default‑route参数。

    • 对于配置了缺省路由,但没有配置参数allow‑default‑route的情况
      不管是strict型检查还是loose型检查,只要报文的源地址在路由器的FIB表中不存在,该报文都将被拒绝。
    • 对于配置了缺省路由,同时又配置了参数allow‑default‑route的情况
       - 如果是strict检查,只要缺省路由的出接口与报文的入接口一致,则报文将通过URPF的检查,进行正常的转发;如果缺省路由的出接口和报文的入接口不一致,则报文将拒绝。
       - 如果是loose型检查,报文都将通过URPF的检查,进行正常的转发。
  3. 当且仅当报文被拒绝后,才去匹配ACL列表。如果被ACL允许通过,则报文继续进行正常的转发;如果被ACL拒绝,则报文被丢弃。

本文链接:https://www.orcy.net.cn/4418.html,转载请附上原文出处链接

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注