最近公司内部发生了一起账号被盗事件,一位同事的后台管理账号被用来批量导出用户数据。事后排查发现,密码本身没有泄露,问题出在登录验证方式太单一。这件事再次提醒我们,在日常网络运维中,光靠密码远远不够,必须部署更可靠的防止盗号的网络认证机制。
单靠密码的时代已经过去
很多人还在用“强密码”作为唯一防线,比如大小写字母加数字再加符号。但现实是,撞库、钓鱼页面、键盘记录木马这些手段早就让密码变得不堪一击。你设了再复杂的密码,一旦用户在其他平台泄露过,或者点了个伪装成登录页的链接,账号就可能瞬间失守。
多因素认证(MFA)才是硬道理
现在主流系统都支持多因素认证,也就是登录时除了密码,还得再提供一种验证方式。常见的是时间动态码(TOTP),比如 Google Authenticator 或钉钉验证码。用户扫码绑定后,每30秒生成一个6位数字,即使密码被人拿到,没有这个动态码也登不进去。
另一种是短信验证码,虽然方便,但存在SIM卡劫持风险,安全性不如TOTP。更高级的还可以用硬件密钥,比如YubiKey,插上USB就能完成认证,连输入都不需要,防钓鱼效果极好。
如何在服务端集成TOTP?
以常见的Web后台系统为例,可以在用户设置页增加“开启二次验证”选项。后端生成一个密钥和对应的二维码,前端用otpauth协议展示:
otpauth://totp/Example:admin@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example
用户用认证App扫描后,每次登录就在密码之后要求输入当前的6位验证码。后端用同样的密钥和时间窗口进行校验,匹配才放行。
限制登录行为,主动拦截异常
除了增强认证,还可以通过策略减少被盗风险。比如设置登录失败次数限制,连续输错5次就锁定账户15分钟;再比如检测登录IP是否突变,一个平时从北京登录的账号突然出现在境外,系统可以临时冻结并通知管理员。
有些系统还会记录设备指纹,比如浏览器类型、操作系统、屏幕分辨率等,组合成一个标识。如果用户换设备登录,哪怕密码正确,也会触发额外验证步骤。
别忘了给运维账号特别保护
最该加强防护的其实是运维人员自己的账号。这类账号权限高,一旦出事影响面大。建议强制启用MFA,禁用密码登录,改用SSH密钥或证书认证。对于云平台控制台,也要为每个运维人员分配独立子账号,避免共用主账号。
某次我们给阿里云RAM账号全部启用了虚拟MFA,虽然一开始有人嫌麻烦,但后来发现有个子账号在凌晨尝试频繁调用API,因为MFA没通过被自动阻断,这才避免了一次潜在的数据泄露。
让用户愿意配合才是关键
技术再先进,用户不接受也是白搭。上线MFA时最好配个简单教程,甚至做个内部短视频演示怎么绑定。有些公司还会给完成绑定的员工发个小礼物,提升参与率。毕竟安全不是一个人的事,得大家一起守。