《网络协议安全》 课件 第十二章 Modbus TCPIP协议安全_第1页
《网络协议安全》 课件 第十二章 Modbus TCPIP协议安全_第2页
《网络协议安全》 课件 第十二章 Modbus TCPIP协议安全_第3页
《网络协议安全》 课件 第十二章 Modbus TCPIP协议安全_第4页
《网络协议安全》 课件 第十二章 Modbus TCPIP协议安全_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十二章ModbusTCP/IP协议安全12.1

ModbusTCP/IP概述12.2ModbusTCP/IP体系结构12.3

ModbusTCP/IP的功能实现12.4ModbusTCP/IP的安全隐患12.5

安全防护措施第十二章ModbusTCP/IP协议安全ModbusTCP/IP概述12.1PARTONE0102Modbus相关概念ModbusTCP/IP的优势CONTENTS目录12.1.1Modbus相关概念Mobuds协议位于OSI模型的第7层,属于应用层的消息传递协议。自1979年来,Modbus协议一直是事实上的的工业串行标准。Modbus支持多种通信方式,包括串口(RTU)和以太网(TCP)。ModbusTCP/IP是对成熟的Modbus协议的改编。可以通过TCP/IP堆栈上保留的系统端口502访问Modbus。它允许Modbus设备通过以太网进行无缝通信,从而实现高效可靠的数据交换。Modbus协议系列涉及以下相关概念。客户端/服务器架构:Modbus消息传递结构采用请求/响应模式,需要一个请求数据的客户端(也称为TCP客户端)和一个处理请求并返回响应的服务器。基于寄存器的通信:在Modbus领域中,数据存储在四个基本数据实体中,即离散输入、线圈、输入寄存器和保持寄存器。12.1.1Modbus相关概念简单寻址:Modbus采用简单的寻址方案来识别正在访问的寄存器。寻址通常使用数值来进行指定起始寄存器地址以及要读取或写入的寄存器数量。基于功能代码的读/写操作:Modbus中的数据访问由Modbus数据帧中的功能代码字段定义。这些功能代码至关重要,因为它们指定要对数据实体执行的操作类型。操作的范围可以从读取和写入到数据操作功能。12.1.1Modbus相关概念面向事务:Modbus的基本原则之一是面向事务的性质。Modbus客户端发出的每个请求都独立于所有其他请求。12.1.1Modbus相关概念12.1.2ModbsuTCP/IP的优势Modbus

TCP/IP协议具有众多优势,使其成为工业自动化和其他应用的首选协议。兼容性:使用TCP/IP作为底层传输协议,确保了与现有网络集成设施的广泛兼容和集成性。TCP/IP的兼容性意味着使用ModbusTCP/IP的设备可以跨局域网、广域网甚至互联网进行通信

12.1.2ModbsuTCP/IP的优势简单性:ModbusTCP/IP协议凭借其小型且定义明确的功能码集和简单的数据建模,在设备和软件中实现起来非常容易。这种简单性还可以减小处理开销,使协议即使在低功耗设备上也能高效运行。稳健性:受益于TCP协议的稳健性,ModbusTCP/IP协议提供可靠有序的且经过错误检查的字节流传输。

12.1.2ModbsuTCP/IP的优势可扩展性:ModbusTCP/IP支持大地址空间,单个网络中可寻址多达247个单独设备。这使得它适合许多设备需要通信的大规模应用。此外ModbusTCP/IP支持广播,来自同一台设备的消息可以发送到网络上的所有其它设备,从而提高网络通信的效率。开放性:实现ModbusTCP/IP协议不需要许可。这催生了一个由ModbusTCP/IP兼容设备和软件组成的大型生态。ModbusTCP/IP体系结构12.2PARTTWO0102Modbus客户机服务器模型ModbusTCP/IP组件模型CONTENTS目录12.2.1Modbus客户机服务器模型Modbus作为一种通信协议,最初的设计目的是用于工业控制系统中的串行通信。随着计算机的普及,ModbusTCP/IP作为Modbus的变体,使得Modbus可以通TCP/IP网络进行通信。12.2.1Modbus客户机服务器模型如左图所示为Modbus在串行链路上和TCP/IP上的实现。Modbus串行链路取决于TLA/EIA标准,包括232-F和458-A,而ModbusTCP/IP取决于IEEE标准和RFC-793、RFC-791标准12.2.1Modbus客户机服务器模型ModbusTCP/IP的通信系统包括连接到TCP/IP网络的ModbusTCP/IP客户端和服务器设备,以及在串行链路上实现的Modbus协议设备。不同设备通过网关、路由器和网桥进行连接。12.2.2ModbusTCP/IP组件模型ModbusTCP/IP组件模型包括用户应用、通讯应用层、TCP管理层,以及资源管理和流量控制四个模块

