当前位置: 代码迷 >> VC/MFC >> 请问下如何防TCP的攻击
  详细解决方案

请问下如何防TCP的攻击

热度:92   发布时间:2016-05-02 03:32:26.0
请教下怎么防TCP的攻击?
是这样,假设A为攻击一方,B为本服务端

A抓到一段合法的数据包(就是可以正常让服务端解析做出响应的包)
A再利用肉鸡大批量链接到B,发送这个数据包

B要怎么判断或者防御呢?

我想过数据包加密,但是就算加密了,人家抓到加密后的数据包 发这段加密后的包 B还是防御不了

用第三方防火墙软件吧,会有误杀,纠结了,小弟对socket这块不怎么理解。

望大家给个思路,谢谢!
------解决思路----------------------
让每次加密都不同呢
------解决思路----------------------
我的做法是:

(客户端)生成包的时候,加一个唯一值(比如时间,你可能还要加上客户机的唯一编号),再加上这个唯一值的校验(比如MD5(时间+包的内容))。

每次请求都加这两个东西。请求失败再次发送时,也要再次另外生成这两个东西。

那就在技术上保证,每次请求,包中的内容一定是唯一的。

当出现两个一样的包,那就表明至少第二次的请求是假的,人家跟踪过的。

同一个IP,短时间内多次(比如3次,甚至只是一次也可以),加入黑名单。短时间内,比如24小时,来自这个IP的请求,不响应。或如果你坏一点,返回给它一个随机的垃圾数据,算死他。

同样,同一个客户端短时间内,多次发了重复的包,也加黑名单。
------解决思路----------------------
这个直接防火墙等来设置规则,比如同一IP请求太频繁,请求数据都是重复的。然后就是你自己用时间或其他的加密等添加字段,服务端解析然后判断是否还原回来是时间戳,而且时间应该在一个范围之内等
------解决思路----------------------
光看题目,还以为是防ddos,原来是这个。。。

你用加密是没有用的,攻击方你用大量肉鸡来连接你的服务器,这本身就是合&法的访问行为,你是无法区分的。
就像你自己所说的——误杀,其实就是因为你无法区分那个是合&法的,哪些是非&法的。

如果你想解决这个问题,除非你知道哪些肉鸡的IP地址,然后逐一禁止访问;
或者可以通过流量控制来限制A所发起的肉鸡攻击行为,你可以限制每IP每秒钟的最大请求次数,超过次数就丢弃,这样可以保护服务器资源。

不过话说回来了,如果A拥有足够的肉鸡(其实就是拥有足够IP和上行带宽),他又想把你的B弄垮掉,他真没必要那么费事来模拟正常请求,他可以通过SYN flood(TCP层的,都不用经过你的应用),就能把你的B轻轻松松的弄瘫痪掉;或者再直接一点,让这些肉鸡不断的给你的B发送数据包,占满B的所有带宽,你的B也就废了。

总结一下:
1. 针对像SYN flood这样的技术性攻击,如果你的B运营着非常重要的业务,那么请为它配置硬件防火墙,这是免不了的。
2. 针对像直接打满你的B流量的这种攻击,请放弃抵抗,耐心等待A玩腻了,自然你的B也就恢复了。
------解决思路----------------------
1.写个加密算法,让每次发送的数据都不同,提高对方破解成本。
2.对受攻击时间内的ip做限制,这样虽然会损失一小部分正常客户,但是保证了大部分客户的正常访问
------解决思路----------------------
虚心聆听4楼教诲!
  相关解决方案