2. 安全设计基础:威胁建模、风险评估、安全策略与安全架构原则
各位好,我是老周。在电力系统这行摸爬滚打十几年,我见过太多因为安全设计不到位而翻车的案例。今天咱们聊的这块内容,说白了就是给能量管理系统(EMS)上“保险”。你想想看,电网要是被黑了,那可不是闹着玩的。
我个人习惯,做任何安全设计之前,先问自己三个问题:谁会攻击我?怎么攻击?攻击了会怎样?这三个问题想明白了,后面的工作才有方向。
2.1 威胁建模:先搞清楚敌人是谁
威胁建模不是搞学术研究,是实战。我常用的方法是 STRIDE 模型,微软那套东西,虽然老,但管用。
| 威胁类型 | 含义 | EMS 中的例子 |
|---|---|---|
| Spoofing(假冒) | 冒充合法身份 | 攻击者伪装成调度员下发指令 |
| Tampering(篡改) | 修改数据或代码 | 篡改遥测数据,让调度员看到假数值 |
| Repudiation(抵赖) | 否认做过的事 | 操作员误操作后删除日志 |
| Information Disclosure(信息泄露) | 敏感数据被偷看 | 电网拓扑结构被窃取 |
| Denial of Service(拒绝服务) | 系统不可用 | SCADA 通信链路被流量攻击打瘫 |
| Elevation of Privilege(权限提升) | 普通用户获得管理员权限 | 运维人员通过漏洞拿到 root 权限 |
我在项目中遇到过一件事:某变电站的 RTU 被植入了恶意固件,遥测数据被篡改。调度员看到的是“正常”,实际设备已经过载了。这就是典型的 Tampering 威胁。所以,威胁建模不能只停留在纸面上,得结合你的实际系统架构来推演。
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 安全架构原则:搭骨架
安全架构是骨架,骨架歪了,后面怎么补都别扭。我常用的几个原则:
- 纵深防御: 别指望一道墙挡住所有攻击。网络层、主机层、应用层、数据层,层层设防。攻击者突破一层,还有下一层等着他。
- 默认安全: 系统安装完,默认配置就应该是安全的。别让用户自己去配,他们大概率会配错。
- 失效安全: 系统出故障时,默认状态是“拒绝访问”,而不是“允许访问”。比如,防火墙挂了,默认应该断开所有连接,而不是放行所有流量。
- 分离职责: 一个人不能同时拥有“发起操作”和“审批操作”的权限。比如,调度员不能既下发指令,又修改指令的审批规则。
我记得有一次,一个厂商的 EMS 系统,数据库和 Web 服务器部署在同一台机器上。攻击者通过 Web 漏洞拿到了 shell,然后直接 dump 了整个数据库。这就是典型的违反“分离职责”原则。正确的做法是:Web 服务器和数据库服务器物理隔离,中间加防火墙,只开放必要的端口。
2.5 知识体系总览
下面这张图,是我自己梳理的本章知识脉络。你可以把它当成一张地图,随时回来对照。
这张图把四个模块串起来了。你从威胁建模开始,识别出风险;然后评估风险,定优先级;接着制定策略,明确规矩;最后用架构原则,把规矩落地成系统。环环相扣,缺一不可。
好了,这一章的内容就这些。记住,安全设计不是一锤子买卖,它是个持续迭代的过程。你做得越多,经验越丰富,后面的路就越顺。