12.2.2ModbusTCP/IP组件模型通讯应用层包括以下部分:Modbus客户端负责发起请求,向Modbsu服务器发送Modbus请求。Modbus客户机接口:使得用户应用能够生成对Modbus服务的请求,直接访问Modbus应用对象。Modbus服务器:等待来自TCP502端口的请求,并根据设备状态处理请求,生成相应的Modbus响应。Modbus后台接口:连接Modbus服务器和用户应用。提供透明的数据访问和操作。12.2.2ModbusTCP/IP组件模型TCP管理层包括以下部分:连接管理:负责管理ModbusTCP通信的建立、维护与终止。其中默认使用502端口进行通信,即使配置其他端口,502仍必须保持可用,以确保兼容性。访问控制:为防止未授权的主机访问设备数据,访问控制模块的目的是检查每个新连接,并根据授权的远程IP地址列表,决定是否允许或拒绝客户端的TCP连接。在安全模式下,开发者需要为每个远程的IP地址提供授权列表,未授权的IP地址将被禁止连接。默认情况下,未配置的IP地址会被拒绝访问,来自未知IP的连接会被自动关闭,从而确保系统的安全性。栈参数化:TCP/IP协议栈提供了一个接口来管理连接,发送和接受数据,同时支持参数化配置,以便根据设备或系统限制调整协议栈的行为。12.2.2ModbusTCP/IP组件模型TCP/IP栈用来支持参数化配置。可根据特定产品或系统的不同需求,对数据流控制、地址管理和连接管理等功能进行适应性调整。通常情况下,系统会通过BSD套接字接口来管理TCP连接。BSD套接字接口:起源于1983年加州大学伯克利分校(BerkeleySoftwareDistribution)系统,它定义了一套通用的函数和数据结构,使得应用程序能够通过统一的编程接口进行通信(如TCP/UDP)12.2.2ModbusTCP/IP组件模型资源管理和流量控制:为了平衡Modbus客户端和服务器之间进出的报文传输的数据流,在Modbus报文传输栈的所有各层都设置了数据流控制机制。资源管理和数据流控制模块首先基于TCP内部数据流控制,然后附加数据链路层的某些数据流控制,最后是用户应用层的数据流控制。ModbusTCP/IP的功能实现12.3PARTTHREE01020304ModbusTCP/IP帧格式ModbusTCP/IP连接管理ModbusTCP/IP中TCP/IP接口的使用ModbusTCP/IP通讯应用层设计CONTENTS目录12.3.1ModbusTCP/IP帧格式Modbus定义了一个独立于底层通信层的协议数据单元(PDU)如下图为通用Modbus帧,它由附加地址、功能码、数据和错误检查字段组成。应用数据单元(ADU)通过将这些字段组合,形成一个完整的Modbus帧,用于在网络上传输。功能码用于指示客户端请求的操作类型,而数据字段则包含实际的请求或响应内容,错误检查字段则确保数据的传输正确性。12.3.1ModbusTCP/IP帧格式在ModbusTCP/IP网络中,Modbus数据单元被封装在一个特殊的应用数据单元(ADU)中,其中包括一个MBAP头部、功能码和数据字段。MBAP头部是ModbusTCP/IP特有的部分,用于标识Modbus应用数据单元并支持通过TCP/IP网络进行通信。功能码仍然指示操作类型,而数据字段则包含具体的数据内容,整个数据单元通过TCP/IP网络进行传输。12.3.1ModbusTCP/IP帧格式在TCP/IP上使用一种专用于报文头识别Modbus应用数据单元。将这种报文头称为MBAP报文头(Modbus协议报文头)MBAP报文头:MBAP报文头使用单字节标识符替代Modbus串行通信中的设备地址,使得设备通过IP地址进行通信,支持多个设备共享同一IP地址。同时还携带了报文长度信息和差错校验码用来验证Modbus报文的完整性。可以有效的防止数据传输中的误码和数据篡改。功能码:用来向服务器指示执行哪些操作。分为固定长度的功能码和可变数据长度的功能码。12.3.1ModbusTCP/IP帧格式MBAP报文头包括4个字段,总长度为7个字节。详细信息如下。长度描述客户机服务器事务元标识符2字节Modbus请求/响应事务处理的识别码客户机启动服务器从接收的请求中重新复制协议标识符2字节0=Modbus协议客户机启动服务器从接收的请求中重新复制长度2字节以下字节的数量客户机启动(请求)服务器(响应)启动单元标识符1字节串行链路或其它总线上连接的远程从站的识别码客户机启动服务器从接收的请求中重新复制12.3.1ModbusTCP/IP帧格式MBAP报文头包括4个字段作用如下。事务处理标识符:用于事务处理配对。在响应中,ModbusTCP/IP服务器复制请求的事务处理标识符。协议标识符:用于系统的多路复用。通过0值来进行标识Modbus协议。长度:长度是下一个字段的字节数,包括单元标识和数据域。单元标识符:用于系统内的路由,通常通过网关实现ModbusTCP/IP和Modbus串行链路从站之间的通信,尤其是在以太网TCP/IP网络与Modbus串行链路之间。Modbus客户端在请求中设置该字段,服务器在响应中必须返回相同的字段值。12.3.2Modbus

