URPF概述
URPF(Unicast Reverse Path Forwarding,单播反向路径转发)的主要功能是用于防止基于源地址欺骗的网络攻击行为。
源地址欺骗攻击为入侵者构造出一系列带有伪造源地址的报文,对于使用基于IP地址验证的应用来说,此攻击方法可以导致未被授权用户以他人身份获得访问系统的权限,甚至是以管理员权限来访问。即使响应报文不能达到攻击者,同样也会造成对被攻击对象的破坏。
源地址欺骗攻击示意图
如图所示,在Router A上伪造源地址为2.2.2.1/8的报文,向服务器Router B发起请求,Router B响应请求时将向真正的“2.2.2.1/8”发送报文。这种非法报文对Router B和Router C都造成了攻击。
URPF技术可以应用在上述环境中,阻止基于源地址欺骗的攻击。
URPF处理流程
URPF检查有严格(strict)型和松散(loose)型两种。此外,还可以支持ACL与缺省路由的检查。
URPF的处理流程如下:
(1) 如果报文的源地址在路由器的FIB表中存在
对于strict型检查,反向查找报文出接口,若其中至少有一个出接口和报文的入接口相匹配,则报文通过检查;否则报文将被拒绝。(反向查找是指查找以该报文源IP地址为目的IP地址的报文的出接口)
对于loose型检查,报文进行正常的转发。
(2) 如果报文的源地址在路由器的FIB表中不存在,则检查缺省路由及URPF的allow-default-route参数。
对于配置了缺省路由,但没有配置参数allow-default-route的情况,不管是strict型检查还是loose型检查,只要报文的源地址在路由器的FIB表中不存在,该报文都将被拒绝;
对于配置了缺省路由,同时又配置了参数allow-default-route的情况下,如果是strict型检查,只要缺省路由的出接口与报文的入接口一致,则报文将通过URPF的检查,进行正常的转发;如果缺省路由的出接口和报文的入接口不一致,则报文将拒绝。如果是loose型检查,报文都将通过URPF的检查,进行正常的转发。
(3) 当且仅当报文被拒绝后,才去匹配ACL。如果被ACL允许通过,则报文继续进行正常的转发;如果被ACL拒绝,则报文被丢弃。
本文链接地址: https://danteng.org/h3c-urpf/