URPF技术白皮书

URPF技术白皮书

摘    要:本文介绍了URPF的应用背景,URPF主要用于防止基于源地址欺骗的网络攻击行为,例如基于源地址欺骗的DoS攻击和DDoS攻击;随后介绍了URPF的技术原理以及URPF的几种灵活定制方案(NULL0口,缺省路由,ACL等);最后简要介绍了URPF的典型组网案例。

缩略语清单:

缩略语

英文全名

中文解释

URPF

Unicast Reverse Path Forwarding

单播反向路径转发

FIB

Forwarding Information Base

转发信息库

DoS

Denial of Service

拒绝服务

DDoS

Distributed Denial of Service

分布式拒绝服务

ACL

Access Control List

访问控制列表

ICMP

Internet Control Message Protocol

因特网控制报文协议

 

 

1 背景

单播反向路径转发(Unicast Reverse Path Forwarding),是网络设备检查数据包源地址合法性的一种方法。其在FIB表中查找该源地址是否与数据包的来源接口相匹配,如果没有匹配表项将丢弃该数据包,从而起到预防IP欺骗,特别是针对伪造IP源地址的拒绝服务(DoS)攻击非常有效。

2 URPF应用环境简介

DoS(Denial of Service)攻击是一种阻止连接服务的网络攻击。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。

2.1 TCP泛洪

URPF技术白皮书 - wilson - Wilsons blog

                                                                                                                                                         图1 TCP泛洪攻击案例

攻击的原理是向目标设备发送大量伪装连接的请求包,这些请求包的发起地址设置为目标不可到达的地址,这样对被攻击对象的第二次握手没有主机响应,造成被攻击对象主机内部存在大量的半开连接,以至于新的正常连接不能进入从而造成服务的停顿甚至死机。

2.2 SMURF攻击

SMURF攻击是一种源地址欺骗攻击,攻击者假冒被攻击对象的IP地址向设备发送大量的广播ICMP echo请求报文。因为每个包的目标IP地址都是网络的广播地址,所以设备会把ICMP echo请求报文以广播形式发给网络上的所有主机。如果有大量主机,那么这种广播就会产生大量的ICMP echo请求及响应流量。而且在发送ICMP echo请求数据包时,使用了假冒的源IP地址,所以攻击造成的ICMP流量不仅会阻塞网络,而且会产生攻击流量。

URPF技术白皮书 - wilson - Wilsons blog

                                                                                                                                                         图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会错误的丢弃非攻击报文。

URPF技术白皮书 - wilson - Wilsons blog

                                                                                                                                                              图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处理流程

URPF技术白皮书 - wilson - Wilsons blog

                                                                                                                                                                 图4 URPF流程图

(1)        首先检查源地址合法性:

l              对于广播地址,直接予以丢弃。

l              对于全零地址,如果目的地址不是广播,则丢弃。(源地址为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 典型组网应用

URPF技术白皮书 - wilson - Wilsons blog

                                                                                                                                                                 图5 URPF组网图

在ISP与用户端,配置严格URPF,在ISP与ISP端,配置松散URPF。如果有特殊用户,或者具有一定特征,需要特殊处理的报文,可以配置ACL规则。如果已经发现了某个源地址的攻击报文,配置这个地址的下一跳为一个事先约定的特殊地址(每个ISP上,此特殊地址配置的出接口为NULL0口),并利用BGP协议发布到邻居网络。

posted @ 2016-07-28 09:41 t6 阅读(...) 评论(...) 编辑 收藏