什么是SYN攻击
首先,普及一下TCP建立连接三次握手的过程:
- 客户端发送SYN请求建立连接;
- 服务器回应SYN-ACK之后,进入SYN_RECV状态,此时称为半连接(half-open connect);
- 客户端发送ACK,服务器转入ESTABLISHED状态;
SYN攻击是一种典型的DDOS攻击。客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
如何检测SYN攻击
当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。
在Linux下可以用如下命令检测:
netstat -n -p TCP | grep SYN_RECV
应对SYN攻击的方法
- SynAttackProtect
- SYN cookies技术
- 增加最大半连接和缩短超时时间