zoukankan      html  css  js  c++  java
  • TCP服务器“拒绝服务攻击” 解决方案

        说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。
        当服务器以Tcp的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!
        为了增强Tcp服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:

    (1)通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以Token打头,则关闭对应的TCP连接。这样,只要恶意程序连上服务器一发送数据,服务器就可以识别它。
        如果恶意程序只是与服务器建立成千上万个连接,而不发送任何数据,以此来耗尽服务器的可用Tcp连接数了?这就需要第二步。

    (2)服务器可以设定,在客户端连上服务器后指定的时间内(比如50ms)不发送任何数据,则标志该连接为非法连接,马上关闭它。

    (3)使用建立连接的“带外数据”存储标志,如果一个客户连接上来时,没有任何带外数据,或带外数据不正确,则关闭该连接。

    (4)如果,如果,黑客破解了客户端和服务器的通信协议,并写了一个恶意客户端,那你的服务器就分辨不了哪个连接合法、哪个不合法了,这种情况下的唯一出路是,修改你的协议,并采用各种方式(如加密)使之更难破解!

        有更好方法的兄台请跟贴,谢谢!

  • 相关阅读:
    第八届蓝桥杯JavaC组国(决)赛真题
    第八届蓝桥杯JavaC组国(决)赛真题
    第八届蓝桥杯JavaC组国(决)赛真题
    第八届蓝桥杯JavaC组国(决)赛真题
    第八届蓝桥杯JavaC组国(决)赛真题
    Java实现蓝桥杯历届试题填字母游戏
    Java实现蓝桥杯历届试题填字母游戏
    Java实现蓝桥杯历届试题填字母游戏
    Java实现蓝桥杯历届试题填字母游戏
    Qt调用dll中的功能函数
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/328380.html
Copyright © 2011-2022 走看看