URPF(Unicast Reverse Path Forwarding,单播反向路径转发)的主要功能是用于防止基于源地址欺骗的网络攻击行为。
源地址欺骗攻击为入侵者构造出一系列带有伪造源地址的报文,对于使用基于IP地址验证的应用来说,此攻击方法可以导致未被授权用户以他人身份获得访问系统的权限,甚至是以管理员权限来访问。即使响应报文不能达到攻击者,同样也会造成对被攻击对象的破坏。
在Switch A上伪造源地址为2.2.2.1/8的报文,向服务器Switch B发起请求,Switch B响应请求时将向真正的“2.2.2.1/8”发送报文。这种非法报文对Switch B和Switch C都造成了攻击。
URPF技术可以应用在上述环境中,阻止基于源地址欺骗的攻击。
URPF处理流程:
(1) 首先检查源地址合法性。
- 对于广播地址,直接予以丢弃。
- 对于全零地址,如果目的地址不是广播,则丢弃。(源地址为0.0.0.0,目的地址为255.255.255.255的报文,可能是DHCP或者BOOTP报文,不做丢弃处理。)
(2) 如果报文的源地址在交换机的FIB表中存在,反向查找报文出接口,若其中至少有一个出接口和报文的入接口相匹配,则报文通过检查;否则报文将被拒绝。(反向查找是指查找以该报文源IP地址为目的IP地址的报文的出接口)
(3) 如果报文的源地址在交换机的FIB表中不存在
- 如果配置了缺省路由,只要缺省路由的出接口与报文的入接口一致,则报文将通过URPF的检查,进行正常的转发;如果缺省路由的出接口和报文的入接口不一致,则报文将拒绝。
- 如果没有配置缺省路由,该报文将被拒绝。