定义
URPF(Unicast Reverse Path Forwarding)是单播逆向路径转发的简称,其主要功能是防止基于源IP地址欺骗的网络攻击行为。
目的
拒绝服务DoS(Denial of Service)攻击是一种阻止连接服务的网络攻击。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
URPF根据数据包的源IP地址在FIB表中查找对应的出接口,并判断该接口是否与数据包的来源接口相匹配。如果没有匹配表项则丢弃该数据包,从而预防IP欺骗,特别是针对伪造IP源地址的DoS攻击非常有效。
工作模式
在复杂的网络环境中应用URPF时,会遇到路由不对称的情况,即对端设备记录的路由路径不一样,此时使能URPF的设备可能丢弃合法报文,造成设备不能正确转发。
为了解决以上复杂网络中应用URPF的问题,设备实现了URPF的两种工作模式:
- 严格模式
严格模式下,设备不仅要求报文源地址在FIB表中存在相应表项,还要求接口匹配才能通过URPF检查。
建议在路由对称的环境下使用URPF严格模式,例如两个网络边界设备之间只有一条路径的话,这时,使用严格模式能够最大限度的保证网络的安全性。
- 松散模式
松散模式下,设备不检查接口是否匹配,只要FIB表中存在该报文源地址的路由,报文就可以通过。
建议在不能保证路由对称的环境下使用URPF的松散模式,例如两个网络边界设备之间如果有多条路径连接的话,路由的对称性就不能保证,在这种情况下,URPF的松散模式也可以保证较强的安全性。
工作原理
URPF通过获取报文的源地址和入接口,在FIB表中查找源地址对应的接口是否与入接口匹配。如果不匹配,则认为源地址是伪装的,丢弃该报文。通过这种工作方式,URPF能有效地防范网络中通过修改源地址而进行的恶意攻击行为。
如图1所示,在RouterA上伪造源地址为2.1.1.1的报文向RouterB发起请求,RouterB响应请求时将向真正的“2.1.1.1”即RouterC发送报文。这种非法报文对RouterB和RouterC都造成了攻击。
如果在RouterB上启用URPF严格检查,则RouterB在收到源地址为2.1.1.1的报文时,URPF检查到以此报文源地址对应的接口与收到该报文的接口不匹配,报文会被丢弃。