背景

故事发生在几年前,按照惯例延迟公开,攻击比较典型,夹杂多种方式,再加上客户帮了倒忙,伤及无辜.当时没记录,现在写出来希望能给大家一些启发,如果有什么错漏的地方,欢迎指正.

客户是视频站,传统的反向代理 + 应用程序服务器结构.中文排名 7000 左右,按理说没什么竞争对手.可是后续一连串针对性攻击表明对方并非误伤,而是目的明确.

第一回合

有一天我正在吃着火锅唱着歌,突然收到系统监控报警,好几台服务器内存告急,扫了一眼 IP, 知道遇到攻击了.反向代理服务器内存要爆了,除了攻击还能是啥?再看看并发数,醉了,之前我都没注意,原来服务器能扛住百万并发:

million_connections

再上服务器确认网络情况,SYNC_RECV爆表,开启net.ipv4.tcp_syncookies并调整其它内核参数,负载逐步恢复正常.

小技巧: 你也可以通过iptables来防御泛洪.

第二回合

好景不长,服务器负载又异常,分析网页日志怀疑是 CC ,和客户沟通后决定部署一套混合的抗攻击规则,需要一点时间.谁知客户为了保住自己网站,将流量导向阿里云 CDN ,结果导致阿里云华东节点挂掉,还好我及时发现,否则会产生天价账单.阿里云挂掉的图忘记截了,只有一个后台流量图:

aliyun_huadong_crash

其实从客户修改 DNS 到被我拨乱反正只有不到10分钟时间,但由于 DNS 缓存的关系,流量图显示时间段较长.可以看到这么短的时间就有 1.4 亿次攻击.

这个回合前后持续几天,对方尝试不同的页面,原理也略有差异.我也在一直调整规则,最终对方放弃了.

尾声

后续又遇到其它客户遇到相似的问题,放任不管被丢进黑洞,所以遇到攻击,一定要处理!