先说个不太体面的经历
去年11月我帮一个做汽配外贸的朋友看邮箱,公司20来人,用的Microsoft 365。财务邮箱被钓鱼,攻击者没改密码,而是在邮箱里加了一条隐藏转发规则,客户回款邮件被转到陌生地址,差点打款3.7万美元,最后是银行风控拦下来的。 我一开始也以为“开了MFA就没事”,结果翻日志才发现:他们MFA只开了管理员,财务没开;POP/IMAP还开着;统一审计日志只往回看了十几天,取证很被动。 这事把我脸打肿了。安全不是买一个“拦截率99%”的盒子,而是先保证三件事:入口收得住、出事看得见、数据回得来。
MFA要分档,不是公司里一刀切
可查证的一个数字:微软2020年那篇博客说MFA能阻止99.9%的账户泄露攻击,但这句话有个坑——短信、语音、普通TOTP遇到实时钓鱼代理,照样能被中间人拿验证码。 所以我的独立观点是:MFA不是“开/关”,而是按角色分三档。管理员和财务用FIDO2安全密钥或Passkey,抗钓鱼;普通员工先用TOTP,别只发短信;外包和临时账号能不用密码就不用密码。 对比一下:大厂搞零信任、设备姿态、条件访问,是因为有专职IAM团队;20人小公司照搬会死在策略冲突上。小公司先做“邮箱+VPN+财务系统”三个入口的MFA,比全公司上10套策略更实际。 具体步骤:先盘管理员角色,M365里Global Admin控制在2-3人;财务邮箱单独开条件访问,非惯常国家/新设备登录强制MFA;5分钟内MFA失败10次就告警;离职账号当天禁用,不要留到“下周处理”。
90天强制改密码,很多时候是在制造弱口令
NIST SP 800-63B早就写了不要对记忆密码做任意周期性更换,2024年的修订草案还在强调这个方向。可国内不少公司制度还写着90天改一次,结果员工每个月在Summer2024!、Summer2024@之间打转。 我见过更离谱的:有人把密码写在显示器边框上,因为“反正下个月又要改”。这不是员工安全意识差,是策略把成本转嫁给了人。 我的做法是改成“事件驱动”:密码最小长度12位,管理员和财务14位;接弱口令黑名单;发现泄露库命中就强制改;离职、共享账号交接、疑似钓鱼后立即改。 另外,别只盯密码。把旧协议关掉更值钱:Exchange Online里关POP/IMAP/SMTP AUTH,检查邮件转发规则。命令不复杂,Get-Mailbox -ResultSize Unlimited | Get-InboxRule | Where-Object {$.ForwardTo -or $.RedirectTo},先跑一遍,隐藏转发规则比病毒附件更阴。
日志留6个月不是建议,是法律底线
《网络安全法》第二十一条写得很清楚,网络日志留存不少于六个月。很多小公司嘴上说合规,实际邮箱日志只留7天到30天,出事后连攻击者第一次登录的IP都找不到。 Microsoft 365统一审计日志默认一般保留180天,E5可以更长;但基础版和混合环境经常被忽略,别等出事才问“日志呢”。我的建议是:先把登录日志、管理员操作日志、邮件规则变更日志集中到一个地方,保留180天起步。 告警不要贪多,小公司先盯5类:境外或非常用地区登录、5分钟内MFA失败10次、管理员角色变更、新增邮件转发规则、短时间批量下载邮箱。每类都要有明确接收人,不然告警就是噪音。 对比大厂“全量采集+SIEM”,小公司更该做“少而准”。我甚至认为,预算有限时,日志留存和备份恢复演练的优先级高于再买一台防火墙。
最后给一套能落地的顺序
第1步,盘入口:邮箱、VPN、NAS、财务系统、代码仓库,列清楚谁有管理员权限。第2步,收MFA:管理员和财务先上FIDO2/Passkey,普通员工TOTP,短信只做兜底。 第3步,改密码策略:最小12位、黑名单、不强制90天、泄露驱动改密。第4步,关旧协议、查转发规则、限制第三方应用授权。 第5步,日志留180天,告警只设5类高价值事件。第6步,备份按3-2-1做,至少1份离线,每季度做一次恢复演练,恢复时间目标先定4小时,别写“越快越好”这种空话。 这套东西不漂亮,但比“零信任大屏”更能救命。安全这件事,我现在的判断很土:先能恢复,再谈拦截;先看得见,再谈智能。