TCP/IP的连接管理ModbusTCP/IP通信可以通过两种方式来进行建立客户端与服务器端之间的TCP连接:一种是由用户应用模块直接管理连接,提供接口进行连接建立,适合有TCP/IP知识的开发者;另一种是由TCP连接管理模块自动完成连接,用户只需发送和接收Modbus报文,简化了开发工作。开发者可以根据需求选择合适的方式。

12.3.2Modbus

TCP/IP的连接管理显式TCP连接管理:显示TCP连接管理由用户应用模块负责,涵盖连接的建立和结束,使用BSD套接字接口管理TCP连接。这种方式提供完全灵活性,但需要开发人员具备TCP知识,以根据设备需求限制客户端与服务器之间的连接数。

12.3.2Modbus

TCP/IP的连接管理自动TCP连接管理:自动TCP连接管理对用户应用模块透明,连接管理模块自动处理客户端/服务器连接,超出授权数量时关闭最早未使用的连接。连接在接收到第一个数据包时建立,网络中断或设备终止时关闭。可以使用访问控制选项限制未授权客户端访问设备。12.3.2Modbus

TCP/IP的连接管理Modbus协议的TCP连接管理模块通常通过BSD套接字接口与TCP/IP协议栈通信。为了兼容系统需求和服务器资源,TCP管理维护两个连接库。第一个库(优先连接库)包含未主动关闭的连接,每个连接与特定IP地址关联,标记设备的连接请求必须被接受,并从优先连接库中取出。为了避免同一设备占用所有连接,需设置每个远端设备的最大连接数。第二个库(非优先连接库)包含非标记设备的连接,若无可用连接,则关闭先前的连接。12.3.2Modbus

TCP/IP的连接管理建立连接后进行数据的传输,其中数据传输的流程包括如下三方面。连接的建立ModbusTCP/IP数据交换连接的关闭12.3.2Modbus

TCP/IP的连接管理连接的建立:ModbusTCP/IP报文传输服务必须在502端口上监听,以接收新连接并与其他设备交换数据。客户端需要在服务器的502端口上建立连接进行数据交换,本地端口必须高于1024,以避免与常见服务冲突。每个客户端连接应具有唯一端口号。如果连接数量超过授权限制,将关闭最早未使用的连接,并启用访问控制机制,检查远程客户端的IP地址是否授权,未经授权的连接将被拒绝。12.3.2Modbus

TCP/IP的连接管理ModbusTCP/IP数据交换:在已建立的TCP连接上发送ModbusTCP/IP请求,通过远端设备的IP地址查找连接。在与同一设备建立多个连接时,可以选择策略,如选择最早或第一个建立的连接。整个ModbusTCP/IP通信过程中,连接必须始终保持开启。一个客户端可以向服务器发起多个事务处理,无需等待前一个事务完成。12.3.2Modbus

