URPF技术白皮书
关键词:URPF、DoS攻击、DDoS攻击
摘要:本文介绍了URPF的应用背景,URPF主要用于防止基于源地址欺骗的网络攻击行为,例如基于源地址欺骗的DoS攻击和DDoS攻击;随后介绍了URPF的技术原理以及URPF
的几种灵活定制方案(NULL0口,缺省路由,ACL等);最后简要介绍了URPF的典型
组网案例。
缩略语清单:
目录
1 背景
2 URPF应用环境简介
2.1 TCP泛洪
2.2 SMURF攻击
3 魔高一尺、道高一丈——URPF的发展3.1 DoS攻击的发展
3.2 URPF的水土不服——严格URPF的局限
3.3 退一步海阔天空——松散URPF的改进
4 NULL0口——URPF的烽火台
5 缺省路由和ACL,灵活定制你的URPF
5.1 缺省路由
5.2 ACL规则
6 URPF处理流程
7 典型组网应用
1 背景
单播反向路径转发(Unicast Reverse Path Forwarding),是网络设备检查数据包源地址合法性的一种方法。
其在FIB表中查找该源地址是否与数据包的来源接口相匹配,如果没有匹配表项将丢弃该数据包,从而起到预防IP欺骗,特别是针对伪造IP源地址的拒绝服务(DoS)攻击非常有效。
2 URPF应用环境简介
DoS(Denial of Service)攻击是一种阻止连接服务的网络攻击。
DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
2.1 TCP泛洪
图1 TCP泛洪攻击案例
攻击的原理是向目标设备发送大量伪装连接的请求包,这些请求包的发起地址设置为目标不可到达的地址,这样对被攻击对象的第二次握手没有主机响应,造成被攻击对象主机内部存在大量的半开连接,以至于新的正常连接不能进入从而造成服务的停顿甚至死机。
2.2 SMURF攻击
SMURF攻击是一种源地址欺骗攻击,攻击者假冒被攻击对象的IP地址向设备发送大量的广播ICMP echo请求报文。
因为每个包的目标IP地址都是网络的广播地址,所以设备会把ICMP echo请求报文以广播形式发给网络上的所有主机。
如果有大量主机,那么这种广播就会产生大量的ICMP echo请求及响应流量。
而且在发送ICMP echo请求数据包时,使用了假冒的源IP地址,所以攻击造成的ICMP流量不仅会阻塞网络,而且会产生攻击流量。
图2 SMURF攻击案例图
如图2,Attacker仿冒Router B的地址对Router C进行攻击,如果Router C上的网络管理员检测到攻击,将会配置防火墙规则,将所有来自Router B的报文过滤,导致无辜的Router B 无法访问Router C。
此时,被攻击系统的管理员反而成为黑客的帮凶,使一些合法用户失去合法访问的权限。
从上面两个例子可以看出,黑客利用源地址欺骗,一是可以隐匿身份,让人难以发现攻击的源头,二是通过被攻击目标,发起对其他合法用户的攻击,造成一箭双雕的效果。
而这些攻击,仅仅依靠被攻击系统加强防范是无法预防的。
必须通过所有接入端设备,对用户的源地址进行反查,并依据其合法性对报文进行过滤,这样才能从源头抑制攻击,保护合法用户享受服务的权利。
3 魔高一尺、道高一丈——URPF的发展
3.1 DoS攻击的发展
从上世纪90年代到现在,DoS技术主要经历如下几个阶段:
(1)技术发展时期。
90年代,Internet开始普及,很多新的DoS技术涌现。
90年代末发明和研究过许多新的技术,其中大多数技术至今仍然有效,且应用频度相当高。
(2)从实验室向“产业化”转换。
2000年前后,DDoS(Distributed Denial of Service)出现,Yahoo和Amazon等多个著名网站受到攻击并瘫痪。
(3)“商业时代”。
最近一两年,宽带的发展使得接入带宽增加,个人电脑性能大幅提高,使DDoS攻击越来越频繁,可以说随处可见,而且也出现了更专业的“DDoS攻击经济”,DDoS 攻击已经成为网络黑客们敲诈勒索的工具。
3.2 URPF的水土不服——严格URPF的局限
从Dos攻击发展为DDoS攻击,黑客从一台Host,单机作战改为了集团作战,操纵成百上千的傀儡机,发起分布式攻击。
在2000年yahoo等知名网站被攻击后,美国的网络安全研究机构提出了骨干运营商联手来解决DDoS攻击的方案。
其方法就是每家运营商在自己的出口设备上进行源IP地址的验证,如果某个数据包源IP地址对应的路由与入接口不一致,就丢掉这个包。
这种方法可以阻止黑客利用伪造的源IP地址来进行DDoS攻击。
而随着防范措施从在ISP的用户端提升到ISP-ISP端布置URPF技术,网络的复杂性也相应增加。
在不对称路由存在的情况下,URPF会错误的丢弃非攻击报文。
图3 非对称路由图
动态路由协议学到的路由都是对称的,为什么会有不对称路由呢?其实URPF不是根据路由表,而是根据FIB(Forwarding Information Base)表来检查报文合法性的。
FIB表是路由表中最优表项的精简,仅仅挑选路由表中的最优路径,因此,两台设备会产生不对称的报文转发路径。
如图3,当Router A上记录的到Router B的路径为1,Router B上记录的到Router A的路径为2,如果在Router A上配置了URPF,则会将Router B从路径2到来的报文丢弃。
3.3 退一步海阔天空——松散URPF的改进
为了在ISP-ISP端应用URPF,以防范DDoS攻击,URPF从原有的“严格”模式,发展为“松散”模式,松散模式仅检查报文的源地址是否在FIB表中存在,而不再检查报文的入接口与FIB表是否匹配。
这种更为“友好开放”的算法,使得部署在ISP-ISP端的URPF既可以有效地阻止DDoS 攻击,又可以避免错误的拦截合法用户的报文。
4 NULL0口——URPF的烽火台
DDoS攻击发起点比较分散,网络管理员发现后,虽然可以在自己管辖的设备上配置规则,对于发起攻击设备的报文进行抑制,但是攻击报文还可能从其他路径到达其他目标设备,针对这种情况,手工在所有设备上配置规则用以抑制攻击是不现实的。
而URPF可以结合NULL0口与BGP协议,向全网通告非法地址,网络中其他设备自动更新非法报文的下一跳,起到在整个网络中及时抑制攻击报文的作用。
NULL0口是网络设备的一个逻辑口,所有发送到该接口的报文都被丢弃。
当网络管理员发现攻击者的源地址,可以通过配置静态路由到NULL0口,并且结合BGP路由协议迅速扩散到网络中的所有路由器。
收到信息的路由器学习了这条路由后,更新FIB表。
当攻击报文到达时,URPF查询FIB后,发现源地址对应出接口为NULL0,立即将非法报文丢弃。
5 缺省路由和ACL,灵活定制你的URPF
5.1 缺省路由
当设备上配置了缺省路由后,会导致URPF根据FIB表检查源地址时,所有源地址都能查到下一跳。
针对这种情况,H3C的Comware平台支持用户配置URPF是否允许引入缺省路由。
默认情况下,如果URPF查询FIB得到结果是缺省路由,则按没有查到表项处理,丢弃报文。
5.2 ACL规则
通过ACL规则的引入,URPF给用户提供了一种更加灵活的定制方案。
当网络管理员确认具有某一些特征的报文是合法报文,则可以通过配置ACL规则,在源路由不存在(或者源路由是缺省路由,但是URPF没有使能缺省路由)的情况下,不做丢弃处理,按正常报文进行转发。
6 URPF处理流程
图4 URPF流程图
(1)首先检查源地址合法性:
●对于广播地址,直接予以丢弃。
●对于全零地址,如果目的地址不是广播,则丢弃。
(源地址为0.0.0.0,目的地址为255.255.255.255的报文,可能是DHCP或者BOOTP报文。
)
(2)然后检查报文源地址是否匹配FIB表,如果在FIB表中查找失败,则进入步骤5(ACL检查),否则进入步骤3;
(3)如果FIB表中匹配的是缺省路由,则检查用户是否配置了允许缺省路由,如果没有配置,则进入步骤5(ACL检查),否则进入步骤4;如果FIB表中匹配的不是缺省路由,进入步骤4;
(4)检查报文入接口与FIB查询结果是否相符(对于等价路由,只要一条匹配就表示相符),如果相符,则通过检查;如果不符,则查看是否是松散URPF,如果是,则通过,否则说明是严格URPF,进入步骤5(ACL检查);
(5)ACL检查流程,检查用户是否配置了ACL规则,如果报文符合ACL规则,则通过检查,否则丢弃。
7 典型组网应用
图5 URPF组网图
在ISP与用户端,配置严格URPF,在ISP与ISP端,配置松散URPF。
如果有特殊用户,或者具有一定特征,需要特殊处理的报文,可以配置ACL规则。
如果已经发现了某个源地址的攻击报文,配置这个地址的下一跳为一个事先约定的特殊地址(每个ISP上,此特殊地址配置的出接口为NULL0口),并利用BGP协议发布到邻居网络。