基本概念
通常情况下,网络中的路由器接收到报文后,获取报文的目的地址,针对目的地址查找路由,如果查找到则进行正常的转发,否则丢弃该报文。由此得知,路由器转发报文时,并不关心数据包的源地址,这就给源地址欺骗攻击有了可乘之机。
源地址欺骗攻击就是入侵者通过构造一系列带有伪造源地址的报文,频繁访问目的地址所在设备或者主机,即使受害主机或网络的回应报文不能返回到入侵者,也会对被攻击对象造成一定程度的破坏。
URPF通过检查数据包中源IP地址,并根据接收到数据包的接口和路由表中是否存在源地址路由信息条目,来确定流量是否真实有效,并选择数据包是转发或丢弃。
检查方式
RPF对报文源地址的合法性检查主要有两种:严格型(strict)和松散型(loose)。另外还支持忽略缺省路由的uRPF检查以及配置了ACL规则的uRPF检查。 在接口上设置严格模式的uRPF:路由器对从该接口进入的数据包源地址进行查询,如果报文的源地址在路由表中存在(为正常的源地址路由或者缺省路由),并且报文的入接口等于路由的出接口,则认为该报文合法,否则丢弃该报文。在接口上设置松散模式的uRPF:路由器仅检查报文的源地址是否在路由表中存在(正常的源地址路由或者缺省路由),而不再检查报文的入接口与路由表是否匹配。这使得uRPF既可以有效地阻止网络攻击,又可以避免错误的拦截合法用户的报文。
应用实例
uRPF应用的一个简单实例如图所示。