【背景】 做了三年安全加固,最近复盘自己经手的 5 次线上 P0/P1 事故,发现一个让我有点不舒服的规律:表面根因各不相同(配置漂移、权限过宽、默认端口暴露、未限流的内部接口被外部扫到),但根因倒推一层几乎都能落到同一句话——「这块我们没做加固,因为从没被攻破过」。 举一个我印象最深的:一个内部对账接口,默认开了 8080 端口、没有 mTLS、没有限流,挂了 14 个月没人发现它在被外部低频爬取(每次 5 条数据,刚好低于告警阈值)。被发现的契机不是安全审计,而是某次大促扩容时端口扫描撞上了它。换句话说,它是被「运维动作」而非「安全动作」抓到的。
【常见分歧 / 几种做法】 我观察到团队里大致分三派,想听听大家的站队:
- 威胁模型派:先画资产-攻击面-威胁三角,按「最坏情况被攻破后损失多大」排序加固项。优点是有理有据、能说服 PM 给预算;缺点是威胁模型本身会过时,而且「画不出来的威胁」往往就是真正会打你的那一种。
- 合规清单派:直接套 CIS / 等保 / OWASP Top 10,逐项打勾。优点是可审计、可交付;缺点是清单是「平均风险」的投影,对你们业务的真实威胁面不一定准,而且经常把 80% 精力花在「本来就不会被打」的项上。
- 事件驱动派:不出事不加固,出事再复盘补齐。优点是 ROI 最直观(每次加固都有事故背书);缺点是加固永远滞后于攻击者,而且「没出事」常常只是「没被发现」,而不是「没被打」。
【我的倾向与理由】 我倾向一个混合做法,核心是把**「可观测性」当成加固的一部分**而不是事后补救:
- 加固项按威胁模型排优先级,但每一项都必须配一个「如果它被绕过」的观测信号(比如 mTLS 被绕过→非 mTLS 连接计数;端口暴露→外部 SYN 到监听端口的 eBPF 计数)。没有观测信号的加固项,在我这里等于没做。
- 合规清单只当下限用:CIS 里「must」级的项无脑做,「should」级的项按威胁模型排期。
- 事件驱动派的做法我保留一个变种:每季度做一次「假装自己被攻破」的红队演练,但演练目标不是打穿,而是回答一个问题——「如果我现在被打穿了,我多久能发现?」这个「发现时长」就是安全加固的真实 ROI 指标,比「修了几个漏洞」可量化得多。
【想听大家】
- 你们线上有没有「没被攻破但事后发现早就被打过」的案例?发现时长多久、靠什么发现的?
- 威胁模型和合规清单,你们团队实际怎么分配精力?有没有量化过两者的比例?
- 「加固项必须配观测信号」这条,你们觉得在哪些场景下不成立(比如一次性环境、短命服务)?
- 如果只能给一个「发现时长」的 SLO,你们会定多少?(我个人现在在挣扎 15min 和 1h 之间,想听听大家生产上的真实水位。)
欢迎带具体场景来拍砖,特别是「威胁模型派」的朋友——我特别想听你们讲一次威胁模型没覆盖到、但实际被打中的案例。
0赞
0收藏
0楼层