常在岸边走,哪有不湿鞋,某服务器遭受TCP攻击简单处理
环境:
阿里云 2c4g 固定1m带宽 静态放CDN
现象:
丢包,页面打不开,无法通过公网进服务器,服务器大量的TCP链接,流入带宽300M
原理:
几十上百万IP向服务器80端口发起连接请求,致使服务器收到大量SYN/ACK请求数据,就这样目标服务器接收到大量不属于自己连接进程的syn/ack报文,最终造成带宽、CPU等资源耗尽,拒绝服务。
优化系统、通过iptables限制IP的单个并发连接,机器配置不够防护不过来,并且对业务影响也不好。
此次攻击并非是cc攻击,所以并没有根据IP、URL、Referer、User-Agent进行防护。
解决:
查看TCP状态有大量的链接
ss -s
Total: 128367 (kernel 128395)
TCP: 149625 (estab 92038, closed 5000, orphaned 16384, synrecv 0, timewait 5000/0), ports 0
Transport Total IP IPv6
* 128395 - -
RAW 0 0 0
UDP 7 4 3
TCP 144625 144622 3
INET 144632 144626 6
FRAG 0 0 0
攻击源通过控制大量机器telnet domain.com 80 发送几个字符串过来
所有域名上CDN,攻击到了CDN的节点后无法到达服务器
后续,攻击转为telnet ip 80,也就是源IP被暴露出来,此时不使用阿里云安全服务就得更换IP
1.查看域名解析,把泄露出源IP的后台域名去掉解析
2.迁移数据到一台没有外网IP的服务器上
3.使用阿里云的弹性IP挂载到无外网IP上,这样,可以避免因程序漏洞泄露外网IP,避免直接暴露源IP
4.域名上CDN,并修改回源IP,因业务为动态,所有请求回源。
应急操作:
1.内网链接ssh
2.可用阿里云安全组关闭被攻击的端口,如80端口。
来源:oschina
链接:https://my.oschina.net/longquan/blog/3130284