上周三凌晨两点,网站运维群里弹出一条告警:某台边缘节点的安全响应时间从80ms飙到3秒。我爬起来查日志,整改发现有人在疯狂请求一个早已废弃的报告API接口,每秒两千次。网站这不是安全普通爬虫,是整改冲着拖库来的。
天亮后拉了个紧急会议,报告安全组、网站开发组、安全运维组凑一起过了一遍全站资产。整改问题比想象的报告多。最离谱的网站是后台管理入口,居然还挂着默认的安全admin路径,登录失败次数没有限制,整改验证码形同虚设——前端生成的随机数,后端只校验格式不校验值。这相当于门锁装反了,锁舌朝外。
数据库层面更让人冒汗。用户表的手机号字段明文存储,密码哈希用的是MD5加固定盐。MD5早被撞烂了,固定盐等于没加。我当场让DBA导了一份脱敏后的样本,拿彩虹表跑了一下,十分钟解出四十多个弱密码。这些账号里还有三个是运营同事的,其中一个密码是公司名加123。
整改从权限收口开始。所有后台入口迁到内网VPN后面,外网只保留一个经过WAF的登录页。登录失败五次锁定IP十五分钟,验证码改成后端生成、一次一验。数据库连接池的账号权限砍到最低——只给CRUD,不给DROP,不给FILE。原来那个万能账号直接删了,DBA重新按服务拆了六个独立账号,每个只碰自己那几张表。
加密这块换成了bcrypt,每个用户独立盐值,计算成本调到12。手机号用AES-256加密存储,密钥放KMS里,应用启动时拉取,不落盘。密钥轮换周期定成九十天,到期自动触发。历史数据分批迁移,迁移脚本跑了两天,中间还因为一个手机号字段长度超限卡了一次,改完字段类型才过。
API网关加了速率限制,单IP每秒最多五十次请求,单用户令牌每分钟两百次。那个被疯狂请求的废弃接口直接下线,返回410。所有对外接口强制走HTTPS,HSTS头加上,max-age先设了六个月。CSP策略也补了,禁止内联脚本,禁止外部帧嵌入。改完第二天,前端有个老页面白屏了,查了半天是内联的onclick事件被CSP拦了,改成addEventListener才恢复。
日志和监控是最后补的。所有敏感操作记审计日志,谁在什么时间改了哪个用户的哪个字段,全留痕。日志存到独立的ELK集群,保留一百八十天。告警规则重新配了一遍,登录失败率突增、单IP请求量异常、数据库慢查询超过两秒,全部触发企业微信和短信。上周那个告警后来查清楚了,是境外一个扫描器在批量探测,没造成实际泄露,但要不是发现得早,那个废弃接口背后连着的旧库还真有可能被拖走。
现在回头看,这次整改没用什么高深技术,就是把该做的做了。默认配置不改、权限不收、加密用老算法,这些坑踩一个就够喝一壶。安全这事没有一劳永逸,下周还得做一次全量渗透测试,看看有没有新漏的。
顶: 8869踩: 7






评论专区