正文

今天早上一起床,就上服务器看了下,猛然发现CPU飙升99%,排查了一会,发现是被cc攻击了,网络连接里出现大量syn连接,占用了所有的资源,导致前端无法打开网站,经过许久我终于找到了解决方案,屏蔽syn的连接,这样可以隔绝大部分攻击,下面分享一下我的思路。

解决方案

SYN攻击是利用 TCP/IP 协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。

在SSH用命令 sysctl -a | grep syn 可以看到

net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog 是SYN队列的长度, tcp_syncookies 是一个开关,是否打开SYN Cookie功能,该功能可以防止部分SYN攻击,tcp_synack_retriestcp_syn_retries 定义SYN 的重试次数。

加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分SYN攻击,降低重试次数也有一定效果。

推荐值:

net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_syn_retries = 3

到此,就能隔绝syn连接带来的cc攻击了。

如果觉得我的文章对你有用,请随意赞赏