Modbus/TCP协议安全性分析与防护技术探讨
扫描二维码
随时随地手机看文章
引 言
随着工业互联网的大力推进,工业控制系统的开放互联成为新趋势,加之传统工业控制设备、系统在安全方面存在诸多问题,为当前的工业信息安全增加了更为严峻的风险和挑战。Modbus/TCP 协议在石油、化工、能源、电力等工业控制系统中的广泛应用,使其安全性也受到越来越多的关注。
1 Modbus/TCP协议介绍
Modbus/TCP 通过以太网通信,其实质是把 Modbus 通用帧封装到 TCP 帧中。Modbus 通用帧由三部分组成,如图 1 所示,分别是附加地址、协议数据单元(PDU)和差错校验, 其中附加地址用于表示从设备的地址,PDU 用来指定应用层的相关操作,由功能码和数据共同组成。Modbus/TCP 帧结构如图 2 所示,一方面去除了通用帧中的附加地址和校验,另一方面增加了报文头。主设备只在应用层将 Modbus 协议进行修改并封装到TCP 协议中形成 Modbus/TCP 数据包,然后从设备收到该数据包,解封后获得 Modbus 原始数据并解析,最后将需要回传的 Modbus 数据重新封装进 TCP 协议中并发送到主设备。
2 Modbus/TCP协议安全分析
2.1 身份认证安全分析
在传统的信息系统中,身份认证技术得到了广泛应用, 为用户访问系统资源提供了可靠的安全保障。但在工控系统中, 在 Modbus/TCP通信过程中,工程师站或者操作员站仅通过IP地址和 Modbus功能码就能建立一个 Modbus会话,由于缺乏相应的身份认证机制,Modbus主设备对 Modbus从设备的恶意访问成为安全隐患。
2.2 完整性安全分析
在对 Modbus/TCP协议进行测试的过程中, 如果向Modbus从设备发送一个超长的畸形报文会导致拒绝服务的状况出现。这是 Modbus/TCP协议中比较典型的安全问题。因此, 当一个恶意者去破坏 Modbus从设备时,可采取上述格式的畸形数据报文进行攻击,使得 Modbus从设备的缓存区溢出导致设备宕机,使工业控制系统无法正常运行。
2.3 功能码使用安全分析
Modbus/TCP 协议缺乏对用户功能权限的划分, 这会导致功能码滥用的情况出现。功能码是 Modbus 主设备向Modbus 从设备发送控制指令的关键,一旦被恶意修改,主设备可以向从设备发送一些原先不被允许的、非法的功能和操作。例如,非法请求关于 Modbus 从设备配置或其他敏感信息,非法重启设备,强制清除计数器,强制从设备处于监听状态等。
3 Modbus/TCP协议安全防护
3.1 基于深度包检测技术的防护模型
深度包检测技术是一种基于应用层的流量检测和控制技术,当IP 数据包、TCP 或UDP 数据流通过基于该技术的带宽管理系统时,该系统会深入读取 IP 包载荷的内容对 OSI 七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。
为了保障 Modbus/TCP 协议在工业控制网络中数据传输的安全性,特建立基于深度包检测技术的防护模型,如图 3所示。本防护模型主要由身份合法性检测、协议完整性检测、功能码使用安全性检测组成。其中,身份合法性检测通过对访问地址的解析判断访问者身份的合法性 ;协议完整性检测则通过对 Modbus/TCP协议特征的解析判断数据包的规范性; 功能码使用安全性检测基于对 Modbus/TCP数据报文中功能码和数据的解析,以及对应用户授权的操作行为判断操作的合法性。
图 3 基于深度包检测技术的防护模型
3.2 身份合法性检测
身份合法性检测主要包括数据链路层检测和网络层检测。数据链路层检测通过对数据包源 MAC 地址和目的 MAC 地址的解析和过滤可以阻断不合法设备的访问,网络层检测则通过解析数据包中的源 IP 和目的 IP 使得合法的IP 访问顺利进行。
3.3 协议完整性检测
协议完整性检测主要包括端口检测、协议标识符检测和超长数据报文检测。端口检测通过解析数据报文的源端口和目的端口是否为 502 识别 Modbus/TCP 报文,协议标识符检测则通过解析协议标识符是否为 0X0000 判断 Modbus/TCP 数据,同时对数据报文的长度进行检测,若数据载荷过长则判断报文为恶意构造的数据包。
3.4 功能码使用安全性检测
在功能码的使用安全性检测中,可以设置访问控制规则, 允许符合规则的 Modbus/TCP数据报文通过,不符合的数据报文则丢弃。其内容应包括功能码、地址范围、阈值范围,并且是基于白名单的工作机制,以限制主站对从站的访问。例如: 白名单规则 :Pass[功能码 :15][ 地址范围 :5-9][ 阈值范围: 50-100],默认规则 :全部禁止。
4 结 语
针对当前 Modbus/TCP 协议存在的比较突出的安全风险, 本文提出了基于深度包检测技术的防护模型,并从身份合法性检测、协议完整性检测和功能码使用安全性检测三个方面给出了具体的防护思路,相信能够对 Modbus/TCP 协议在工业控制网络数据传输过程中的安全防护起到积极作用。