从“拒绝服务”到“安全稳定” —XX油田PLC拒绝服务问题处理过程解析--控制网

从“拒绝服务”到“安全稳定” —XX油田PLC拒绝服务问题处理过程解析
企业: 日期:2016-12-08
领域:工业安全 点击数:278

项目背景

XX油田作为国内名列前茅的油田公司,其已探明的油气储量和每年的油气产量在国内具有举足轻重的战略地位,一直以来,该公司在工业控制系统的安全方面也高度重视。面对日趋严重的工控安全问题,公司管理层将工控系统安全防护提升到战略层面,同时选择北京威努特技术有限公司作为合作伙伴,力求打造油田行业的工控安全标杆项目。项目背景

根据整个油田公司的工控系统现状,威努特设计了涵盖工控系统边界防护、区域防护、

主机防护的纵深防御解决方案,部署了包括威努特工控可信网关(工业防火墙)、工控主机卫士(主机安全加固)、统一安全管理平台等在内的一系列自主研发的安全防护产品。

项目自交付验收后,系统整体运行稳定,也成功解决了原系统中存在的一些网络攻击行为、网络安全隐患问题,客户整体评价很高。

问题就是命令,现场就是战场

油田公司某分厂有一个控制器需要增加读取点数,信息中心的工程师进行加点操作,此时更改控制逻辑可以正常进行,但采集数据的动作没有成功,通过工程师站查看数据存在坏点。工程师又通过ping控制器的方式发现控制器没有响应,对应的通道也坏死,无论如何操作都无法恢复,只能冷重启控制器。

面对该问题,信息中心的工程师试图通过模拟环境来寻找问题根源,但多次尝试最终还是无功而返。因为新部署了工业防火墙,也想可能是防火墙策略配置错误导致了该问题出现,因此随后就将求助电话打到了威努特。问题就是命令,对于威努特而言,客户现场的问题从来都是最高优先级处理,当接到客户电话的第一时间,研发部就组织了精干力量进行了讨论分析。为确保问题分析的准确性,也与客户现场的工程师召开了电话会议并详细沟通了问题产生的过程、现象等,在重新审核了现场的防火墙配置策略后,也基本上排除了是防火墙自身的原因导致。

兵贵神速,为了彻底帮用户解决该问题,在电话会议结束后,公司立即安排相关研发人员到现场协助客户进行问题定位。

严谨探求真相,专业赢得信任

复现问题

使用测试现场的控制器原有程序:开始使用模拟环境测试过程中,使用的是测试控制器原有的控制程序,将对应采集数据的范围未加入白名单规则中进行测试时,一直无法复现当时的现象。

将现场程序下发给测试控制器:使用测试控制器原有的程序无法复现控制器无响应的问题,于是将出现问题的现场控制器程序下发给测试控制器,尝试复现问题。

刚开始下发给测试控制器时并没有增加采数点,而是跟原来采集数据的范围一样,这种情况下可信网关一直工作在防护模式,白名单一直有告警,但持续几个小时问题并未复现。

于是更改思路,扩大控制器采集数据的范围,提高数据刷新的频率,并同时采集模拟量和数字量的数据,在这种情况下问题很快复现,出现了类似现场控制器当时出现的现象。

原因分析

初步分析:问题复现后针对现象和可信网关抓取的原始报文进行初步分析判断,控制器出现无响应的原因可能有:

1. 接收缓存区太小造成堆积被占满。当有部分Modbus报文过去后,后续的报文被白名单拦截,导致控制器不断的接收部分报文而一直等待后续报文到来后释放缓冲区内存,这样缓存区一直堆积,最终导致缓存区满,无法再接收报文,这样ping包也无法响应。

2. 控制器并发连接数有限。服务器采集控制器的数据时,完整的请求动作因为违反可信网关的白名单规则而被拦截,这样服务器就会不断的重新建立会话来采集控制器的数据,而控制器的并发连接数有限,当服务器与控制器建立过多的连接时,导致控制器拒绝服务,从而出来无法ping通的现象。

实验验证

为了验证上述分析具体哪种是真正的原因,分别设计了下面几组实验:

1. 仅连接数控制测试

实验目的

验证在一定的连接速率、连接数大于某个数值的情况下,控制器是否开始拒绝服务,无法再ping通。

实验过程

通过使用不同的连接速率,如1个每秒、2个每秒、10个每秒,都不能使控制器拒绝服务。