TCP/IP的连接管理连接的管理:当ModbusTCP/IP通信结束时,客户端需关闭连接。连接管理模块会保持连接,并在故障发生时重新启动。故障监测通过保持连接定时器进行,若断开时间短于定时器设置的值,则不会被监测到。12.3.3ModbusTCP/IP中TCP/IP接口的使用本节主要讲解TCP/IP协议栈为ModbusTCP/IP提供的核心服务,包括连接管理、数据传输及参数配置功能,以确保协议栈特性符合设备和系统要求。重点基于BSD套接字接口描述了ModbusTCP/IP的报文传输特征。12.3.3ModbusTCP/IP中TCP/IP接口的使用BSD套接字是ModbusTCP/IP通信的核心组件,作为网络通信端点实现设备间数据传输。通信流程分为三个阶段:建立连接时,客户端通过socket()创建套接字、bind()绑定端口后,用connect()连接服务器的502端口;服务器端则通过listen()监听请求,accept()接收连接并创建新套接字处理通信。数据传输阶段使用send()和recv()进行数据收发,配合setsockopt()配置参数和select()监控多路通信。最后通过shutdown()优雅终止连接,close()释放资源,完成整个通信生命周期。这种基于TCP的流式套接字服务确保了Modbus设备间可靠、高效的数据交换。12.3.3ModbusTCP/IP中TCP/IP接口的使用本节将主要介绍ModbusTCP/IP协议在TCP层和IP层的一些参数配置如下图所示。这里主要介绍连接级参数配置和全局TCP参数配置以及IP层参数配置。12.3.3ModbusTCP/IP中TCP/IP接口的使用连接级参数配置:

缓冲区设置:通过通过SO_RCVBUF/SO_SNDBUF参数调整收发缓冲区大小,直接影响TCP窗口性能。Modbus通信建议设置为900字节(基于300字节的报文大小和3帧缓存需求),但需确保不超过设备资源限制。实时性优化:TCP_NODELAY选项用于禁用Nagle算法,避免小报文合并造成的传输延迟,这对需要快速响应的Modbus通信尤为重要。端口重用:SO_REUSEADDR选项解决TCP连接关闭后的2MSL等待问题,允许立即重用处于TIME_WAIT状态的端口,提高服务可用性。12.3.3ModbusTCP/IP中TCP/IP接口的使用连接保活:SO_KEEPALIVE机制默认在2小时空闲后启动探测(每75秒一次,最多8次),用于检测对端异常断开。全局TCP从参数。超时控制:连接建立默认超时75秒,实时系统可适当缩短;RTO(重传超时)采用Jacobson算法动态计算,默认RTT为3秒。重传机制:包含四种核心算法:动态RTO估算(Jacobson)、避免重传干扰(Karn)、指数退避(64秒内加倍超时)和快速重传(3次重复ACK触发),确保不同网络环境下的可靠传输。12.3.3ModbusTCP/IP中TCP/IP接口的使用全局TCP从参数。地址规划:必须正确配置A/B/C类IP地址及匹配的子网掩码,子网划分应考虑物理介质差异(如以太网与WAN)和流量管理需求。网关配置:默认网关必须与本地IP同子网,严禁使用0.0.0.0,无网关时应设为127.0.0.1或本地IP地址。12.3.4

ModbusTCP/IP通讯应用层设计ModbusTCP/IP客户端处理如下事件:接收用户的请求:当用户发出请求时,客户端需要将这个请求转换为ModbusTCP/IP格式,并通过TCP管理模块发送出去。如果网络连接出现问题,系统会返回一个错误信息。收到TCP管理的响应:当客户端收到服务器的响应时,它需要处理这个响应,并向用户确认收到。超时没有响应:如果在预定时间内没有收到响应,客户端会选择重试,或者通知用户没有收到回应。12.3.4

ModbusTCP/IP通讯应用层设计ModbusTCP/IP请求的生成过程如右图所示12.3.4

ModbusTCP/IP通讯应用层设计ModbusTCP/IP请求的生成过程:ModbusTCP/IP事务处理实例化:使客户端存储所有需要的信息,以便将响应与相应的请求匹配,并向用户应用发送证实。ModbusTCP/IP请求编码:客户端根据ModbusTCP/IP协议,将请求的数据进行编码。首先构建ModbusPDU,然后填充报文头(MBAP)。最后,将报文头与数据合并,形成完整的请求。发送请求:将生成的请求发送到TCP管理模块,有它负责寻找正确的连接来与远程服务器进行通信。12.3.4

