网站被攻击
凌晨三点十七分,网站我正对着屏幕改前端代码,被攻监控面板突然弹出一片猩红。网站CPU曲线像被掐住脖子的被攻蛇,直挺挺冲上100%。网站服务器日志里刷满了同一个IP发来的被攻请求——每秒两千次,全是网站乱码拼成的SQL片段。
网站挂了。被攻准确说,网站是被攻那个承载着三万注册用户的电商站,在愚人节这天被流量打成了植物人。网站第一反应是被攻拔电源,但机房不在本地,网站远程重启也要五分钟。被攻这五分钟里,网站后台订单表被反复写入乱七八糟的数据,购物车接口返回的全是"500 Internal Server Error"。
攻击手法不算高明。典型的CC攻击,就是拿肉鸡疯狂请求登录接口,每次带上不同的随机参数,让缓存彻底失效。我们的防护系统只做了基础WAF规则,对这种高频低危害的请求根本来不及过滤——就像你装了防盗门,但人家压根不走门,直接往墙上撞。
更麻烦的是,攻击者还顺带扒了用户数据库的密码哈希。虽然存的是加盐的bcrypt,但看到十几个账号尝试用弱密码撞库成功,我后背还是发凉。有个用户昵称叫"老张爱钓鱼",密码是"zhang123456",后台显示他在凌晨两点五十八分被异地登录,修改了收货地址。
处理过程没什么戏剧性。先封IP段,没用,对方用代理池轮换。再上CDN清洗,流量被分流了,但攻击请求还是能穿透到源站。最后是手动改配置——把登录接口改成需要滑块验证,同时限制单IP每分钟最多十次请求。折腾到早上六点半,攻击者大概也困了,流量才慢慢降下来。
事后复盘,最讽刺的是我们的监控系统早就发出了告警,但值班人员以为是爬虫,没当回事。等到真正瘫了,才从睡梦中被电话炸醒。另一个细节是,攻击日志里混着一段中文留言:"测试一下,下次该你们老板的邮箱了。"——大概率是同行打击报复,或者某个不满的客户雇了黑产。
这次攻击持续了四小时十七分,直接损失大概两万块(订单丢失+服务器费用),但间接影响没法算。有些用户发现密码被改,开始恐慌性地发工单问"我的钱还在吗",客服那边根本忙不过来。我后来给所有受影响用户发了重置邮件,附了一句"建议您避免使用生日或连续数字作为密码"——虽然知道这话说了也白说。
网站恢复后,我在后台加了道保险:所有登录请求强制走二次验证,哪怕用脚本模拟也过不了滑块。代价是用户吐槽"登录变得好麻烦",转化率掉了百分之三。但没办法,安全这东西,永远是跟便捷性对着干。你问我现在还怕不怕被攻击?怕,但更怕的是那种半夜盯着日志,发现攻击者比你更熟悉系统弱点的无力感。
(责任编辑:百科)
