TCP服务器“拒绝服务攻击” 解决方案
2006-02-10 15:00
267 查看
说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。
当服务器以Tcp的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!
为了增强Tcp服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:
(1)通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以Token打头,则关闭对应的TCP连接。这样,只要恶意程序连上服务器一发送数据,服务器就可以识别它。
如果恶意程序只是与服务器建立成千上万个连接,而不发送任何数据,以此来耗尽服务器的可用Tcp连接数了?这就需要第二步。
(2)服务器可以设定,在客户端连上服务器后指定的时间内(比如50ms)不发送任何数据,则标志该连接为非法连接,马上关闭它。
(3)使用建立连接的“带外数据”存储标志,如果一个客户连接上来时,没有任何带外数据,或带外数据不正确,则关闭该连接。
(4)如果,如果,黑客破解了客户端和服务器的通信协议,并写了一个恶意客户端,那你的服务器就分辨不了哪个连接合法、哪个不合法了,这种情况下的唯一出路是,修改你的协议,并采用各种方式(如加密)使之更难破解!
有更好方法的兄台请跟贴,谢谢!
当服务器以Tcp的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!
为了增强Tcp服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:
(1)通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以Token打头,则关闭对应的TCP连接。这样,只要恶意程序连上服务器一发送数据,服务器就可以识别它。
如果恶意程序只是与服务器建立成千上万个连接,而不发送任何数据,以此来耗尽服务器的可用Tcp连接数了?这就需要第二步。
(2)服务器可以设定,在客户端连上服务器后指定的时间内(比如50ms)不发送任何数据,则标志该连接为非法连接,马上关闭它。
(3)使用建立连接的“带外数据”存储标志,如果一个客户连接上来时,没有任何带外数据,或带外数据不正确,则关闭该连接。
(4)如果,如果,黑客破解了客户端和服务器的通信协议,并写了一个恶意客户端,那你的服务器就分辨不了哪个连接合法、哪个不合法了,这种情况下的唯一出路是,修改你的协议,并采用各种方式(如加密)使之更难破解!
有更好方法的兄台请跟贴,谢谢!
相关文章推荐
- TCP服务器“拒绝服务攻击” 解决方案
- UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
- [转载]TCP服务器“拒绝服务攻击” 解决方案
- UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
- UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
- Erlang版TCP服务器对抗攻击解决方案
- Web服务器高并发的解决方案&TCP沾包问题&服务器TIME_WAIT异常
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)(解决不可连的问题,解决方案在最后面)
- TCP 服务器与客户端
- 实现TCP并发服务器之二(多线程)
- Windows 2003 sever IIS6.0服务器架站无法访问解决方案总结+++解决办法
- wcf 使用net.tcp 服务器未提供有意义的回复;这可能是由协定不匹配、会话过早关闭或内部服务器错误引起的
- TCP程序设计(单线程服务器和多线程服务器学习)
- TcpTracts( 利用服务器,用于两个或多个私网之间建立tcp连接,可以用于发文件,传语音等 )
- 本地java链接远程服务器Linux上redis出错解决方案
- 三次握手,Socket与http、tcp客户端与服务器连接的区别!
- 从简单到复杂实现TCP客户端服务器通信
- 配置asp.net IIS服务器遇到的问题以及详细图例解决方案
- 服务器http请求https服务时报错解决方案
- 64-TCP/UDP 混合服务器