2. 安全设计基础:威胁建模、风险评估、安全策略与安全架构原则

各位好,我是老周。在电力系统这行摸爬滚打十几年,我见过太多因为安全设计不到位而翻车的案例。今天咱们聊的这块内容,说白了就是给能量管理系统(EMS)上“保险”。你想想看,电网要是被黑了,那可不是闹着玩的。

我个人习惯,做任何安全设计之前,先问自己三个问题:谁会攻击我?怎么攻击?攻击了会怎样?这三个问题想明白了,后面的工作才有方向。

2.1 威胁建模:先搞清楚敌人是谁

威胁建模不是搞学术研究,是实战。我常用的方法是 STRIDE 模型,微软那套东西,虽然老,但管用。

威胁类型 含义 EMS 中的例子
Spoofing(假冒) 冒充合法身份 攻击者伪装成调度员下发指令
Tampering(篡改) 修改数据或代码 篡改遥测数据,让调度员看到假数值
Repudiation(抵赖) 否认做过的事 操作员误操作后删除日志
Information Disclosure(信息泄露) 敏感数据被偷看 电网拓扑结构被窃取
Denial of Service(拒绝服务) 系统不可用 SCADA 通信链路被流量攻击打瘫
Elevation of Privilege(权限提升) 普通用户获得管理员权限 运维人员通过漏洞拿到 root 权限

我在项目中遇到过一件事:某变电站的 RTU 被植入了恶意固件,遥测数据被篡改。调度员看到的是“正常”,实际设备已经过载了。这就是典型的 Tampering 威胁。所以,威胁建模不能只停留在纸面上,得结合你的实际系统架构来推演。

我的小技巧: 画一张数据流图(DFD),把每个节点、每条通信链路都标出来。然后对着 STRIDE 一个个过,保证不漏项。

2.2 风险评估:算清楚账

威胁找到了,接下来要算账。不是所有威胁都要花大价钱去防。风险评估就是帮你做取舍。

我常用的公式很简单:风险 = 可能性 × 影响程度。但这里有个坑——很多人把“可能性”拍脑袋定。我曾经见过一个团队,把“黑客攻击”的可能性定得很低,结果第二年就出事了。

我的建议是,用 CVSS(通用漏洞评分系统) 来量化。虽然麻烦点,但至少有个客观依据。

风险等级 评分范围 应对策略
极高 9.0 - 10.0 立即修复,不惜代价
7.0 - 8.9 制定计划,1个月内修复
4.0 - 6.9 纳入常规迭代,3个月内修复
0.1 - 3.9 记录在案,持续监控

举个例子:EMS 的 Web 管理界面存在一个 XSS 漏洞。可能性中等(因为内网访问),但影响很大(攻击者可以窃取 session)。综合评分 6.5,属于中风险。那我的处理方式就是:下个迭代必须修,但不用通宵加班。

注意: 风险评估不是一次性工作。系统升级、网络变更、新业务上线,都要重新评估。我见过有人三年前做的风险评估,三年后还在用,这跟裸奔没区别。

2.3 安全策略:定规矩

安全策略就是“家规”。没有规矩,再好的技术也白搭。我总结了三层策略:

  • 管理策略: 谁可以做什么?密码多久换一次?日志保留多久?这些是制度层面的。
  • 技术策略: 用什么加密算法?防火墙规则怎么配?补丁怎么打?这些是落地层面的。
  • 运维策略: 出事了怎么响应?备份怎么恢复?审计怎么搞?这些是应急层面的。

嗯,这里要注意。很多团队只重视技术策略,忽略了管理和运维。我曾经遇到一个客户,防火墙规则写得天衣无缝,但运维人员把密码贴在显示器上。你说这防得住谁?

我个人习惯,写安全策略时遵循 最小权限原则。说白了,就是给每个人刚刚好的权限,不多给一分。比如,一个普通的 SCADA 操作员,只需要“读”和“写”自己管辖区域的遥测数据,那就别给他“删除”权限,更别给他“系统配置”权限。

2.4 安全架构原则:搭骨架

安全架构是骨架,骨架歪了,后面怎么补都别扭。我常用的几个原则:

  1. 纵深防御: 别指望一道墙挡住所有攻击。网络层、主机层、应用层、数据层,层层设防。攻击者突破一层,还有下一层等着他。
  2. 默认安全: 系统安装完,默认配置就应该是安全的。别让用户自己去配,他们大概率会配错。
  3. 失效安全: 系统出故障时,默认状态是“拒绝访问”,而不是“允许访问”。比如,防火墙挂了,默认应该断开所有连接,而不是放行所有流量。
  4. 分离职责: 一个人不能同时拥有“发起操作”和“审批操作”的权限。比如,调度员不能既下发指令,又修改指令的审批规则。

我记得有一次,一个厂商的 EMS 系统,数据库和 Web 服务器部署在同一台机器上。攻击者通过 Web 漏洞拿到了 shell,然后直接 dump 了整个数据库。这就是典型的违反“分离职责”原则。正确的做法是:Web 服务器和数据库服务器物理隔离,中间加防火墙,只开放必要的端口。

核心思想: 安全架构不是堆砌安全产品,而是设计一种“即使某个环节被攻破,整体依然可控”的体系。

2.5 知识体系总览

下面这张图,是我自己梳理的本章知识脉络。你可以把它当成一张地图,随时回来对照。

安全设计基础 威胁建模 STRIDE 模型 · 数据流图 · 威胁识别 风险评估 可能性 × 影响 · CVSS 评分 · 优先级 安全策略 管理策略 · 技术策略 · 运维策略 安全架构原则 纵深防御 · 默认安全 · 失效安全 · 分离职责 目标:构建可量化、可落地、可演进的 EMS 安全体系

这张图把四个模块串起来了。你从威胁建模开始,识别出风险;然后评估风险,定优先级;接着制定策略,明确规矩;最后用架构原则,把规矩落地成系统。环环相扣,缺一不可。

好了,这一章的内容就这些。记住,安全设计不是一锤子买卖,它是个持续迭代的过程。你做得越多,经验越丰富,后面的路就越顺。

专注资料整理