| name | implementing-iec-62443-security-zones |
| description | 本技能涵盖按照IEC 62443-3-2为工业自动化和控制系统(IACS)设计和实施安全区域与管道。内容包括基于风险评估的区域划分、分配安全级别目标(SL-T)、设计管道安全控制、通过工业防火墙实施微分段,以及针对Purdue参考模型通过流量分析和渗透测试验证区域架构。
|
| domain | cybersecurity |
| subdomain | ot-ics-security |
| tags | ["ot-security","ics","scada","industrial-control","iec62443","network-segmentation","zones-conduits"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
实施IEC 62443安全区域
适用场景
- 为新工业设施设计全新OT网络架构
- 在评估发现问题后,将安全区域改造到现有扁平OT网络中
- 实施网络分段以符合IEC 62443-3-2认证要求
- 从基本VLAN分段升级到策略执行的区域/管道架构
- IT/OT融合项目需要定义企业网络与运营网络之间的安全边界
不适用于纯IT网络分段(参见implementing-network-microsegmentation)、云原生工作负载分段(参见securing-kubernetes-on-cloud),或没有网络安全组件的物理安全区域设计。
前置条件
- 完成OT网络安全评估,包含资产清单和流量分析
- 了解IEC 62443-3-2区域/管道设计流程和Purdue参考模型
- 具备OT协议深度包检测能力的工业防火墙(带OT Security的Palo Alto、Fortinet OT、Cisco ISA-3000)
- 支持VLAN、802.1Q中继和端口安全的网络交换机
- 运营管理层在维护窗口期间对网络架构变更的批准
工作流程
步骤 1:基于风险评估执行区域划分
根据功能要求、安全要求、关键性和攻陷后果将IACS划分为区域。每个区域包含具有共同安全要求的资产。
facility: "石化炼厂 - 3号装置"
assessment_date: "2026-02-23"
standard: "IEC 62443-3-2:2020"
zones:
- zone_id: "Z1-SIS"
name: "安全仪表系统"
purdue_level: 1
security_level_target: "SL 3"
criticality: "安全关键"
assets:
- "Triconex 3008安全控制器 (SIS-01)"
- "Triconex 3008安全控制器 (SIS-02)"
- "SIS工程师工作站"
security_requirements:
- "与所有其他区域物理隔离(气隙)"
- "专用工程师工作站,配有可移动介质控制"
- "任何情况下不允许远程访问"
- "变更管理需要双重授权"
allowed_conduits: []
- zone_id: "Z2-BPCS"
name: "基本过程控制系统"
purdue_level: "1-2"
security_level_target: "SL 2"
criticality: "高"
assets:
- "Allen-Bradley ControlLogix PLC(PLC-01至PLC-12)"
- "Rockwell FactoryTalk View HMI(HMI-01至HMI-06)"
[]
[, ]
[, ]
[]
[, ]
[, ]
[, ]
步骤 2:为区域边界配置工业防火墙
在每个区域边界部署和配置带OT协议感知深度包检测的工业级防火墙。
interface GigabitEthernet1/1
nameif zone-bpcs
security-level 90
ip address 10.20.1.1 255.255.0.0
interface GigabitEthernet1/2
nameif zone-ops
security-level 70
ip address 10.30.1.1 255.255.0.0
access-list BPCS-to-OPS extended permit tcp 10.20.0.0 255.255.0.0 host 10.30.1.50 eq 4840
access-list OPS-to-BPCS extended permit tcp host 10.30.1.50 10.20.0.0 255.255.0.0 eq 502
access-list BPCS-to-OPS extended deny ip any any log
access-list OPS-to-BPCS extended deny ip any any log
access-group BPCS-to-OPS in interface zone-bpcs
access-group OPS-to-BPCS in interface zone-ops
policy-map type inspect modbus MODBUS-INSPECT
parameters
match func-code read-coils
match func-code read-discrete-inputs
match func-code read-holding-registers
match func-code read-input-registers
match func-code force-single-coil action drop log
match func-code preset-single-register action drop log
match func-code force-multiple-coils action drop log
match func-code preset-multiple-registers action drop log
policy-map global_policy
class inspection_default
inspect modbus MODBUS-INSPECT
logging host zone-ops 10.30.1.60
logging trap informational
logging enable
步骤 3:在交换机层面实施VLAN分段
配置网络交换机在第2层强制执行区域边界,防止Purdue层级之间的广播域重叠。
vlan 10
name Z1-SIS-Safety
vlan 20
name Z2-BPCS-Control
vlan 30
name Z3-OPS-Operations
vlan 35
name Z4-DMZ
vlan 40
name Z5-Enterprise
interface range GigabitEthernet1/0/1-12
description PLC connections - Zone 2
switchport mode access
switchport access vlan 20
switchport port-security
switchport port-security maximum 1
switchport port-security mac-address sticky
switchport port-security violation shutdown
spanning-tree portfast
spanning-tree bpduguard enable
no cdp enable
no lldp transmit
interface range GigabitEthernet1/0/13-18
description HMI connections - Zone 2
switchport mode access
switchport access vlan 20
switchport port-security
switchport port-security maximum 1
switchport port-security mac-address sticky
switchport port-security violation restrict
spanning-tree portfast
interface GigabitEthernet1/0/24
description Trunk to ISA-3000 Firewall
switchport mode trunk
switchport trunk allowed vlan 20,30,35
switchport trunk native vlan 999
interface range GigabitEthernet1/0/19-23
shutdown
switchport access vlan 999
步骤 4:部署数据二极管实现单向历史数据库复制
在运营区和DMZ之间安装硬件强制的数据二极管(Data Diode),确保数据从OT单向流向IT。数据二极管从物理上防止任何数据回流到OT网络。
"""数据二极管配置验证器。
验证跨数据二极管的历史数据库复制
(Waterfall Security、Owl Cyber Defense或Siemens)
是否正常运行并执行单向通信。
"""
import socket
import struct
import time
import json
from datetime import datetime
class DataDiodeValidator:
"""验证数据二极管的单向执行。"""
def __init__(self, diode_tx_ip, diode_rx_ip, historian_port=5450):
self.tx_ip = diode_tx_ip
self.rx_ip = diode_rx_ip
self.port = historian_port
self.results = []
def test_forward_flow(self):
"""验证数据从OT(TX)通过数据二极管流向DMZ(RX)。"""
test_payload = f"DIODE_TEST_{datetime.now().isoformat()}"
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(5)
sock.sendto(test_payload.encode(), (self.tx_ip, self.port))
sock.close()
self.results.append({
"test": "forward_flow",
"status": "PASS",
"detail": f"数据已发送到TX接口 {self.tx_ip}:{self.port}",
})
except Exception e:
.results.append({
: ,
: ,
: ,
})
():
:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout()
result = sock.connect_ex((.tx_ip, .port))
sock.close()
result != :
.results.append({
: ,
: ,
: ,
})
:
.results.append({
: ,
: ,
: ,
})
(socket.timeout, ConnectionRefusedError):
.results.append({
: ,
: ,
: ,
})
():
:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout()
start = time.time()
sock.connect((.rx_ip, .port))
latency = (time.time() - start) *
sock.close()
status = latency <
.results.append({
: ,
: status,
: ,
})
Exception e:
.results.append({
: ,
: ,
: ,
})
():
( * )
()
( * )
.test_forward_flow()
.test_reverse_flow_blocked()
.test_historian_replication_latency()
r .results:
status_icon = r[] ==
()
()
.results
__name__ == :
validator = DataDiodeValidator(
diode_tx_ip=,
diode_rx_ip=,
)
validator.run_all_tests()
步骤 5:验证区域架构
实施后,通过验证只有授权的管道流量能在区域间通过、所有禁止的跨区路径都被阻断来验证区域架构。
nmap -sT -p 502,44818,102,4840 10.20.0.0/16 --reason
python3 -c "
from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('10.20.1.10', port=502)
client.connect()
# 读取应成功
result = client.read_holding_registers(0, 10, slave=1)
print(f'读取测试: {\"PASS\" if not result.isError() else \"FAIL\"}')
# 写入应被防火墙阻止
result = client.write_register(0, 100, slave=1)
print(f'写入被阻止: {\"PASS\" if result.isError() else \"FAIL - 写入被允许!\"}')
client.close()
"
ping -c 3 10.30.1.100
核心概念
| 术语 | 定义 |
|---|
| 安全区域(Security Zone) | 按照IEC 62443-3-2定义的具有共同安全要求的逻辑或物理资产分组 |
| 管道(Conduit) | 连接两个或多个区域的通信信道逻辑分组,受共同安全策略约束 |
| 安全级别目标(SL-T) | 区域的目标安全级别,从SL 1(偶然违规)到SL 4(国家级攻击) |
| 数据二极管(Data Diode) | 硬件强制单向网络网关,从物理上阻止数据反向流动 |
| 微分段(Microsegmentation) | 设备级别的精细网络分段,基于角色和功能逐设备管理通信 |
| 深度包检测(DPI) | 防火墙能力,可检查第4层以上的工业协议载荷(Modbus功能码、OPC UA服务调用) |
| 纵深防御(Defense in Depth) | 多层安全方法,在架构不同层次通过多种安全控制保护资产 |
工具和系统
- Cisco ISA-3000:工业安全设备,提供OT感知防火墙、IPS和VPN能力,支持Modbus、DNP3和EtherNet/IP检测
- Fortinet FortiGate Rugged:加固型下一代防火墙,支持工业环境的OT协议
- Palo Alto IoT/OT Security:云交付OT安全订阅,提供设备识别和协议感知策略执行
- Waterfall Security Solutions:硬件强制单向安全网关(数据二极管),用于OT到IT数据传输
- Tofino Xenon:工业安全设备,为Modbus、OPC和EtherNet/IP协议提供深度包检测
常见场景
场景:将扁平OT网络迁移到区域架构
背景:某制造工厂所有OT设备运行在单一VLAN(10.10.0.0/16)上,PLC、HMI、历史服务器和企业网络之间无任何分段。IEC 62443差距评估将此识别为需要实施区域的关键发现。
处理方法:
- 使用被动监控捕获4周完整流量基线,识别所有合法通信流
- 将所有资产分类到Purdue层级,并根据功能和安全要求分组到逻辑区域
- 设计每区域一个VLAN的架构,基于观察到的合法流量制定区域间防火墙规则
- 在区域边界以"仅监控"模式(记录但不阻断)部署工业防火墙
- 分析防火墙日志2周,识别任何将被阻断的合法流量
- 在计划的维护窗口期间将防火墙切换到执行模式
- 验证所有过程控制通信在分段后正常运行
- 在运营区与DMZ之间部署数据二极管用于历史数据库复制
注意事项:在没有完整流量基线的情况下实施区域防火墙会中断未知但合法的通信路径。在生产期间而非维护窗口期间进行区域切换有导致过程中断的风险。将SIS控制器与BPCS放在同一区域违反IEC 62443安全系统隔离要求。
输出格式
IEC 62443区域实施报告
=====================================
设施: [名称]
实施日期: YYYY-MM-DD
标准: IEC 62443-3-2/3-3
区域架构:
区域 [ID]: [名称] (SL-T: [1-4])
资产: [数量]
管道: [列表]
控制: [防火墙类型、数据二极管等]
管道配置:
管道 [ID]: [区域A] <-> [区域B]
协议: [允许的协议及方向]
防火墙规则: [允许数量 / 拒绝数量]
DPI已启用: 是/否
验证结果:
跨区域测试: [通过/失败数量]
禁止路径测试: [全部阻断 / 例外]
协议执行: [功能码过滤已验证]