一种抵御拒绝服务攻击的方法
技术领域
本发明涉及VOIP网络系统安全技术领域,特别是指一种抵御拒绝服务(DOS)攻击的方法。
背景技术
如图1示出的VOIP系统的基本结构,包括服务器(Server)、代理服务器(Proxy)和终端。图1中示出的虚线和实线,分别代表VOIP系统内传输的信令报文和媒体报文,信令报文由服务器或代理服务器进行处理,用来控制建立终端之间媒体流的连接通道;媒体报文通过终端与终端之间建立的媒体流连接通道进行传输。其中,所述的服务器可以是软交换设备或者是网守设备等,以下不再说明。
目前VOIP系统的信令采用了开放的协议体系,包括H.323/SIP/MGCP/H.248(Megaco)等协议。其中,H.323协议采用的编解码格式是ASN.1格式,SIP协议采用的编解码格式为类似HTTP的文本命令格式,MGCP协议采用的编码格式是文本格式,H.248(Megaco)协议采用的编码格式是ASN.1或文本格式。
这些协议报文的编解码操作将消耗服务器CPU的大量资源,对于频率为1GHz的CPU,一秒钟大约只能进行几百次的协议报文的编解码操作。当每秒钟出现更多---如超过1000个协议报文需要编解码处理时,则服务器只会忙于编解码操作,而无法再响应其他的服务请求,也就是所述的拒绝服务(DOS,Denial of Service)。目前PC每秒发送报文的能力远远大于这个“百次”的数量级,即使是频率为100MHz的PC,在10M网络环境中每秒钟都可以发出上万个报文。PC发送报文和服务器编解码协议报文数量的差异,使得很容易通过PC对服务器发起DOS攻击,也就是利用合理的服务请求来占用服务器过多的资源,从而使服务器无法响应其他合法用户的服务请求。
从网络结构的角度来看,VOIP系统的服务器和代理服务器等设备均部属在IP网络平台上,随着目前IP网络的发展及PC的大量普及,使得服务器极易遭受外部攻击。一旦VOIP系统某设备遭受DOS攻击,很容易造成这些设备上操作系统资源被消耗殆尽而当机,无法再响应合法用户的正常服务请求。在NGN网络中,若作为软交换设备的服务器当机,将导致大范围的VOIP语音通信中断。
目前,针对VOIP系统的DOS攻击方式主要为:伪造不同源地址的信令报文进行攻击,以及伪造已经存在的合法用户的信令报文进行攻击。
目前部分防火墙上提供了DOS攻击防范功能,其原理是通过限制一段时间内的一个或多个IP地址信令报文的新建连接数,来抵御过多的服务请求,从而防范DOS攻击。当攻击者伪造不同源IP地址的信令报文进行DOS攻击时,在短时间内将发送大量伪造的信令报文,防火墙检测到大量的新的连接请求后,则启动对连接请求数量的限制进行抵御。这种方式可以用来抵御伪造不同源地址的信令报文攻击,但是,由于合法与伪造的报文均会被阻止于防火墙外,新发送过来的合法信令报文也将被丢弃,从而导致新的信令连接将无法建立;自然,在需要信令交互协商基础上建立的媒体流连接通道也无法建立,从而影响了合法用户的VOIP通讯的建立。
而对于攻击者伪造大量已经存在的连接的信令报文进行攻击时,由于是利用已经存在的连接,防火墙存有该连接的记录,会认为是正常的报文,而使其通过防火墙,使得伪造的报文得以直接攻击服务器,引起服务器DOS的发生。也就是说,目前防火墙对于这种攻击尚没有较好的处理方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种抵御DOS攻击的方法,使VOIP系统的设备可以抵御DOS攻击,并且尽量减小对VOIP连接建立过程的影响。
实现本发明所述的抵御拒绝服务DOS攻击的方法,需要系统设备记录所管辖终端的IP地址和TCP/UDP端口信息,还包括以下步骤:
系统设备接收到报文后,提取所述报文的IP地址和TCP/UDP端口信息,然后在系统设备所记录的终端信息中检索该IP地址和TCP/UDP端口信息,若检索到,将所述报文置入高优先级队列处理;否则将该信令报文置入低优先级队列处理。
其中,所述系统设备记录所管辖终端的IP地址和TCP/UDP端口信息的步骤包括:系统设备接收终端的注册信息,提取终端的IP地址和TCP/UDP端口信息并进行记录。
其中,系统设备配置所管辖终端的IP地址和TCP/UDP端口信息对应报文的速率上限信息,所述将报文置入高优先级队列后进一步包括:系统设备判断当前报文的流量是否达到速率上限,若是,将所述报文置入低优先级队列处理,否则继续当前的处理。
其中,所述的IP地址和TCP/UDP端口信息包括地址转换设备NAT转换后的IP地址和TCP/UDP端口信息。
其中,所述的系统设备为VOIP系统设备,所述的报文为VOIP信令报文。
其中,VOIP系统设备记录根据VOIP信令报文协商建立的媒体流的源IP地址和源TCP/UDP端口及目的IP地址和目的TCP/UDP端口信息,该方法进一步包括:VOIP系统设备接收到VOIP媒体报文后,提取所述媒体报的源IP地址和源TCP/UDP端口及目的IP地址和目的TCP/UDP端口信息,然后在VOIP系统设备中所记录的媒体流的信息检索该源IP地址和源TCP/UDP端口及目的IP地址和目的TCP/UDP端口信息,若检索到,将所述媒体报文接收处理,否则丢弃该媒体报文。
其中,其特征在于,VOIP系统设备对所述建立的媒体流配置其所占用的带宽,限制该媒体流流速。
其中,所述的VOIP系统设备为服务器或代理服务器。其中,所述的服务器为软交换设备或网守设备。
由上述方法可以看出,本发明通过记录终端向服务器注册的IP和TCP/UDP端口,来抵御伪造不同源地址和端口信令报文的DOS攻击;并通过对同一IP和TCP/UDP端口的流量控制,来抑制伪造已存在的合法用户信令报文的DOS攻击;并通过采用不同优先级队列,将可疑的报文放置低优先级队列中,将合法报文置于高优先级队列中,保证合法的报文的传输。并且,还可以在信令报文协商建立媒体流连接通道时记录所分配的IP和TCP/UDP端口来过滤伪造的媒体流,实现对媒体流的DOS攻击的防范。
附图说明
图1为VOIP系统结构的示意图。
图2为本发明抵御DOS攻击的流程图。
具体实施方式
在VOIP系统中,终端需要首先在VOIP服务器上进行注册,由VOIP服务器记录终端的IP地址等用户信息,然后才可以进行VOIP通讯。在终端呼叫时,代理服务器接收终端的呼叫,查询服务器中被叫的地址信息,将呼叫转发给被叫的代理服务器或被叫终端,建立终端与终端之间的VOIP通讯。
首先分析注册过程中终端的IP和TCP/UDP端口的信息。IP地址可以在终端接入网络后由服务器进行动态分配,或者在网络规划时对终端的IP地址进行静态分配。也就是说,一旦终端在向服务器注册后,其IP地址便被确定下来。同时信令协议所使用的TCP/UDP源端口也是确定的,例如使用SIP协议时通常使用的端口是UDP 5060。即使使用地址转换设备(NAT,Network Address Translation)转换终端地址时,针对同一个源IP地址及源TCP/UDP端口转换后的IP地址与TCP/UDP端口也是固定的。总之,对于VOIP系统的服务器来说,已经注册的终端总是对应着一个确定的IP地址和TCP/UDP端口。
本发明由代理服务器记录其所管辖领域内终端的IP地址和TCP/UDP端口信息,根据记录的信息判断接收的报文是否来自地址已知的终端,以确定是否是合法报文,并将判断出的合法报文与可疑报文分别置于不同优先级的队列进行处理,来实现防范DOS攻击。
下面首先对代理服务器记录终端的IP地址和TCP/UDP端口信息进行简要说明。
在终端向VOIP服务器注册的过程中,终端的注册信息会由代理服务器转发给VOIP服务器。代理服务器接收到终端的注册信令后,记录终端的注册信息,至少包括终端的IP地址和TCP/UDP端口。若终端信息经由NAT设备进行了转换,则记录的信息是地址转换后的信息。另外,还可以根据服务器向终端回送的信息记录该终端的注册状态,如注册未完成、注册完成、已注销等。对于本发明来说,这个过程主要是用来得到终端的信息,而不是进行呼叫,因此实际上在记录终端注册过程中的注册信息时,可以不去理会该终端在服务器上注册过程是否完成。以上提到的终端的信息可以记录在代理服务器上设置的终端信息表中,该表内容可以如下表1所示。
项目 |
含义 |
终端IP地址 |
终端的IP地址,或者是经过NAT后的IP地址 |
终端端口 |
终端采用的TCP/UDP端口,或者是经过NAT后的TCP/UDP端口 |
终端状态 |
终端当前的状态,包括注册未完成、注册完成、已注销等 |
速率上限 |
表示允许接收的该终端信令报文的最大流量,当超过此设定的流量时,此终端的报文将降低优先级。 |
表1
其中,该表中的速率上限由管理员根据实际的统计情况进行设置,不同终端对应的速率上限可以不同。
在代理服务器上保存其所管辖范围的各个终端的信息后,代理服务器便可以使用这些记录的信息进行DOS攻击的防范。为了在防范DOS攻击的过程中尽量减小对合法终端呼叫接续的影响,还使用了上面提到的不同优先级的队列来处理收到的报文。下面对代理服务器使用记录的终端信息和不同优先级的队列来防范DOS攻击的过程进行详细说明。
步骤201:代理服务器接收到某信令报文后,提取IP地址和TCP/UDP端口,并在终端信息表中进行检索,若检索到该IP地址和对应的TCP/UDP端口信息,则表示该报文来自已经注册的合法终端,将该报文置入高优先级队列,并执行步骤202;否则将该报文置入低优先级队列进行处理。
本发明在代理服务器上设置了不同优先级的队列,将来自合法地址的信令报文置入高优先级队列进行处理,将来自新的地址,也就是未知地址的信令报文置入低优先级队列进行处理。根据实际情况,还可以将不同的报文进行更细的分类,相应的使用更多个不同级别的队列进行分别处理。例如,对于识别出的类似于119的紧急呼叫的报文可以置入一级优先队列处理,识别出的合法报文可置入二级优先级队列处理,未识别出的报文可置入三级优先级队列处理,这种情况下实际上是考虑了其他的因素而建立的队列。在采用多个优先级队列时,可以采用加权机制来避免低优先级队列一直得不到处理。例如,加权机制可以是使用优先级高低作为权值来处理各个队列,保证低优先级队列有一定的概率可得到处理。
通过步骤201,代理服务器可以识别出未进行记录的不同源IP地址和源TCP/UDP端口的信令报文,并将这类报文置于低优先级队列处理。实际情况中,DOS攻击采用的手法大多为伪造源IP地址的攻击,因此,在这个步骤中可以将检测出的这些未记录的报文置于低优先级队列处理,而对于来自已知终端的信令报文,则会置于高优先级队列进行及时处理,对合法的信令报文处理过程不会造成影响。
步骤202:代理服务器分析当前该源IP地址和TCP/UDP端口对应的信令报文流量是否到达规定的速率上限,若是,则将该报文置于低优先级队列内,否则代理服务器保持将该报文位于高优先级队列进行处理。
通过步骤202,当来自同一个源IP地址和TCP/UDP端口的信令报文的流量超过速率上限时,其报文会被置于低优先级队列处理,这样可以抑制冒用正常用户信令报文的DOS攻击。执行这个步骤时,虽然对所被冒用的合法用户的呼叫接续有影响,但对于其他的更多合法用户来说,则不会产生影响。
根据以上提供的方案可以看出,代理服务器在抵御DOS攻击时,采用了对源IP地址和源TCP/UDP端口的辨识,并结合不同优先级队列及速率上限的方式,来防范DOS攻击,可以在防范DOS攻击时尽量减小对合法用户呼叫和接续的影响。
另外,由于媒体流连接通道是在信令交互协商的基础上建立的,也就是说,负责信令报文处理的代理服务器可以获取所建立的媒体流的地址等信息,因此在代理服务器上还可以创建并维护一个如表2示出的媒体流信息表来记录媒体流相关信息。
项目 |
含义 |
源IP地址 |
源IP地址 |
源端口 |
源TCP/UDP端口 |
目的IP地址 |
目的IP地址 |
目的端口 |
目的TCP/UDP端口 |
最大带宽 |
表示此媒体流所允许占用的最大带宽,这个值可以用于对媒体流进行带宽的限制 |
表2
这样,当代理服务器接收并转发媒体流报文时,首先取出媒体流的源IP地址和源端口以及目的IP地址和目的端口,与保存的媒体流信息表中的相应内容进行比较,如果该表内不存在这些信息,则表明是非法的媒体流,可以直接拒绝;另外,还可进一步对媒体流占用的带宽进行限制来抵御DOS攻击。这样当某合法媒体报文被伪造进行DOS攻击时,虽然可能会导致该条媒体流通道被伪造的媒体报文所占满,但是由于对传输该媒体报文的媒体流占用的带宽进行了限制,因此不会影响其他用户所使用的媒体流通道,也就不会对其他合法用户的通讯造成影响。
信令报文一般是来自固定的源IP地址和源TCP/UDP端口、发向固定的目的IP地址和目的TCP/UDP端口,信令报文比较好伪造,因此防范信令报文的DOS攻击意义较大。媒体流与信令流相比,存在的时间一般较短,而且每次媒体流的IP地址和TCP/UDP端口信息一般都是不一样的。因此若伪造已存在的合法的媒体流,需要同时伪造动态的源IP地址和源TCP/UDP端口以及动态的目的IP地址和目的TCP/UDP端口,难度非常大,从概率的角度上来讲可以说伪造已存在的合法媒体流的DOS攻击基本的概率极小。即使发生了媒体流的DOS攻击,也可以通过带宽控制对该媒体流进行限制,减小对其他合法用户的影响。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。