今天扯下TCP方面的东西,我们知道对与基与TCP协议的应用程序,都需要完成三次握手,再握手后,才能正常通迅。
本TCP的特性是好的,这样可以保障可靠性的传输,可惜,总有那些不法分子,在这个基础上,做些坏事。
什么坏事呢 ?TCP连接需要在握手后,才能传数据,那么在正常建立连接前,也就是三次握手中的一二次状态放到哪呢?
此时,我们的TCP机制就将其放至TCP半连接队列,而将正常的三次握手放到TCP完整连接队列。那现在就有个问题了,我们的
这两个队列都是无限的吗?错。不是。
那么那些不法分子,就想到了,如果我将这些队列都占据了,那么...嘿嘿。正常的请求,不就完了嘛。这就是所谓的SYN攻击,
将其半连接队列占满,那么我们怎么办呢?方法也是有的,如开启syn_cookie,限制syn_ack次数,将半连接队列+全连接队列开大.
OK,也许你防住了,恭喜你!但如果攻击者是以大带宽攻击,我想也没救,只能求助硬件防火墙厂商,或者ISP部门了.
在此,我们只考略半连接被占光了,如果全连接被占光呢?什么?你不知道如何占光?其实就是我们常说的慢攻击啦
简单的说,我写个客户端与服务端正常建立连接,但我与服务端不进行正常通迅,而是每隔一段时间发送一点小数据,或者取
一点小数据,反正就是不让其close,我想我一个客户端与服务端建个几K+连接不成问题吧。我曾用python写了一个telnet慢连接,
执行后,瞬间我的服务器Mem被榨干了,当然我们的服务器硬件性能也不是很好啦。只是说,这种攻击也是相当给力的。
那么我们有没有什么方式来防止呢?那就是可以设置些在指定时间内如果还没有传输完就认定为慢连接攻击,将其主动关闭。
暂时就扯这些吧,有不对的,给俺留言!


如果想了解更多,请关注我们的公众号
公众号ID:opdevos
扫码关注

TCP闲扯_tcp