从“拒绝服务”到“安全稳定”
项目背景
XX油田作为国内名列前茅的油田公司,其已探明的油气储量和每年的油气产量在国内具有举足轻重的战略地位,一直以来,该公司在工业控制系统的安全方面也高度重视。面对日趋严重的工控安全问题,公司管理层将工控系统安全防护提升到战略层面,同时选择北京威努特技术有限公司作为合作伙伴,力求打造油田行业的工控安全标杆项目。
根据整个油田公司的工控系统现状,威努特设计了涵盖工控系统边界防护、区域防护、主机防护的纵深防御解决方案,部署了包括威努特工控可信网关(工业防火墙)、工控主机卫士(主机安全加固)、统一安全管理平台等在内的一系列自主研发的安全防护产品。
项目自交付验收后,系统整体运行稳定,也成功解决了原系统中存在的一些网络攻击行为、网络安全隐患问题,客户整体评价很高。
问题就是命令,现场就是战场
油田公司某分厂有一个控制器需要增加读取点数,信息中心的工程师进行加点操作,此时更改控制逻辑可以正常进行,但采集数据的动作没有成功,通过工程师站查看数据存在坏点。工程师又通过ping控制器的方式发现控制器没有响应,对应的通道也坏死,无论如何操作都无法恢复,只能冷重启控制器。
面对该问题,信息中心的工程师试图通过模拟环境来寻找问题根源,但多次尝试最终还是无功而返。因为新部署了工业防火墙,也想可能是防火墙策略配置错误导致了该问题出现,因此随后就将求助电话打到了威努特。问题就是命令,对于威努特而言,客户现场的问题从来都是最高优先级处理,当接到客户电话的第一时间,研发部就组织了精干力量进行了讨论分析。为确保问题分析的准确性,也与客户现场的工程师召开了电话会议并详细沟通了问题产生的过程、现象等,在重新审核了现场的防火墙配置策略后,也基本上排除了是防火墙自身的原因导致。
兵贵神速,为了彻底帮用户解决该问题,在电话会议结束后,公司立即安排相关研发人员到现场协助客户进行问题定位。
严谨探求真相,专业赢得信任
复现问题
使用测试现场的控制器原有程序:开始使用模拟环境测试过程中,使用的是测试控制器原有的控制程序,将对应采集数据的范围未加入白名单规则中进行测试时,一直无法复现当时的现象。
将现场程序下发给测试控制器:使用测试控制器原有的程序无法复现控制器无响应的问题,于是将出现问题的现场控制器程序下发给测试控制器,尝试复现问题。
刚开始下发给测试控制器时并没有增加采数点,而是跟原来采集数据的范围一样,这种情况下可信网关一直工作在防护模式,白名单一直有告警,但持续几个小时问题并未复现。
于是更改思路,扩大控制器采集数据的范围,提高数据刷新的频率,并同时采集模拟量和数字量的数据,在这种情况下问题很快复现,出现了类似现场控制器当时出现的现象。
原因分析
初步分析:问题复现后针对现象和可信网关抓取的原始报文进行初步分析判断,控制器出现无响应的原因可能有:
1.接收缓存区太小造成堆积被占满。当有部分Modbus报文过去后,后续的报文被白名单拦截,导致控制器不断的接收部分报文而一直等待后续报文到来后释放缓冲区内存,这样缓存区一直堆积,最终导致缓存区满,无法再接收报文,这样ping包也无法响应。
2.控制器并发连接数有限。服务器采集控制器的数据时,完整的请求动作因为违反可信网关的白名单规则而被拦截,这样服务器就会不断的重新建立会话来采集控制器的数据,而控制器的并发连接数有限,当服务器与控制器建立过多的连接时,导致控制器拒绝服务,从而出来无法ping通的现象。
实验验证
为了验证上述分析具体哪种是真正的原因,分别设计了下面几组实验:
现状不容乐观,责任重于泰山
实验的过程严谨而细致,得到的结论详实而准确。从各种实验和结果分析来看,XX油田所使用的控制器(国外品牌)安全系数较低,正常建立连接速率的情况下,在连接数增加到2500左右时,必然导致控制器拒绝服务,最后只能通过冷重启来释放连接。威努特可信网关可以通过增加并发连接数控制的方式来增加控制器这方面的安全系数,并且可信网关可以配置会话老化时间,在白名单防护的同时,给原通信双方发送reset报文,在合理阻断非法的采集请求的同时,保证控制器的正常服务能力。
该问题得到解决,但是问题的根源还是值得我们思考。细想之下,工业控制设备是工业自动化的关键所在,但种种原因导致其远没有达到让人放心的地步。“两化融合”的大背景下,工控系统将会越来越多的从“待字深闺无人识”转变成“一朝成名天下知”,互联互通意味着机遇和风险并存,那么工控安全将会在这一伟大进程中承担越来越重要的责任。
提交
工业控制系统渗透测试浅析
未雨绸缪,工控安全培训正当时
你的车安全吗-车联网工控系统安全隐患排查
典型SCADA系统安全防护案例分享
第三届工业控制系统安全研讨会在京胜利召开