防止网络攻击的报文转发方法和网关 |
|||||||
申请号 | CN201010270874.0 | 申请日 | 2010-08-31 | 公开(公告)号 | CN101917450B | 公开(公告)日 | 2013-08-07 |
申请人 | 华为技术有限公司; | 发明人 | 胡玉胜; 秦欣; | ||||
摘要 | 本 发明 实施例 提供一种防止网络攻击的报文转发方法和网关,所述方法包括:当接收到客户端发送的上行报文时,判断所述上行报文是否是ICMP不可达报文;如果所述上行报文不是ICMP不可达报文,则将下行报文令牌计数器置满;判断上行报文令牌计数器是否为零;如果上行报文令牌计数器为零,则丢弃所述上行报文;如果上行报文令牌计数器不为零,则将所述上行报文令牌计数器减一,并将所述上行报文转发到 服务器 端。本发明实施例提供的方法和网关,通过一种令牌机制,监控了基于流的上下行报文的转发流程,防止了任何单向过度发包的情况。 | ||||||
权利要求 | 1.一种防止网络攻击的报文转发方法,其特征在于,所述方法包括: |
||||||
说明书全文 | 防止网络攻击的报文转发方法和网关技术领域[0001] 本发明涉及网络攻击,尤其涉及一种防止网络攻击的报文转发方法和网关。 背景技术[0002] Over Billing(过度计费)是一种常见的网络攻击方式,其原理是,Internet上的服务器,利用其探测到的客户端的IP地址,通过与客户端已经建立的连接来穿透防火墙,向客户端发送大量的报文,导致客户端被错误的计费。这时,客户端会被多计费,导致用户的投诉。 [0003] 为了解决这一问题,可以使用QoS保证技术,在网关侧按照客户端的QoS签约进行下行的限流,这样服务器端发出的超出QoS的报文将被丢弃,然而,如果签约的QoS较大,那么服务器端还是能够发送很多的下行报文,计费还是有很大的误差。因此,目前一般是采用网关与防火墙连动的方式,这种方式下,网关将用户的在线情况通过信令通知到防火墙,防火墙对已经下网的用户的IP地址涉及的流进行清理,完全阻断,当用户再次使用这个IP地址的时候,服务器发起的连接就失效了,报文无法下行,从而保护了用户。但是这种方式仍然存在以下缺陷:1、对于在线的用户,没有好的办法阻断恶意下行流量;2、需要网关设备和防火墙的定制接口的开发工作,并且难以在不同厂家的设备之间使用。 发明内容[0004] 本发明实施例提供了一种防止网络攻击的报文转发方法和网关,以避免网络侧发起的Over Billing的攻击导致的恶意计费,同时改善终端用户的体验。 [0005] 本发明实施例的上述目的是通过如下技术方案实现的: [0006] 一种防止网络攻击的报文转发方法,所述方法包括: [0007] 当接收到客户端发送的上行报文时,判断所述上行报文是否是ICMP不可达报文; [0008] 如果所述上行报文不是ICMP不可达报文,则将下行报文令牌计数器置满; [0009] 判断上行报文令牌计数器是否为零; [0010] 如果上行报文令牌计数器为零,则丢弃所述上行报文; [0011] 如果上行报文令牌计数器不为零,则将所述上行报文令牌计数器减一,并将所述上行报文转发到服务器端。 [0012] 一种网关,所述网关包括: [0013] 接收单元,用于接收客户端发送的上行报文,或者服务器端发送的下行报文; [0014] 逻辑单元,用于在所述接收单元接收到客户端发送的上行报文时,判断所述上行报文是否为ICMP不可达报文;并用于在所述上行报文不是ICMP不可达报文时,判断上行报文令牌计数器是否为零; [0015] 处理单元,用于在所述逻辑单元的判断结果为所述上行报文不是ICMP不可达报文时,将下行报文令牌计数器置满;并在所述逻辑单元的判断结果为上行报文令牌计数器为零时,丢弃所述上行报文,或者在所述逻辑单元的判断结果为上行报文令牌计数器不为零时,将所述上行报文令牌计数器减一; [0016] 发送单元,用于在所述逻辑单元的判断结果为上行报文令牌计数器不为零时,将所述上行报文转发到服务器端。 [0017] 一种防止网络攻击的报文转发方法,所述方法包括: [0018] 当接收到服务器端发送的下行报文时,将上行报文令牌计数器置满; [0019] 判断下行报文令牌计数器是否为零; [0020] 如果下行报文令牌计数器为零,则丢弃所述下行报文; [0021] 如果下行报文令牌计数器不为零,则将所述下行报文令牌计数器减一,并将所述下行报文转发到客户端。本发明实施例提供的方法和网关,通过一种令牌机制,监控了基于流的上下行报文的转发流程,防止了任何单向过度发包的情况。附图说明 [0022] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中: [0023] 图1为本发明实施例的方法应用于网关的网络架构示意图; [0024] 图2为本发明一个实施例的方法流程图; [0025] 图3为本发明另一实施例的方法流程图; [0026] 图4为本发明实施例的网关的组成框图。 具体实施方式[0027] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。 [0028] 图1为本实施例的防止网络攻击的报文转发方法应用于网关的网络架构示意图,请参照图1,该网络架构中除了包括网关GGSN以外,还包括客户端UE以及服务器端Server。在网关GGSN中,可以预先设置每个上行报文允许Server端下行报文的个数,也即预先设置下行报文令牌计数器的个数;也可以在收到上行报文后,利用深度报文解析(DPI)能力获知业务类型,并参考业务类型定义每个上行报文允许Server端下行报文的个数,也即据此设置下行报文令牌计数器的个数,例如HTTP的链接可以设置允许下行报文的个数为5,又例如RTSP的链接,则设置允许下行报文的个数为50;还可以在预先设置了下行报文令牌计数器的个数后,如果收到上行报文,则利用DPI能力获知业务类型,并参考该业务类型对上述下行报文令牌计数器的个数进行调整。如果超出上述定义值,就在网关GGSN丢弃,如此可以阻断Server端不顾客户端响应能力的情况下,过度发送报文。同样的,在该网关GGSN中,也可以预先设置每个下行报文允许客户端上行报文的个数,也即预先设置上行报文令牌计数器的个数;也可以利用深度报文解析(DPI)能力获知业务类型,并参考业务类型定义每个下行报文允许客户端上行报文的个数,也即据此设置上行报文令牌计数器的个数,例如HTTP的链接可以设置允许上行报文的个数为5,又例如RTSP的链接,则设置允许上行报文的个数为10;还可以在预先设置了上行报文令牌计数器的个数后,如果收到下行报文,则利用DPI能力获知业务类型,并参考该业务类型对上述上行报文令牌计数器的个数进行调整。如果超出这个定义值,也在网关GGSN丢弃,如此可以防止客户端向服务器端发送过多的报文。 [0029] 图2和图3为本发明实施例提供的防止网络攻击的报文转发方法的流程图,该方法应用于网关,由网关通过监控客户端在使用业务的过程中建立的流信息,例如TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据包协议),检测上下行的报文的个数,使用上/下行报文作为令牌,来控制报文的转发。其中: [0030] 图2为本发明实施例提供的防止网络攻击的报文转发方法中,当网关接收到客户端发送的上行报文时的流程图,请参照图2,该方法包括: [0031] 步骤201:判断所述上行报文是否是ICMP不可达报文; [0032] 其中,如果下行出现恶意报文,例如服务器端不顾客户端的响应能力,频繁向客户端发送报文,则该报文很有可能为恶意报文,如此则有可能导致上行出现ICMP不可达报文。再例如,从Server端来的下行报文发送给了客户端,客户端没有监听这个端口,认为是非法报文,则向Server端回一个ICMP不可达报文。 [0033] 步骤202:如果所述上行报文不是ICMP不可达报文,则判断上行报文令牌计数器是否为零; [0034] 其中,如前所述,本实施例可以根据前述三种方法设置上行报文令牌计数器的个数,以对报文转发情况进行计数,如果该上行报文令牌计数器的个数为零,则说明发送了过多的上行报文,应该停止上行。 [0035] 步骤203:如果上行报文令牌计数器为零,则丢弃所述上行报文,然后将下行报文令牌计数器置满; [0036] 其中,由于上行报文令牌计数器为零,需要停止上行,则可以将该上行报文丢弃。而由于有上行的报文,则还要将下行报文令牌计数器置满,表示可以允许下行报文的顺畅通过,其中,将下行报文令牌计数器置满的处理也可以放在步骤202中,本实施例并不以此作为限制。 [0037] 其中,如前所述,本实施例可以根据前述三种方法设置下行报文令牌计数器的个数,以对报文转发情况进行计数。 [0038] 步骤204:如果上行报文令牌计数器不为零,则将所述上行报文令牌计数器减一,然后将下行报文令牌计数器置满,并将所述上行报文转发到服务器端。 [0039] 其中,由于上行报文令牌计数器不为零,则说明还可以继续发送上行报文,则此时将该上行报文转发到服务器端,同时将上行报文令牌计数器减一,表示可以发送的上行报文减少了一个。同样的,由于有上行的报文,则还要将下行报文令牌计数器置满,表示可以允许下行报文的顺畅通过,其中,将下行报文令牌计数器置满的处理也可以放在步骤202中,本实施例并不以此作为限制。 [0040] 在本实施例中,根据步骤201的判断结果,如果上行报文是ICMP不可达报文,如前所述,则说明下行可能出现了恶意报文,此时将下行报文令牌计数器清零,也即禁止转发下行报文。 [0041] 本实施例的方法不仅适用于TCP流,也同样适用于UDP流,在此不再赘述。 [0042] 当前状态下,网关作为转发设备,对报文流的健康状态是不关注的,这就导致了客户端不可避免地收到恶意报文,在客户端只能被动响应丢包,而本实施例提供的方法使得网关可以判断报文流是否正常,在网关计费之前丢包,减少了计费误差。 [0043] 图3为本发明实施例提供的防止网络攻击的报文转发方法中,当网关接收到服务器端发送的下行报文时的流程图,需要说明的是,本实施例的方法可以单独进行,也可以结合图2所示实施例的方法进行,本实施例并不以此作为限制,且在结合图2所示实施例的方法进行时,并不限制其先后顺序。请参照图3,该方法包括: [0044] 步骤301:判断下行报文令牌计数器是否为零; [0045] 其中,如前所述,本实施例可以根据前述三种方法设置下行报文令牌计数器的个数,以对报文转发情况进行计数,如果该下行报文令牌计数器的个数为零,则说明发送了过多的下行报文,应该停止下行。 [0046] 步骤302:如果下行报文令牌计数器为零,则丢弃所述下行报文,然后将上行报文令牌计数器置满; [0047] 其中,由于下行报文令牌计数器为零,需要停止下行,则可以将该下行报文丢弃。而由于有下行的报文,则还要将上行报文令牌计数器置满,表示可以允许上行报文的顺畅通过,其中,将上行报文令牌计数器置满的处理也可以在网关接收到服务器端发送的下行报文时执行,本实施例并不以此作为限制。 [0048] 其中,如前所述,本实施例可以根据前述三种方法设置上行报文令牌计数器的个数,以对报文转发情况进行计数。 [0049] 步骤303:如果下行报文令牌计数器不为零,则将所述下行报文令牌计数器减一,然后将上行报文令牌计数器置满,并将所述下行报文转发到客户端。 [0050] 其中,由于下行报文令牌计数器不为零,则说明还可以继续发送下行报文,则此时将该下行报文转发到客户端端,同时将下行报文令牌计数器减一,表示可以发送的下行报文减少了一个。同样的,由于有下行的报文,则还要将上行报文令牌计数器置满,表示可以允许上行报文的顺畅通过,其中,将上行报文令牌计数器置满的处理也可以在网关接收到服务器端发送的下行报文时执行,本实施例并不以此作为限制。 [0051] 本实施例的方法不仅适用于TCP流,也同样适用于UDP流,在此不再赘述。 [0052] 当前状态下,网关作为转发设备,对报文流的健康状态是不关注的,这就导致了客户端不可避免地收到恶意报文,在客户端只能被动响应丢包,而本实施例提供的方法使得网关可以判断报文流是否正常,在网关计费之前丢包,减少了计费误差。 [0053] 本发明实施例提供的方法,通过一种令牌机制,监控了基于流的上下行报文的转发流程,通过对上行和下行报文流程的处理,解决了单向过多地进行上行和下行的问题,防止了任何单向过度发包的情况。由于这个机制是逐流实现的,所以不会影响用户的正常的业务传递。又由于只要进行一个简单的计数和判断即可实施本方案,因此实现简单。 [0054] 图4为本发明实施例提供的网关的组成框图,请参照图4,该网关包括: [0055] 接收单元41,用于接收客户端发送的上行报文,或者服务器端发送的下行报文; [0056] 其中,接收单元41接收到的客户端发送的上行报文或者服务器端发送的下行报文为传输控制协议报文或者用户数据包协议报文。 [0057] 逻辑单元42,用于在接收单元41接收到客户端发送的上行报文时,判断所述上行报文是否为ICMP不可达报文;并用于在所述上行报文不是ICMP不可达报文时,判断上行报文令牌计数器是否为零; [0058] 处理单元43,用于在逻辑单元42的判断结果为所述上行报文不是ICMP不可达报文时,将下行报文令牌计数器置满;并在逻辑单元42的判断结果为上行报文令牌计数器为零时,丢弃所述上行报文,或者在逻辑单元42的判断结果为上行报文令牌计数器不为零时,将所述上行报文令牌计数器减一; [0059] 发送单元44,用于在逻辑单元42的判断结果为上行报文令牌计数器不为零时,将所述上行报文转发到服务器端。 [0060] 在一个实施例中,处理单元43还用于在逻辑单元42的判断结果为,所述上行报文是ICMP不可达报文时,将下行报文令牌计数器清零。 [0061] 在一个实施例中: [0062] 逻辑单元42还用于在接收单元41接收到服务器端发送的下行报文时,判断下行报文令牌计数器是否为零; [0063] 处理单元43还用于在接收单元41接收到服务器端发送的下行报文时,将上行报文令牌计数器置满;并在逻辑单元42的判断结果为下行报文令牌计数器为零时,丢弃所述下行报文,或者在逻辑单元42的判断结果为下行报文令牌计数器不为零时,将所述下行报文令牌计数器减一; [0064] 发送单元44还用于将所述下行报文转发到客户端。 [0065] 在一个实施例中,该网关还包括: [0066] 设置单元45,用于预先设置上行报文令牌计数器的个数以及下行报文令牌计数器的个数;或者,在接收单元41接收到客户端发送的上行报文或者服务器端发送的下行报文后,利用深度报文解析能力获知业务类型,参考业务类型设置上行报文令牌计数器的个数或者下行报文令牌计数器的个数;或者,预先设置上行报文令牌计数器的个数以及下行报文令牌计数器的个数,在接收到客户端发送的上行报文或者服务器端发送的下行报文后,利用深度报文解析能力获知业务类型,根据业务类型调整所述上行报文令牌计数器的个数或者所述下行报文令牌计数器的个数,以提供给逻辑单元42进行报文数量的判断,以及提供给处理单元43进行数值的重置。 [0067] 本实施例的网关的各组成部分分别用于实现前述方法的各步骤,由于在方法实施例中,已经对各步骤进行了详细说明,在此不再赘述。 [0068] 本发明实施例提供的网关,通过一种令牌机制,监控了基于流的上下行报文的转发流程,通过对上行和下行报文流程的处理,解决了单向过多地进行上行和下行的问题,防止了任何单向过度发包的情况。由于这个机制是逐流实现的,所以不会影响用户的正常的业务传递。又由于只要进行一个简单的计数和判断即可实施本方案,因此实现简单。 [0069] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 |