UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
2013-07-28 21:25
295 查看
前面的博客<<使用select和shutdown>>里面的拒绝服务型攻击也有提到。
说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。
当服务器以TCP的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!
为了增强TCP服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:
通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以Token打头,则关闭对应的TCP连接。这样,只要恶意程序连上服务器一发送数据,服务器就可以识别它。
如果恶意程序只是与服务器建立成千上万个连接,而不发送任何数据,以此来耗尽服务器的可用TCP连接数了?这就需要第二步。
服务器可以设定,在客户端连上服务器后指定的时间内(比如50ms)不发送任何数据,则标志该连接为非法连接,马上关闭它。
使用建立连接的“带外数据”存储标志,如果一个客户连接上来时,没有任何带外数据,或带外数据不正确,则关闭该连接。
如果,黑客破解了客户端和服务器的通信协议,并写了一个恶意客户端,那你的服务器就分辨不了哪个连接合法、哪个不合法了,这种情况下的唯一出路是,修改你的协议,并采用各种方式(如加密)使之更难破解!
说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。
当服务器以TCP的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!
为了增强TCP服务器在遭受“拒绝服务攻击”时的稳定性,我采用的方案是这样的:
通信协议的消息头增加Token字段,并且它是消息头的第一个字段。当服务器接收到一段数据,如果这段数据不是以Token打头,则关闭对应的TCP连接。这样,只要恶意程序连上服务器一发送数据,服务器就可以识别它。
如果恶意程序只是与服务器建立成千上万个连接,而不发送任何数据,以此来耗尽服务器的可用TCP连接数了?这就需要第二步。
服务器可以设定,在客户端连上服务器后指定的时间内(比如50ms)不发送任何数据,则标志该连接为非法连接,马上关闭它。
使用建立连接的“带外数据”存储标志,如果一个客户连接上来时,没有任何带外数据,或带外数据不正确,则关闭该连接。
如果,黑客破解了客户端和服务器的通信协议,并写了一个恶意客户端,那你的服务器就分辨不了哪个连接合法、哪个不合法了,这种情况下的唯一出路是,修改你的协议,并采用各种方式(如加密)使之更难破解!
相关文章推荐
- UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
- UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案
- TCP服务器“拒绝服务攻击” 解决方案
- [转载]TCP服务器“拒绝服务攻击” 解决方案
- TCP服务器“拒绝服务攻击” 解决方案
- UNIX网络编程——TCP回射服务器/客户端程序
- unix网络编程各种TCP客户-服务器程序设计实例(四)
- UNIX网络编程——TCP回射服务器/客户端程序
- unix网络编程各种TCP客户-服务器程序设计实例(三)
- UNIX网络编程——TCP回射服务器/客户端程序
- UNIX网络编程2.9端口号2.10端口号与TCP并发服务器
- unix网络编程各种TCP客户-服务器程序设计实例(三)
- Web服务器高并发的解决方案&TCP沾包问题&服务器TIME_WAIT异常
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)(解决不可连的问题,解决方案在最后面)
- 《UNIX网络编程》TCP客户端服务器例子
- unix网络编程各种TCP客户-服务器程序设计实例附环境搭建和编译方法(一)
- unix网络编程各种TCP客户-服务器程序设计实例(二)
- 《unix网络编程》(11)tcp服务器的几种常见状况分析
- unix网络编程各种TCP客户-服务器程序设计实例附环境搭建和编译方法(一)
- unix网络编程各种TCP客户-服务器程序设计实例(二)