今天我再次思考了那个网关的问题,然后我在想会不会是受到了SYN攻击呢?
何谓SYN攻击?
SYN攻击是利用TCP协议3次握手的逻辑漏洞而发起的攻击。TCP连接建立3次握手,首先是客户端发起SYN包请求连接,服务器接收到之后会返回SYN+1包和ACK包给客户端,客户端接收到之后,会返回ACK+1包给服务器,那么连接就建立了。问题就发生在第3次握手,如果客户端不返回ACK+1包,服务器会怎么样呢?服务器会等待,等待超时后会重发SYN+1包和ACK包,重发一定数目之后才放弃这个连接。
如果模拟了很多客户端,即伪造IP,然后去连服务器,那么服务器便会因为连接数增多而变得更耗CPU和内存,最后导致服务器崩溃。
根据SYN攻击的特点和后果,我下了一个TCPZ软件,然后让运维放到服务器上面,发生问题后就去看一下历史的SYN峰值是多少,如果有上百个,那肯定就是SYN攻击了。如果没有,那么就是别的原因了。
对此我问了主程,他说他刚刚开始也怀疑过SYN攻击,但是问题发生之后,他在终端里敲了个“netstat -o”来查看有多少"SYN_RECIEVED",发现全部都是"ESTABLISHED",而且第三次握手持续的时间是两个小时(主程说的),那么他就把这个问题排除了。我是觉得这样就排除,是很不靠谱的,所以明天我会收集更多的证据,去证明他是错的。
请原谅我就是这么爱深究。
原文:http://my.oschina.net/chrisforbt/blog/472708