ModbusTCP/IP通讯应用层设计ModbusTCP/IP的超时管理:ModbusTCP/IP没有规定事务处理的响应时间,因为它适用于各种通信环境,从毫秒级的局域网到几秒钟的远程无线链路。客户机的超时设置应考虑网络的传输延迟,以确定合理的响应时间。如果超时时间设置过短,可能导致重试过多,增加网络拥堵和错误。在高性能应用中,超时值通常与网络拓扑和客户机性能相关,而对于对时间不敏感的系统,则可使用TCP默认的超时值。Modbus/TCP并没有规定事务处理的响应时间,因为它适用于各种通信环境,从毫秒级的局域网到几秒钟的远程无线链路。客户机的超时设置应考虑网络的传输延迟,以确定合理的响应时间。如果超时时间设置过短,可能导致重试过多,增加网络拥堵和错误。在高性能应用中,超时值通常与网络拓扑和客户机性能相关,而对于对时间不敏感的系统,则可使用TCP默认的超时值。ModbusTCP/IP的安全隐患12.4PARTFOUR0102协议设计的安全问题

协议实现产生的安全问题CONTENTS目录12.4.1ModbusTCP/IP协议设计的安全问题绝大多数工控协议在设计之初,仅仅考虑了功能实现、提高效率、提高可靠性等方面,而没考虑过安全性问题。ModbusTCP/IP协议也不例外,尽管其已经成为事实上的工业标准。从前面原理分析可以看出,其本身缺乏认证、授权、加密等安全防护机制,存在功能码滥用等问题。ModbusTCP/IP的设计安全问题缺乏认证:认证的目的是保证收到的信息来自合法的用户,未认证用户向设备发送控制命令不会被执行。在ModbusTCP/IP协议通信过程中,没有任何认证方面的相关定义,攻击者只需找到一个合法的地址,就可以使用功能码建立一个ModbusTCP/IP通信会话,从而扰乱整个或者部分控制过程。12.4.1ModbusTCP/IP协议设计的安全问题缺乏授权:授权是保证不同的特权操作需要由拥有不同权限的认证用户来完成,这样可大大降低误操作与内部攻击的概率。目前,Modbus协议没有基于角色的访问控制机制,也没有对用户分类,进而对用户的权限进行划分,这导致任意用户可以执行任意功能。缺乏加密机制:加密可以保证通信过程中双方的信息不被第三方非法获取。ModbusTCP/IP协议通信过程中,地址和命令全部采用明文传输,因此数据可以很容易的被攻击者捕获和解析,为攻击者提供便利。12.4.1ModbusTCP/IP协议设计的安全问题功能码滥用:功能码是ModbusTCP/IP协议中的一项重要内容,几乎所有的通信都包含功能码。目前,功能码滥用是导致ModbusTCP/IP网络异常的一个主要因素。例如不合法报文长度,短周期的无用命令,不正确的报文长度,确认异常代码延迟等都有可能导致拒绝服务攻击。12.4.1ModbusTCP/IP协议设计的安全问题12.4.2ModbusTCP/IP协议实现产生的安全问题虽然ModbusTCP/IP协议已广泛应用,但开发者常缺乏安全知识,导致使用该协议的系统存在安全漏洞。

缓冲区溢出漏洞:缓冲区溢出是指数据超出缓冲区容量,覆盖合法数据,可能导致系统崩溃或被攻击者控制。由于开发者缺乏安全开发知识,容易产生此类漏洞,若被恶意利用,后果严重。TCP/IP安全问题:ModbusTCP/IP运行在TCP/IP协议之上,继承了TCP/IP本身的安全问题,如非法数据获取、中间人攻击、拒绝服务、IP欺骗等,均可能影响系统的安全。ModbusTCP/IP协议的安全防护措施12.5PARTFIVE01020304密码学机制

异常行为检测安全审计使用网络安全设备CONTENTS目录12.5.1密码学机制工控网络的漏洞大多来源于实现过程中的问题。通过在ModbusTCP/IP系统的生命周期各阶段(需求设计、开发、测试、部署)中加入安全措施,如安全设计、安全编码和安全测试,可以有效消除安全漏洞。此外,在协议应用数据单元中增加安全字段,如完整性验证、防重放、身份认证等,也是有效的安全策略。12.5.1密码学机制如下图所示的安全版本ModbusTCP/IP协议在应用数据单元中使用SHA-2哈希函数计算数据包的安全摘要,并利用RSA算法生成数字签名,保障协议的完整性。非对称加密RSA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论