通过增加连接数,如增加到1000个、2000个、2500个、3000个,无论连接速率怎样,当连接数增加到大约2500个以上时,控制器就出现拒绝服务现象。

实验结论

此实验共进行过3次,其中一次确定是在拒绝服务并停止增加连接的情况下约20-30分钟,控制器自动重新启动。其它两次也可以恢复,但不确定是否控制器进行了重新启动。

2. 仅防护模式白名单控制测试

实验目的

1、观察白名单阻断非法的采集请求后多长时间内控制器拒绝服务;

2、验证此种情况下控制器出现拒绝服务后,进行白名单规则调整或者可信网关工作模式调整,不再阻断采集请求,控制器是否可以自行恢复正常工作,需要多长时间恢复。

实验过程

观察白名单阻断非法的采集请求;

控制器开始拒绝服务后,放开白名单控制,观察控制器恢复。

实验结论

实际结果纯白名单控制会导致控制器无响应,导致控制器开始拒绝服务的时间取决于控制器工作时间的长短,并且时断时好,一旦放开白名单控制,控制器就会恢复(恢复时间长短跟无响应时间的长短有关,但无需冷启动即可自行恢复)

3. 白名单和并发连接数同时控制测试

实验目的

此实验结合前两种,将连接数和白名单同时进行控制,观察当白名单阻断采集请求后,服务器与控制器的连接数也进行相应的控制,防止控制器的连接数过多导致其拒绝服务。

实验结论

实验结果表明,控制器释放连接的时间过长,虽然控制器开始拒绝服务的时间被延后了不少,但随着时间的推移,控制器还是出现了拒绝服务,不过一旦出现拒绝服务,连接数控制就会拦截服务器到控制器的连接,可以使控制器迅速恢复服务,但一旦服务器有机会与控制器建立连接并发送白名单请求,控制器就会拒绝服务,此种情况也不理想。

4. 白名单部分Modbus报文阻断

实验目的

当控制器出现拒绝服务后,使用串口连接上控制器观察控制器的状态发现一直有Bad Protocol的报文在累积,于是通过本组和下面一组共两组实验进行比对来确认控制器出现无法ping通是否跟控制器的接收缓冲区有关。

实验结论

本组实验将部分放过非法的白名单请求报文,将部分请求报文设置在白名单中。这样按原理控制器将收到一部分Modbus报文,但无法收取到后续的完整请求,会导致接收缓冲区的堆积,最终导致拒绝服务。

实验结果发现控制器会出现无法ping通的现象,即控制器会拒绝服务。与预期结果一致。

5. 白名单全部Modbus报文阻断

实验目的

本组实验将不会放过任何非法的白名单请求报文,并且将全部的白名单请求报文都设置为非法。这样按原理控制器将无法收到任何Modbus报文,只能收到建立会话的连接报文。

实验结论

实验结果发现控制器仍然会出现无法ping通的现象,即控制器仍然会拒绝服务。

6. 白名单控制中增加发送reset

实验目的

本组实验的主要目的在于,当服务器的采集请求被白名单阻断时,可信网关会给原通信双方发送一个重新连接的报文,释放掉原来的连接和对应的资源,这样控制器的连接数就会一直保持在一个较低水平,既不会出现连接数不断增加的情形,也不会导致接收缓冲区资源不释放。

实验结论

本组实验结果表明,通过发送reset报文,无论可信网关如何拦截非法的采集请求,都不会导致控制器拒绝服务,控制器一直处于正常工作状态。

现状不容乐观,责任重于泰山

实验的过程严谨而细致,得到的结论详实而准确。从各种实验和结果分析来看,XX油田所使用的控制器(国外品牌)安全系数较低,正常建立连接速率的情况下,在连接数增加到2500左右时,必然导致控制器拒绝服务,最后只能通过冷重启来释放连接。威努特可信网关可以通过增加并发连接数控制的方式来增加控制器这方面的安全系数,并且可信网关可以配置会话老化时间,在白名单防护的同时,给原通信双方发送reset报文,在合理阻断非法的采集请求的同时,保证控制器的正常服务能力。

该问题得到解决,但是问题的根源还是值得我们思考。细想之下,工业控制设备是工业自动化的关键所在,但种种原因导致其远没有达到让人放心的地步。“两化融合”的大背景下,工控系统将会越来越多的从“待字深闺无人识”转变成“一朝成名天下知”,互联互通意味着机遇和风险并存,那么工控安全将会在这一伟大进程中承担越来越重要的责任。




  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: