CN111898116B - 一种基于高速缓存的工业白名单学习方法和系统 - Google Patents

一种基于高速缓存的工业白名单学习方法和系统 Download PDF

Info

Publication number
CN111898116B
CN111898116B CN201911364312.XA CN201911364312A CN111898116B CN 111898116 B CN111898116 B CN 111898116B CN 201911364312 A CN201911364312 A CN 201911364312A CN 111898116 B CN111898116 B CN 111898116B
Authority
CN
China
Prior art keywords
white list
learning
redis
hash
monitoring program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911364312.XA
Other languages
English (en)
Other versions
CN111898116A (zh
Inventor
张卫强
管玉梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changyang Technology Beijing Co ltd
Original Assignee
Changyang Tech Beijing Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changyang Tech Beijing Co ltd filed Critical Changyang Tech Beijing Co ltd
Priority to CN201911364312.XA priority Critical patent/CN111898116B/zh
Publication of CN111898116A publication Critical patent/CN111898116A/zh
Application granted granted Critical
Publication of CN111898116B publication Critical patent/CN111898116B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于高速缓存的工业白名单学习方法及系统,首先收集底层报上来的海量报文数据,根据不同协议进行报文关键字段数据的提取,将这些字段数据拼接成能代表这些报文特征的白名单规则;将这些海量规则生成唯一的hash值并缓存到redis中进行比对去重。通过本发明的方法或系统可以高速稳定地进行白名单学习,解决了工业网络环境下白名单识别的问题,且本发明通过对白名单的部署,可以有效防护工业网络环境,抵御网络攻击。

Description

一种基于高速缓存的工业白名单学习方法和系统
技术领域
本发明涉及通信技术领域,具体地涉及一种基于高速缓存的工业白名单学习方法及系统。
背景技术
在项目开发中,实现白名单学习虽在处理字符串方面,Python有着优势,但其性能瓶颈也很明显,尤其在白名单学习时间持续比较久,白名单数量巨大的时候,就会出现学习加载慢,开启和结束的过程慢,学习过程中时时展示学习结果的时候慢的问题,并且随着学习进行会慢慢消耗系统资源,最终导致无法学习的问题;除此之外,当白名单数据很大,加载速度变慢,就会导致前后台学习倒计时时间不一致,出现学习状态不一致的问题,导致后台崩溃。
在传统模式下,白名单加载和入库都需要与Mysql进行交互,当突然有白名单结束的信号传递过来时,进程会立即退出,这样,这些与数据库交互的线程也会立刻退出,对于Mysql而言,client没有关闭连接而突然退出Mysql是无法识别的,而这样的连接仍会被保留到最大等待时间而成为异常连接,用户在这种情况下如果重复操作将会产生大量的失效连接,并且使用ORM框架去操动数据库时,如果连接池使用了这种异常连接,会使程序抛出异常。
发明内容
(一)发明目的
本发明的目的是解决现有技术存在的技术问题提供一种基于高速缓存的工业白名单学习方法及系统。
(二)技术方案
为解决上述问题,本发明一种基于高速缓存的工业白名单学习方法,包括如下步骤:
步骤1:启动白名单学习监控程序;
步骤2:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤3:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤4,否则向入库的队列发送关闭白名单学习指令,执行步骤11:
步骤4:启动白名单学习的进程;
步骤5:从Redis中获取白名单学习的配置信息;
步骤6:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
步骤7:开启消息队列,接收底层解析的报文;
步骤8:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤9:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤10:入库程序,对队列里的规则进行入库;
步骤11:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤9。
进一步的,步骤5具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息。
进一步的,所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
进一步的,步骤6中,定时器基于学习时长对白名单学习的时间计时,当达到学习时长后退出白名单学习进程。
进一步的,步骤6中,保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用。
进一步的,还包括Redis热数据处理步骤,具体为:
当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中。
基于高速缓存的工业白名单学习系统,包括客户端和服务器,客户端向服务器发送基于高速缓存的工业白名单学习请求,服务器根据该请求执行如下步骤:
步骤10:启动白名单学习监控程序;
步骤20:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤30:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤40,否则向入库的队列发送关闭白名单学习指令,执行步骤110:
步骤40:启动白名单学习的进程;
步骤50:从Redis中获取白名单学习的配置信息;
步骤60:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
步骤70:开启消息队列,接收底层解析的报文;
步骤80:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤90:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤100:入库程序,对队列里的规则进行入库;
步骤110:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤90。
步骤50具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息。
一种基于高速缓存的工业白名单学习系统,所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
进一步的,步骤60中,保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用。
进一步的,还包括Redis热数据处理步骤,具体为:
当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中。
(三)有益效果
本发明的上述技术方案具有如下有益的技术效果:解决了工业网络环境下白名单识别的问题,通过对白名单的部署,可以有效防护工业网络环境,抵御网络攻击,并且通过可以高速稳定进行白名单学习。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明白名单学习的方法流程示意图;
图2为白名单学习中的利用redis缓存在整个过程保证热数据的流程示意图;
图3为白名单学习中白名单规则生成的整个过程的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
基于高速缓存的工业白名单学习方法,包括如下步骤:
步骤1:启动白名单学习监控程序;
步骤2:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤3:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤4,否则向入库的队列发送关闭白名单学习指令,执行步骤11:
步骤4:启动白名单学习的进程;
步骤5:从Redis中获取白名单学习的配置信息;
步骤6:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
步骤7:开启消息队列,接收底层解析的报文;
步骤8:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤9:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤10:入库程序,对队列里的规则进行入库;
步骤11:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤9。
步骤5具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息。
所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
步骤6中,定时器基于学习时长对白名单学习的时间计时,当达到学习时长后退出白名单学习进程。
步骤6中,保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用。
还包括Redis热数据处理步骤,具体为:
当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中。
基于高速缓存的工业白名单学习系统,包括客户端和服务器,客户端向服务器发送基于高速缓存的工业白名单学习请求,服务器根据该请求执行如下步骤:
步骤10:启动白名单学习监控程序;
步骤20:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤30:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤40,否则向入库的队列发送关闭白名单学习指令,执行步骤110:
步骤40:启动白名单学习的进程;
步骤50:从Redis中获取白名单学习的配置信息;
步骤60:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
步骤70:开启消息队列,接收底层解析的报文;
步骤80:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤90:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤100:入库程序,对队列里的规则进行入库;
步骤110:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤90。
步骤50具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息。
所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
步骤60中,保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用。
还包括Redis热数据处理步骤,具体为:
当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中。
系统通过页面触发开始或者结束,可以进行学习的预约,通过学习监控程序来监控页面指令;
学习进程启动后,需要加载已经存在白名单,保存白名单学习的一些配置信息,并启动倒计时来监控学习的时间;
对于上述学习进程的准备工作完成后,启动第二个学习的监控程序,来监控学习状态;
若这些工作完成后开始启动白名单生成的程序,启动消息队列接收底层的报文,处理这些数据,最终生成白名单规则,于此同时将每个规则生成唯一的hash更新到redis中,当接收到监控进程的关闭信号时,停止接收并退出白名单的处理程序;
通过接口触发开始或者结束,可以进行学习的预约,通过学习监控程序来监控页面指令,包括:
对于所述开始和结束,是指页面上展示的学习状态,后台与底层要与页面展示的状态一致,当页面点击开始学习进入倒计时,后台学习进程相应的也要进入倒计时并进入学习状态,并同时启动学习的第一监控程序,当学习进程启动后再启动学习的第二监控程序。
第一监控程序和第二监控程序,其中第一监控程序是独立的一套进程,该进程专门用来时时监控来自页面上的动作,也就说用户行为,主要是接收用户点击开始或者结束的指令,并将学习的参数写入redis保存;所述第二监控程序则是白名单学习进程中的一个线程,用来监控学习进程内部的状态,控制白名单学习进程正常结束。
所述学习进程的准备工作完成后,启动第二个学习的监控程序,其中学习的准备工作主要有两个,第一个是要读取学习的参数,比如学习时间、等待时间等,第二是要加载已有的规则hash,避免新进来的白名单和数据库中的重复,而第二监控程序开始读取学习参数中的学习状态,当学习状态关闭时,立即通知入库程序退出,再进程学习进程的退出。
启动消息队列接收底层的报文,处理这些数据最终生成白名单规则,于此同时将每个规则生成唯一的hash更新到redis中,包括:
启动消息队列与DPI引擎对接,接收上报的报文,根据协议将不同报文的关键字段数据进行提取,拼接成白名单字符串,并将这些字符串做hash处理并进行对比,若对比通过,则更新到hash字典中,并将这条规则放入队列中交给入库程序处理,否则该条规则丢弃;
对于上述所描述的入库程序,为白名单学习进程中的一个线程,负责将处理好的白名单规则写入数据库,并且时时获取第二监控程序发来的指令,当接收到学习停止的指令后停止入库正常退出;
当学习进程退出前,要将最新的hash数据更新到redis中,当下次学习开始时,直接从redis中获取。
关于白名单学习信号传递问题,主要来源有两个,第一个是用户在页面上操作,第二个是学习倒计时结束,整个白名单学习中有两个程序在监控该信号,但它们分工不同,第一监控程序是监控页面指令,然后将页面指令传递给入库程序,而第二监控程序主要监控学习状态,和学习结束时间,当这两个任一个触发,该监控程序都会通知入库程序,最终的学习结束都会由入库程序来执行。
对于所述的性能方面,主要有3个,分别为学习开始时,已有的白名单规则的加载速度,这个加载时间将决定了学习开始后要等待多久才能开始处理报文;白名单数据量较大时展示学习成果比较慢的问题,同时这个问题也会引起资源消耗过多的问题;最后是海量字符串对比去重的问题。
对于所述的稳定性方面,主要是指不管是开始还是结束,后台的白名单学习进程都要与前端页面状态保持一致,特别是结束学习的时候,不管是用户中断学习还是达到学习时长主动退出,都要保证入库的程序先退出再结束进程,否则将会引起Mysql的异常。
对于所述的海量字符串去重的问题,其核心主要是对关键字段按照一定顺序排序,因为底层上报的字段中,有可能顺序不一样,直接比对会造成规则重复的问题,字符串顺序不一致,但生成的规则是有可能一致的;解决了上述问题后,直接去比对虽然不会重复,但是,拿新的规则去跟已有的规则一一对比显然是非常消耗性能,并且效率是极其低的,而且规则的字符串会比较长,直接比对字符串效率也非常低。
上述直接对比的方案性能难以达标,若将白名单规则生成唯一的hash值再去对比,这样对比的效率会大大提升。
利用Python中的字典对象,将这些hash值作为字典的key进行保存,这样,我们再去对比时,只需要判断当前规则的hash值是否存在于该字典中即可,这样,规则比对的问题解决。
对于所述的白名单加载问题,加载已有的白名单,主要是用来比对新生成的白名单,当已有的白名单数据过多时,还从Mysql中去获取所有的白名单字符串将是一个很耗时耗性能的事情,所以,本发明在处理白名单加载时,直接从redis中去获取,这样只要保证redis中的热数据与Mysql中一致即可,当白名单学习结束后,只需要将最新的白名单规则hash更新到redis即可,另外当用户操作白名单时,需要更新redis中hash值,过程如图2。
白名单学习成果展示同样采取redis来做缓存处理,白名单展示牵扯到数据库大量的聚合查询,数据量大时,速度慢,资源消耗高,在白名单学习进程中,增加计数器,对每个学习到的规则进行计数,协议进行计数,并将这些计数时时更新到redis中,避免展示学习成果时频繁的与Mysql交互;同样的,对于所述保证redis热数据与数据库同步的问题,与上述方式一样,在用户操作白名单时,需要更新redis,过程如图2。
对于所述的白名单学习稳定性方面,其核心主要是要快速开启,快速结束,要跟的上页面的反应速度,否则用户点击开始后立即点击结束会直接导致学习进程的紊乱。
白名单学习开启的速度主要取决于已有白名单的加载速度,根据上述,白名单加载直接从redis中加载,可以实现已有白名单的瞬间加载,同样的结束进程主要是让入库程序快速退出,在入库程序中加入时时检查学习状态和监控学习信号的程序,双管齐下让入库程序无延迟正常退出,保证程序的健康运行,需要说明的是,这里的正常退出是只入库程序退出前要关闭与Mysql的链接,避免产生上述的异常连接问题。
为了保证redis的hash值与入库的白名单一致,每次学习过程中,需要时时的将入库成功的一条规则hash更新到存放hash的字典对象中,当学习结束,将本次学习的规则hash更新到redis中,为下次学习做准备。
结合附图1,显示为本发明一种白名单学习方式的实施例中流程示意图,所述白名单学习的整个监控流程,处理流程,图中所述通信过程是基于zmq和Python的队列实现。
所述方法包括以下步骤:
S11:白名单监控进程,是独立于白名单学习的一个进程,该进程在后台启动后就一直存在,在用户没有进行白名单学习操作的时候,该进程会处理sleep状态;
S12:白名单监控进程会时时监控某个特定的端口,该端口会发来白名单学习的相关信号;
S13:判断指令,并将该指令进行传递;
S14:如果指令是开启白名单学习,则启动白名单学习的进程,该进程只会在接收到开启学习命名后才会启动,并在接收到退出学习指令的时候进行关闭;
S15:在页面启动白名单学习时,会将白名单学习的配置信息传递给后台,后台程序会将这些信息写入redis,白名单学习进程启动后,首先会读取白名单学习的配置信息,如学习时长,等待时长,并将学习时长传递给定时器程序,定时器接到这个时间后开始倒计时;
S16:所述定时器,主要是用来对白名单学习进行计时,当用户选择的学习时长达到后,会发送关闭学习的信号给监控程序来关闭白名单学习进程;
S17:在启动定时器的同时,开始加载redis中的规则hash,需要说明的是,保存在redis中的hash是以Python字典对象的形式保存,在保存前需要将字典转成json数据,在获取hash后转换为字典使用而不需要遍历以节省时间;
S18:启动第二学习监控程序,该程序会监控学习停止的指令,然后告知入库程序退出,之后再退出学习进程;
S19-S22:这四个阶段为白名单生成的主要程序(如图3所示),首先消息队列开启接收上报的报文,并对报文的有用字段数据进行提取,拼接成白名单规则,将白名单规则的字符串进行排序后生成规则hash,最后进行比对,如果重复就丢弃,否则就放入队列中传递给入库程序,入库程序接受到后将hash更新到hash字典中,并将规则进行入库,同时进行接受第二监控程序的信号,如果收到关闭学习的信号,则进行退出;
S23:将本次学习到的规则hash更新到redis中,这里需要注意的是,只有当本次学习结束的时候,该更新的程序才会触发;
S24:该程序主要是发送一个关闭学习的信号到入库的队列中去,不过为了防止队列溢出而导致入库程序收不到该信号,入库程序会在每次入库之后获取一次学习状态,这样双管齐下可以保证入库程序在学习结束被触发时可以立刻结束;
S25:退出当前进程,白名单学习进程结束;
结合附图2,利用redis做缓存,该流程图主要是针对redis热数据处理的流程,因为学习不是一次性的工作,有可能用户在学习结束后会对白名单进行操作,比如删除无用的白名单,这样数据库中的白名单规则就会和redis中的不一致,要解决这个问题,就要在用户处理完白名单后,以异步的方式将最新的白名单数据更新到redis中去,这样当下次进行学习的时候,redis保存的仍然是最新的白名单数据,类似的,白名单学习成果这里也要做相同的处理,当白名单重新开始学习时,计数也会以最新的数据开始计数,展示的始终是最新的数据,这样处理主要是优化性能,让白名单学习的整个过程,数据库始终只用负责入库白名单规则即可,其他消耗时间和性能的工作全部交由redis处理,大大降低性能消耗。
本发明首先收集底层报上来的海量报文数据,根据不同协议进行报文关键字段数据的提取,将这些字段数据拼接成能代表这些报文特征的白名单规则;将这些海量规则生成唯一的hash值并缓存到redis中进行比对去重。本发明解决了工业网络环境下白名单识别的问题,通过对白名单的部署,可以有效防护工业网络环境,抵御网络攻击,并且通过本发明的方式可以高速稳定进行白名单学习。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
以上参照本发明的实施例对本发明予以了说明。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。本发明的范围由所附权利要求及其等价物限定。不脱离本发明的范围,本领域技术人员可以做出多种替换和修改,这些替换和修改都应落在本发明的范围之内。
尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (5)

1.一种基于高速缓存的工业白名单学习方法,其特征在于,包括如下步骤:
步骤1:启动白名单学习监控程序;
步骤2:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤3:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤4,否则向入库的队列发送关闭白名单学习指令,执行步骤11:
步骤4:启动白名单学习的进程;
步骤5:从Redis中获取白名单学习的配置信息;
具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息;
步骤6:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用;
还包括Redis热数据处理步骤,具体为:当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中;
步骤7:开启消息队列,接收底层解析的报文;
步骤8:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤9:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤10:入库程序,对队列里的规则进行入库;所述入库程序为白名单学
习进程中的一个线程,负责将处理好的白名单规则写入数据库,当接收到学习停
止的指令后入库程序正常退出;
步骤11:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤9;
白名单学习监控程序和第二白名单学习监控程序,其中白名单学习监控程序是独立的一套进程,该进程专门用来时时监控来自页面上的动作,接收用户点击开始或者结束的指令,并将学习的参数写入redis保存;所述第二白名单学习监控程序则是白名单学习进程中的一个线程,用来监控学习进程内部的状态,控制白名单学习进程正常结束;
所述学习进程的准备工作完成后,启动第二白名单学习监控程序,其中学习进程的准备工作有两个,第一个是要读取学习的参数,学习时间、等待时间,第二是要加载已有的规则hash,避免新进来的白名单和数据库中的重复,而第二白名单学习监控程序开始读取学习参数中的学习状态,当学习状态关闭时,立即通知入库程序退出,再进行学习进程的退出。
2.根据权利要求1所述的一种基于高速缓存的工业白名单学习方法,其特征在于,所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
3.根据权利要求2所述的一种基于高速缓存的工业白名单学习方法,其特征在于,步骤6中,定时器基于学习时长对白名单学习的时间计时,当达到学习时长后退出白名单学习进程。
4.一种基于高速缓存的工业白名单学习系统,包括客户端和服务器,客户端向服务器发送基于高速缓存的工业白名单学习请求,服务器根据该请求执行如下步骤:
步骤10:启动白名单学习监控程序;
步骤20:白名单学习监控程序监控由端口发送的白名单学习指令信号;
步骤30:解析白名单学习指令信号,判断该白名单学习指令信号指示开启还是关闭,如果指示开启则执行步骤40,否则向入库的队列发送关闭白名单学习指令,执行步骤110:
步骤40:启动白名单学习的进程;
步骤50:从Redis中获取白名单学习的配置信息;
步骤60:启动定时器,对白名单学习的时间计时,同时加载Redis中的规则hash;
保存在redis中的hash以Python字典对象的形式保存,在保存前将字典转成json数据,在获取hash后转换为字典使用;
还包括Redis热数据处理步骤,具体为:当白名单被删除,则重新获取白名单数据库中的白名单数据,包括获取最新的白名单规则hash值,将最新的hash值更新到Redis中;还包括获取最新的白名单数据,将最新的白名单数据计数更新到Redis中;步骤70:开启消息队列,接收底层解析的报文;
步骤80:从报文中根据不同的协议提取关键字段拼接成白名单规则;
步骤90:对海量的白名单规则去重,生成规则的hash更新至hash字典中,放入队列;
步骤100:入库程序,对队列里的规则进行入库;所述入库程序为白名单学
习进程中的一个线程,负责将处理好的白名单规则写入数据库,当接收到学习停
止的指令后入库程序正常退出;
步骤110:启动第二白名单学习监控程序,当第二白名单学习监控程序监控到白名单学习停止的指令后,停止入库程序,将学习到的规则hash更新到Redis,退出白名单学习进程,否则继续执行步骤90;
白名单学习监控程序和第二白名单学习监控程序,其中白名单学习监控程序是独立的一套进程,该进程专门用来时时监控来自页面上的动作,接收用户点击开始或者结束的指令,并将学习的参数写入redis保存;所述第二白名单学习监控程序则是白名单学习进程中的一个线程,用来监控学习进程内部的状态,控制白名单学习进程正常结束;
所述学习进程的准备工作完成后,启动第二白名单学习监控程序,其中学习进程的准备工作有两个,第一个是要读取学习的参数,学习时间、等待时间,第二是要加载已有的规则hash,避免新进来的白名单和数据库中的重复,而第二白名单学习监控程序开始读取学习参数中的学习状态,当学习状态关闭时,立即通知入库程序退出,再进行学习进程的退出;
步骤50具体为,当白名单学习进程启动时,白名单学习的配置信息被写入Redis,白名单学习进程启动后,读取白名单学习的配置信息。
5.根据权利要求4所述的一种基于高速缓存的工业白名单学习系统,其特征在于,所述白名单学习的配置信息包括白名单学习时长、等待时长和学习状态。
CN201911364312.XA 2019-12-26 2019-12-26 一种基于高速缓存的工业白名单学习方法和系统 Active CN111898116B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911364312.XA CN111898116B (zh) 2019-12-26 2019-12-26 一种基于高速缓存的工业白名单学习方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911364312.XA CN111898116B (zh) 2019-12-26 2019-12-26 一种基于高速缓存的工业白名单学习方法和系统

Publications (2)

Publication Number Publication Date
CN111898116A CN111898116A (zh) 2020-11-06
CN111898116B true CN111898116B (zh) 2021-09-24

Family

ID=73169723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911364312.XA Active CN111898116B (zh) 2019-12-26 2019-12-26 一种基于高速缓存的工业白名单学习方法和系统

Country Status (1)

Country Link
CN (1) CN111898116B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115834190B (zh) * 2022-11-22 2024-04-09 中国联合网络通信集团有限公司 主机管控方法、装置、设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105208018A (zh) * 2015-09-09 2015-12-30 上海三零卫士信息安全有限公司 一种基于漏斗式白名单的工控网络信息安全监控方法
CN106844137A (zh) * 2016-12-08 2017-06-13 腾讯科技(深圳)有限公司 服务器的监控方法和装置
CN108718319A (zh) * 2018-06-14 2018-10-30 浙江远望信息股份有限公司 一种基于安全时域通过自学习设置数据包通信白名单的方法
CN109257253A (zh) * 2018-09-14 2019-01-22 视联动力信息技术股份有限公司 一种app运行监测的方法和装置
CN110049004A (zh) * 2019-03-03 2019-07-23 北京立思辰安科技术有限公司 工控环境流量白名单基线的生成方法
CN110071852A (zh) * 2019-04-22 2019-07-30 山东超越数控电子股份有限公司 基于Linux操作系统的程序网络流量监控方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870747B (zh) * 2014-03-31 2017-05-24 可牛网络技术(北京)有限公司 一种应用程序的监控及处理方法及装置
CN104158757B (zh) * 2014-08-21 2017-07-07 福建星海通信科技有限公司 一种gps数据入库处理方法和系统
CN105068916B (zh) * 2015-08-28 2017-12-08 福建六壬网安股份有限公司 一种基于内核hook的进程行为监控方法
CN107423620B (zh) * 2017-03-12 2020-11-24 苏州浪潮智能科技有限公司 存储服务器服务进程的管理方法及装置
CN107423119A (zh) * 2017-03-31 2017-12-01 合肥民众亿兴软件开发有限公司 一种软件运行系统及其运行方法
US10771436B2 (en) * 2018-04-06 2020-09-08 Cisco Technology, Inc. Dynamic whitelist management

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105208018A (zh) * 2015-09-09 2015-12-30 上海三零卫士信息安全有限公司 一种基于漏斗式白名单的工控网络信息安全监控方法
CN106844137A (zh) * 2016-12-08 2017-06-13 腾讯科技(深圳)有限公司 服务器的监控方法和装置
CN108718319A (zh) * 2018-06-14 2018-10-30 浙江远望信息股份有限公司 一种基于安全时域通过自学习设置数据包通信白名单的方法
CN109257253A (zh) * 2018-09-14 2019-01-22 视联动力信息技术股份有限公司 一种app运行监测的方法和装置
CN110049004A (zh) * 2019-03-03 2019-07-23 北京立思辰安科技术有限公司 工控环境流量白名单基线的生成方法
CN110071852A (zh) * 2019-04-22 2019-07-30 山东超越数控电子股份有限公司 基于Linux操作系统的程序网络流量监控方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
电网工控系统安全防护中流量异常检测的研究与应用;刘亚丽;《中国优秀硕士学位论文全文数据库(电子期刊)》;20190115;C042-1185 *

Also Published As

Publication number Publication date
CN111898116A (zh) 2020-11-06

Similar Documents

Publication Publication Date Title
KR102094066B1 (ko) 모바일 게임에 대한 데이터 처리 방법 및 장치
US9965188B2 (en) Memory cleaning method and apparatus, and terminal device
WO2019109513A1 (zh) 一种资源更新方法、系统、电子设备及介质
US9454375B2 (en) Parallel program analysis and branch prediction
CN109656725B (zh) 消息消费者切换方法、装置、存储介质及电子设备
US20130227690A1 (en) Program analysis system and method thereof
US8464269B2 (en) Handling and reporting of object state transitions on a multiprocess architecture
CN111898116B (zh) 一种基于高速缓存的工业白名单学习方法和系统
CN110377486A (zh) 基于 kafka 实现稳定的高吞吐量的异步任务处理方法
US20200252314A1 (en) Method and apparatus for managing network connection, and storage medium
CN111078418B (zh) 操作同步方法、装置、电子设备及计算机可读存储介质
CN113986936A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN111694645B (zh) 分布式任务调度系统中任务处理方法及相关装置
CN108924002B (zh) 一种性能数据文件的解析方法、装置、设备及存储介质
CN100589417C (zh) 处理电信网管系统拓扑界面大量上报消息的系统和方法
CN111756784A (zh) 会话方法、会话装置、计算机设备和介质
CN107948224A (zh) 客户端请求的超时处理方法和装置
EP3396553B1 (en) Method and device for processing data after restart of node
CN112015525A (zh) 任务进程阻塞管理方法
CN114691781A (zh) 一种数据同步方法、系统、装置、设备及介质
CN114443585A (zh) 一种日志收集方法、装置、设备及介质
CN113051051A (zh) 视频设备的调度方法、装置、设备及存储介质
CN112822250B (zh) 一种大数据平台去中心化的调度和执行方法、装置
US11922161B2 (en) Scheduling a pausable automated process in a computer network
CN115422129A (zh) 一种会话处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 01, floor 1, building 104, No. 3 minzhuang Road, Haidian District, Beijing 100195

Patentee after: Changyang Technology (Beijing) Co.,Ltd.

Address before: 100195 2nd floor, building 3, yuquanhuigu phase II, No.3 minzhuang Road, Haidian District, Beijing

Patentee before: CHANGYANG TECH (BEIJING) Co.,Ltd.

CP03 Change of name, title or address