uRPF(Unicast Reverse Path Forwarding)是一种
单播反向
路由查找技术,用于防止基于源地址欺骗的网络攻击行为。
基本概念
通常情况下,网络中的路由器接收到报文后,获取报文的目的地址,针对目的地址查找路由,如果查找到则进行正常的转发,否则丢弃该报文。由此得知,路由器转发报文时,并不关心数据包的源地址,这就给源地址欺骗攻击有了可乘之机。
源地址欺骗攻击就是入侵者通过构造一系列带有伪造源地址的报文,频繁访问目的地址所在设备或者主机,即使受害主机或网络的回应报文不能返回到入侵者,也会对被攻击对象造成一定程度的破坏。
URPF通过检查数据包中源IP地址,并根据接收到数据包的接口和路由表中是否存在源地址路由信息条目,来确定流量是否真实有效,并选择数据包是转发或丢弃。
检查方式
uRPF对报文源地址的合法性检查主要有两种:严格型(strict)和松散型(loose)。另外还支持忽略缺省路由的uRPF检查以及配置了ACL规则的uRPF检查。
通过ACL规则的引入,uRPF给用户提供了一种更加灵活的定制方案。配置了ACL后,在uRPF检查失败的情况下,路由器按照ACL规则permit或者deny报文进行操作。
应用实例
uRPF应用的一个简单实例如图所示。在Router A上伪造一个源地址为3.3.3.3/8的报文,向Router B发起请求,Router B响应请求时将向真正的“3.3.3.3/8”设备(Router C)发送报文。这种非法报文同时对Router B和Router C都造成了攻击。
uRPF可以应用在上述环境中,在Router B的接口上启用URPF功能,即可以阻止基于源地址欺骗的攻击行为。
在本例中,源地址使用一些保留的非全局的IP地址,因此不可达。其实即使是一个合法的IP地址,只要是不可达的也可以用来发起攻击。
另一种情况是攻击者还可以伪造一个源地址,该地址是另一个合法网络的地址并且在全局
路由表中存在。例如,攻击者伪造一个源地址使得被攻击者认为攻击来自于伪造的源地址,但实际上该源地址是完全无辜的,并且有时候
网络管理员会因此而关闭所有来自源地址的数据流,这样正好使得攻击者的
拒绝服务攻击成功实现。
更复杂的情形是TCP SYN
洪泛攻击将使得SYN-ACK数据包发送到完全与攻击无关的许多主机,而这些主机就成了牺牲者。这使得攻击者可以同时去欺骗一个或者多个系统。
作用
通信网络中,诸如DoS攻击、TCP SYN洪泛攻击、UDP洪泛攻击和ICMP洪泛攻击等,都可能通过借助源地址欺骗的方式攻击目标设备或者主机,造成被攻击者系统性能严重的降低,甚至导致系统崩溃。uRPF技术就是网络设备为了防范此类攻击而使用的一种常用技术。