Modbus 检查器

Modbus 检查器概述

类型

检查器(服务)

使用方式

检测

实例类型

多实例

所需其他检查器

stream_tcp

已启用

false

Modbus 协议定义了一种通信标准,用于在监控和数据采集 (SCADA) 系统与可编程自动化控制器 (plc) 之间交换消息。Modbus 协议使用 TCP 端口 502。

Modbus 检查器检测并分析网络流量中的 Modbus 消息。启用 Modbus 入侵规则选项后,即可访问某些 Modbus 协议字段。

配置 Modbus 检查器的最佳实践

如果您的网络中没有开启的 Modbus 设备,请不要在应用于流量的网络分析策略中开启 Modbus 巡检器。

Modbus 检查器参数

Modbus TCP 端口配置

绑定程序 检查器定义 Modbus TCP 端口配置。有关详细信息,请参阅绑定程序检查器概述

示例:
[
    {
        "when": {
            "role": "server",
            "proto": "tcp",
            "ports": "502"
        },
        "use": {
            "type": "modbus"
        }
    },
    {
        "when": {
            "role": "any",
            "service:" "modbus"
        },
        "use": {
            "type":"modbus"
        }
    }
]


Modbus 检查器不提供任何参数。


Modbus 检查器规则

启用 Modbus 检查器规则以 生成事件并在内联部署中丢弃攻击性数据包

表 1. Modbus 检查器规则

GID:SID

Rule Message

144:1

Modbus MBAP 信头中的长度与给定功能所需的长度不匹配

144:2

Modbus 协议 ID 非零

144:3

保留的 Modbus 功能代码正在使用中

Modbus Inspector 入侵规则选项

您可以单独使用 Modbus 选项,也可以将其与 contentbyte_jump 入侵规则选项结合使用。

modbus_data

将数据光标设置到 Modbus 数据 字段的开头。

语法: modbus_data;

示例: modbus_data;

modbus_func

验证 Modbus 功能 字段是否与指定的 Modbus 功能代码匹配。您可以设置一个正整数或字符串文字来表示 Modbus 功能代码。

类型: 字符串

语法: modbus_fuc: <function>中所述;

有效值:

表 2. Modbus 函数代码值

代码

字符串

1

read_coils

2

read_discrete_inputs

3

read_holding_registers

4

read_input_registers

5

write_single_coil

6

write_single_register

7

read_exception_status

8

diagnostics

11

get_comm_event_counter

12

get_comm_event_log

15

write_multiple_coils

16

write_multiple_registers

17

report_slave_id

20

read_file_record

21

write_file_record

22

mask_write_register

23

read_write_multiple_registers

24

read_fifo_queue

43

encapsulated_interface_transport

示例:
modbus_func: read_coils;
modbus_func: 8;

modbus_unit

验证消息中的 Modbus 设备 ID 是否与指定的设备 ID 匹配。您可以设置一个数字来表示 Modbus 设备 ID。

类型: 整数

语法: modbus_unit: <unit_id>;

有效范围: 0255

示例:
modbus_unit: 1;