iso-tsap 是什么
102 是 ISO Transport Service Access Point 的登记端口。RFC 1006 定义了如何在 TCP 上承载 ISO 传输层服务,西门子把 S7 通信架在这层之上,于是 102 成为工控网络里最关键的端口之一:上位机、SCADA、组态软件都通过它读写 S7-300/400 与 S7-1200/1500 系列 PLC,报文本身没有账号与加密机制。
基本信息
| 服务 | iso-tsap(ISO TSAP) |
|---|---|
| 协议 | TCP 102 |
| 协议栈 | RFC 1006 + COTP(ISO 8073)之上的 S7comm |
| 典型设备 | 西门子 S7 系列 PLC、部分第三方兼容设备 |
| 安全等级 | 工控隔离区,仅放行业务必要主机 |
典型使用场景
- 上位机组态采数:SCADA 或组态软件按周期读取 PLC 的输入输出与寄存器
- 程序下载与在线监控:工程师用编程软件通过 102 下载程序、在线调试
- 产线集成:MES 通过网关读取设备状态与产量数据
- 资产盘点:工控网络扫描时用专用脚本识别设备型号与固件信息
- 安全评估:确认 102 是否被跨区放行,属于典型高危发现
识别与探测(仅限授权环境)
识别与探测(仅限授权环境)
nc -vz -w2 192.0.2.10 102 # 端口可达性
nmap -Pn -p 102 --script s7-info 192.0.2.10 # 识别 PLC 型号与固件
sudo tcpdump -ni eth0 'tcp port 102' -c 20 # 观察连接建立与重连频率
# 编程软件的连接参数里,机架与槽位决定 TSAP 取值连接参数与相邻端口
| 项目 | 常见取值 | 说明 |
|---|---|---|
| 机架 / 槽位 | 0 / 2 或 0 / 1 | 不同系列 CPU 的默认槽位不同 |
| TSAP | 03.02 / 03.01 | 与机架槽位对应,配错则连不上 |
| S7-300/400 | 102/tcp | 经典 S7comm |
| S7-1200/1500 | 102/tcp | 同端口,报文为 S7comm-plus 形态 |
| 现场总线侧 | Profinet/Profibus | 不经过 102,属于另一层通信 |
工控环境中 102 暴露意味着可能被直接读写 PLC:可改寄存器、停启设备。隔离区与防火墙策略应严格限制能访问该端口的主机,并保留访问审计。
排障经验:连不上 PLC 时先区分是网络不可达、TSAP 参数不对,还是 PLC 侧启用了访问保护;三者现象都接近,但前者在抓包里看不到 TCP 握手,后两者能看到连接已建立却读不到数据。
防护要点
- 按设备清单做点对点白名单,禁止工控网段与办公网互访 102
- 上位机与 PLC 之间的链路固定拓扑,避免任意主机可达
- PLC 侧启用访问保护与写保护,降低误操作与被篡改风险
- 记录程序下载与在线修改操作,便于事后追溯