一、SYN攻击(属于DOS攻击)
什么情况下被动方出现SYN_RCVD状态?(flood攻击服务)
客户伪造 “ip+端口”,向服务端发送SYN请求。完成两次握手,第三次服务端等待客户端ACK确认,但由于客户不存在,服务端一直未收到确认,启动超时重发机制,当服务端重发到一定次数后(linux下配置:/proc/sys/net/ipv4/tcp_syn_retries
),仍未收到确认,服务端放弃并断开连接。
对服务端会造成怎样攻击?
- 占满半连接队列,让正常请求无法到达
- 每次重发时都要轮询比较未完成连接队列,占用服务端资源
server端检测SYN攻击:
当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:
netstat -nap | grep SYN_RECV
(-n:不做名字解析 -a:显示所有套接字 -p:显示pid和对应程序名)
解决方式:
- 缩短超时时间、增加最大半连接数、过滤网关防护(防火墙代理转发).
- 监视并释放半连接队列中的大量无效连接(无奈之举:可能会影响正常请求)
- 采用 syn cookie(未正常通过三次握手的半连接,服务端不会提前为其分配资源)
- 针对攻击