IP源地址欺骗如何用uRPF过滤

wen 网络安全 2

本文目录导读:

IP源地址欺骗如何用uRPF过滤

  1. uRPF的核心原理
  2. uRPF的三种工作模式及其过滤逻辑
  3. 实际部署示例
  4. uRPF无法防御的欺骗场景

IP源地址欺骗(IP Spoofing)是一种常见的网络攻击手段,攻击者通过伪造数据包的源IP地址,隐藏真实来源或假冒他人身份。uRPF(Unicast Reverse Path Forwarding,单播逆向路径转发) 是一种有效的防御机制,它通过在路由器或交换机上检查数据包的源IP地址是否“合法”来过滤欺骗流量。

以下是uRPF如何过滤IP源地址欺骗的详细原理和配置逻辑:

uRPF的核心原理

uRPF的核心思想是:一个数据包从某个接口收到后,其源IP地址必须与该接口路由表中到达该源IP地址的路径一致。 也就是说,数据包应该从“回家的路”上进来。

路由器或三层交换机会检查:

  1. 源IP地址:数据包的源IP地址(攻击者伪造的地址)。
  2. 路由表:查找路由表中是否存在一条指向该源IP地址的路由,并且该路由的出接口正好是接收该数据包的接口

如果路径不匹配,则认为源IP地址是伪造的,设备将丢弃该数据包。

uRPF的三种工作模式及其过滤逻辑

uRPF有多种模式,针对不同场景的欺骗流量进行过滤:

严格模式(Strict Mode)

这是最严格的模式,也是防御源地址欺骗的标准模式

  • 检查逻辑

    1. 设备收到数据包,记录其入接口(例如GigabitEthernet0/0)。
    2. 设备提取数据包的源IP地址
    3. 查找路由表,找到去往该源IP地址的最佳路由
    4. 关键判断:该路由的出接口是否正好等于入接口
      • :数据包合法,转发。
      • :数据包非法,丢弃。
  • 过滤效果

    • 有效防御:攻击者伪造一个IP地址(例如192.168.1.100),但该IP地址在路由表中对应的正确出接口是接口A,而攻击者的数据包实际是从接口B进来的,严格模式会直接丢弃。
    • 局限性:如果网络中存在非对称路由(数据包从A口进,但响应报文从B口出),严格模式会误判合法的数据包(例如多宿主服务器、某些P2P流量),严格模式要求网络路由是严格对称的。

松散模式(Loose Mode)

松散模式只检查源IP地址是否存在于路由表中,而不关心接口是否匹配。

  • 检查逻辑

    1. 设备收到数据包,提取源IP地址。
    2. 查找路由表,检查是否存在一条指向该源IP地址的路由(任意接口、任意下一跳)。
    3. 如果存在,则通过;如果不存在,则丢弃。
  • 过滤效果

    • 有效防御:可以过滤掉源IP地址完全不存在于路由表中的欺骗包(例如伪造了一个公网IP,但本地路由表里根本没有它的路由)。
    • 弱点:如果攻击者伪造的IP地址恰好是网络中真实存在的IP(例如攻击者伪造了本局域网的网关IP),且该IP地址存在于路由表中,松散模式会放行,它不能防御“局域网内地址欺骗”。
  • 适用场景:主要用在ISP(互联网服务提供商)的边界路由器上,用来防止源IP地址不在其路由表内的伪造流量(例如DDoS攻击中使用的随机无效IP)。

模式配合:访问控制列表(ACL) + uRPF

这是增强型方案,当启用uRPF时,可以同时应用一个ACL(访问控制列表),ACL用于定义哪些源IP地址是允许欺骗的(例如合法的DHCP地址分配、特定的多播地址),而uRPF负责过滤其他所有欺骗数据包。

  • 逻辑:设备优先匹配ACL,匹配到的放行;未匹配的再执行uRPF检查。

实际部署示例

假设场景:公司内部局域网(192.168.1.0/24),通过路由器A连接互联网,路由器A的接口如下:

  • G0/0:连接到内部交换网络(进接口为局域网方向)。
  • G0/1:连接到互联网。

配置严格uRPF:

interface GigabitEthernet0/0
 ip verify unicast source reachable-via rx  ! 启用严格模式

效果测试:

  1. 正常流量:员工电脑(192.168.1.10)发送数据包到外部网站,数据包从G0/0进,路由器查找去往192.168.1.10的路由,发现出接口是G0/0(因为局域网网段是直连的),匹配,通过。
  2. 欺骗流量:某台电脑(192.168.1.20)伪造源IP为10.0.0.1(非本网段地址)的攻击数据包从G0/0进入,路由器查找去往10.0.0.1的路由,发现最佳路由的出接口是G0/1(指向互联网),但入接口是G0/0,不匹配,uRPF丢弃此包。
  3. 内部欺骗:电脑伪造源IP为192.168.2.1(另一个内网网段)的数据包从G0/0进入,路由器路由表中,去往192.168.2.0/24的出接口可能是另一个接口(比如G0/2),不匹配,丢弃。

uRPF无法防御的欺骗场景

虽然uRPF很强大,但它不是万能的,存在以下限制:

  1. 源IP地址是全网段唯一且对称:如果攻击者伪造的源IP地址就是接收接口直连网段内的合法主机IP(例如在局域网内伪造同网段另一台电脑的IP),并且路由是严格对称的,uRPF无法区分,因为入接口和路由出接口完全一致。
    • 解决方案:通常需要结合DHCP SnoopingIP Source Guard来防御同网段内的IP欺骗。
  2. 非对称路由网络:在严格模式下,误判严重,必须使用松散模式或调整路由设计。
  3. 源IP地址为空或特殊地址:uRPF默认不检查某些特殊地址(如多播、广播、全零地址),攻击者可能利用这些地址,但影响范围有限。
  4. IPv6:uRPF同样支持IPv6,但检查逻辑相同(基于路由表),对于IPv6的链路本地地址(Link-local address)可能会有特殊处理。

uRPF通过反向路径查找机制,强制要求数据包的源IP地址必须符合路由拓扑逻辑,从而有效过滤了以下几种源地址欺骗

  • 源IP地址完全不在路由表中(松散模式)。
  • 源IP地址存在于路由表中,但来源路径错误(严格模式)。

最佳实践建议:

  • 边缘路由器(连接ISP):使用松散模式配合ACL,防止公网源地址欺骗。
  • 内部网关路由器(连接不同VLAN/内网段):使用严格模式,但需确认网络路由是对称的。
  • 接入层交换机(连接主机):通常结合DHCP SnoopingIP Source Guard过滤主机层的欺骗,uRPF主要在汇聚层或核心层使用。

通过合理配置uRPF,可以显著减少利用伪造源IP地址进行的DDoS攻击、TCP RST攻击和反射攻击等威胁。

抱歉,评论功能暂时关闭!