本发明涉及一种云防护日志系统及其工作方法,属于信息安全应用技术领域。
背景技术:
近年来,随着我国企业网络技术的蓬勃发展,企业用户的需求也随之日益增长。企业用户在对网络服务追求高速率和高质量的同时,网络安全也得到了越来越多的关注,而网络安全的发展总是伴随着网络技术的革新而不断发展。目前,网络攻击方式日益复杂,加之普通企业员工网络安全防范意识淡薄,这就导致企业内部网络被入侵和攻击的事件频繁发生。传统网络安全解决方案正逐渐丧失作用,面临被淘汰的局面。而随着云计算和分布式技术的成熟,各大信息安全企业以及网络安全专家都开始着手研究基于分布式云计算的云防护系统。传统本地防护系统只单纯地将防护系统部署在本地服务器或本地局域网内,此时只有当网络威胁到达本地时,防护系统才会发挥作用实施拦截。而新型云防护系统在保留本地防护系统的同时,进一步将防护系统分布式地部署在多个地区的云服务器上。云防护系统作为企业局域网的反向代理,成为实现企业局域网与外部internet安全连接的桥梁。网络威胁在入侵企业局域网时,必须要首先经过云端的云防护系统,从而在本地云防护系统之外又增加了一层云端防护系统。这有效提高了整个防护系统的网络威胁拦截率,可以做到更加高效的将威胁拦截于企业局域网之外。
云防护日志系统作为云防护系统的业务处理核心,可以对云防护日志数据进行处理,不仅可以更好地发现威胁来源以及入侵目标,也可以更有效地帮助企业网络安全研究员分析和评估目前企业局域网的安全状况,并对当前问题做出更优的网络安全防御方案。云防护系统在提供新的网络安全解决方案的同时,也带来了新的挑战。云防护系统在拦截威胁时,将产生大量的云防护日志数据来记录当前网络安全状况。传统本地防护系统的防护日志只负责记录本公司内的网络安全状况,而云防护系统由于分布式的部署在众多地区的云服务器上,并为众多企业客户提供网络安全服务。此时,云防护系统产生的云防护日志将具有如下新特点:海量数据、高流速及高复杂性。综上所述,结合云防护系统下日志的新特点以及云防护日志数据对企业网络安全的重要意义,目前对能够支持分布式收集、高速实时处理以及海量存储的云防护日志系统的设计迫在眉睫。
j.p.anderson等(参见j.p.anderson,"computersecuritythreatmonitoringandsurveillance,"technicalreport,jamesp.andersoncompany,fortwashington,1980)首次提出了将日志数据用于信息安全防护的思想,在网络威胁入侵时通过记录日志数据来实现威胁的溯源和预防。近年来,随着云计算和大数据技术的兴起,m.d.holtz等(参见m.d.holtz,b.m.david,andr.t.desousajunior,"buildingscalabledistributedintrusiondetectionsystemsbasedonthemapreduceframework",revistatelecomunicacoes,no.2,pp.22-31,2011)通过对大数据技术hadoop的研究,构建了一套基于mapreduce框架的大规模网络威胁入侵检测系统,该方案可以通过分析海量的日志数据来防御网络威胁的再次入侵,但其无法做到实时地对网络威胁的防御。shettysachin等(参见shettysachin,"auditingandanalysisofnetworktrafficincloudenvironment."servicesieee,2013.)实现了在云计算环境下实时地对网络流量的处理和分析。李雪等(参见李雪."基于大数据实时web防火墙日志安全审计系统的探究."网络安全技术与应用12(2014):109-110)利用hadoop生态下的flume和storm等框架构建了一个基于大数据平台的实时web防火墙日志系统,并通过实验验证了该系统的有效性和实时性。在云防护系统的基础上,以上方案都缺乏构建一个功能齐全且统一高效的云防护日志系统,同时其性能也在实时性、可靠性和扩展性方面受到了一定的限制,不能有效的提高系统的性能。
技术实现要素:
根据现有技术和解决方案的缺点和不足,本发明提供了一种功能性齐全且实时性、可靠性和扩展性更好的云防护日志系统及其工作方法。
本发明的技术方案如下:
一种云防护日志系统及其工作方法,该系统包括日志收集模块、日志处理模块和日志存储模块,日志收集模块负责采集和聚合云防护平台下杀毒引擎集群产生的日志数据,之后将日志数据发送到日志处理模块进行实时处理;待实时处理完成后,日志处理模块将日志数据存储到日志存储模块中;此后日志处理模块对日志存储模块中的日志数据进行离线处理;日志处理模块中实时处理和离线处理产生的数据报表将存储到日志存储模块中;日志收集模块包括日志收集系统flume和消息队列kafka,flume包括负责日志数据采集的flumeagent和对采集的日志数据进行聚合的flumecollector,flume采集和聚合日志数据后,将日志数据发送到kafka中缓存;日志处理模块包括分布式实时大数据处理框架storm和分布式离线大数据处理框架mapreduce,两者分别负责对日志数据进行实时和离线处理;日志存储模块包括负责存储海量日志数据的hadoop分布式文件系统hdfs以及负责存储和缓存数据报表的关系型数据库mysql和非关系型数据库redis,外部的数据访问层dal查询mysql中的数据报表时,将优先去redis中查询,如缓存未命中,则直接去mysql中查询;云防护日志系统通过日志收集模块中的flumeagent集成到云防护平台内部进行日志数据的采集工作;数据报表存储于mysql中,外部的dal可以通过redis和mysql直接查询和展示数据报表,其工作流程为:日志收集系统flume采集、聚合各区域云防护平台上杀毒引擎产生的日志数据,之后将日志数据缓存到消息队列kafka中;负责执行实时处理任务的storm会去kafka中提取和处理日志数据;待日志数据处理完后,将其保存到hdfs中;而负责离线处理任务的mapreduce会在hdfs上运行数据挖掘算法;经过实时处理和离线处理的数据报表将被存储到mysql中,该方法的具体步骤如下:
1)云防护平台部署在各区域的云服务器上,用户在购买云防护平台的服务后,用户内部主机与外部网络交换数据时,其数据流量将转发到云防护平台的杀毒引擎集群进行扫描,杀毒引擎集群通过生成日志数据的形式来记录当前数据流量的重要信息以及扫描结果,同时日志数据是以流式数据的形式持续地从杀毒引擎集群中产生;日志数据产生后,云防护平台将日志数据存放到指定文件目录进行保存;
2)云防护平台所在区域的云服务器上集成了flumeagent,flumeagent不间断地采集该区域云防护平台内的日志数据,之后flumeagent将日志数据发送到flumecollector进行日志数据的聚合,flumecollector在接收到多个flumeagent发送的日志数据后,将聚合的日志数据发往消息队列kafka中进行缓存;
3)消息队列kafka采用了发布订阅模式,即flumecollector将日志数据发布到kafka中,kafka对日志数据进行先进先出(fifo)队列式缓存,日志处理模块中的storm框架通过订阅kafka,实现对kafka中缓存的日志数据进行消费;
4)日志处理模块中的实时处理模块storm框架将日志数据从kafka中提取并传输到本地后,storm框架将对日志数据进行实时处理,实时处理包括数据预处理和数据统计,数据预处理采用预设格式的方式对日志数据进行清洗和切分,即通过将每一条日志数据与标准日志数据模板进行对比,实现去除部分格式错误或内容残缺的日志数据,并通过日志数据中的分隔符,实现日志数据中的数据段的切分和提取;数据的各项统计结果则通过正则表达式对已提取的数据段中的具体数据信息字段进行精确匹配,之后将匹配的数据信息字段进行分组和统计;统计的数据报表将保存到日志数据存储模块的关系型数据库mysql中;
5)storm框架实时处理完成后,原始的海量日志数据将被持久化存储到日志存储模块的hdfs中,日志数据在hdfs中存储多个备份,同时多个备份均匀的分布在多个节点上,通过hdfs的冗余机制保障了海量日志数据的可靠性;
6)日志处理模块的离线处理模块mapreduce框架在hdfs内对海量日志数据进行离线处理,离线处理主要对日志数据执行数据挖掘算法,具体的数据挖掘算法的源代码通过mapreduce框架的客户端进行提交后,mapreduce框架内的map任务对日志数据进行分割和映射,reduce任务会对map任务映射后的数据进行合并和统计;离线处理后的数据报表也将保存到日志数据存储模块的mysql中;
7)mysql中的数据报表需要通过前端网页进行展示,前端网页首先向后端dal发送超文本传输协议(http)请求数据包,dal通过解析http请求数据包获取需要查询的数据报表;此后,dal将优先去缓存数据库redis中查找是否存在该数据报表,若存在则直接将该数据报表返回;若不存在,则转向mysql中进行查询,待查询的数据报表返回后,再将该数据报表添加到redis中,下次访问该数据报表时,dal将直接从redis中读取并返回;dal在获取前端网站查询的数据报表后,通过发送http响应数据包将该数据报表发送到前端网页;最后,前端网页对数据报表进行数据展示,用户即可通过前端网页展示的信息来获取云防护日志系统对日志数据实时处理或离线处理的结果。
所述的flume是一种分布式的海量日志采集、聚合和传输的系统。
所述的flumeagent是一种负责日志采集的系统。
所述的flumecollector是一种负责日志聚合的系统。
所述的kafka是一种分布式消息队列。
所述的storm是一种分布式实时大数据处理框架。
所述的mapreduce是一种分布式离线大数据处理框架。
所述的hadoop是一种分布式数据和计算的框架。
所述的hdfs是一种分布式文件系统。
所述的mysql是一种关系型数据库。
所述的redis是一种非关系型数据库。
所述的dal是英文dataaccesslayer的缩写,意即数据访问层,其功能主要是负责数据库的访问。简单地说就是实现对数据表的查询、插入、更新、删除等操作。
本发明采用了云计算和分布式等新型架构,提出了一种云防护日志系统及其工作方法,与传统的本地防护系统中的日志系统相比,在面对云端海量日志数据时,具有更好的实时性,并且系统的可靠性和扩展性也有明显的性能提升。
附图说明
图1是本发明的云防护日志系统的示意框图。
图2是本发明系统接入的分布式云防护平台的示意框图。
具体实施方式
下面结合附图和实施例对本发明做进一步说明,但不限于此。
实施例:
一种云防护日志系统及其工作方法,如图1-2所示,该系统包括日志收集模块、日志处理模块和日志存储模块,日志收集模块负责采集和聚合云防护平台下杀毒引擎集群产生的日志数据,之后将日志数据发送到日志处理模块进行实时处理;待实时处理完成后,日志处理模块将日志数据存储到日志存储模块中;此后日志处理模块对日志存储模块中的日志数据进行离线处理;日志处理模块中实时处理和离线处理产生的数据报表将存储到日志存储模块中;日志收集模块包括日志收集系统flume和消息队列kafka,flume包括负责日志数据采集的flumeagent和对采集的日志数据进行聚合的flumecollector,flume采集和聚合日志数据后,将日志数据发送到kafka中缓存;日志处理模块包括分布式实时大数据处理框架storm和分布式离线大数据处理框架mapreduce,两者分别负责对日志数据进行实时和离线处理;日志存储模块包括负责存储海量日志数据的hadoop分布式文件系统hdfs以及负责存储和缓存数据报表的关系型数据库mysql和非关系型数据库redis,外部的数据访问层dal查询mysql中的数据报表时,将优先去redis中查询,如缓存未命中,则直接去mysql中查询;云防护日志系统通过日志收集模块中的flumeagent集成到云防护平台内部进行日志数据的采集工作;数据报表存储于mysql中,外部的dal可以通过redis和mysql直接查询和展示数据报表,其工作流程为:日志收集系统flume采集、聚合各区域云防护平台上杀毒引擎产生的日志数据,之后将日志数据缓存到消息队列kafka中;负责执行实时处理任务的storm会去kafka中提取和处理日志数据;待日志数据处理完后,将其保存到hdfs中;而负责离线处理任务的mapreduce会在hdfs上运行数据挖掘算法;经过实时处理和离线处理的数据报表将被存储到mysql中,该方法的具体步骤如下:
1)云防护平台部署在各区域的云服务器上,用户在购买云防护平台的服务后,用户内部主机与外部网络交换数据时,其数据流量将转发到云防护平台的杀毒引擎集群进行扫描,杀毒引擎集群通过生成日志数据的形式来记录当前数据流量的重要信息以及扫描结果,同时日志数据是以流式数据的形式持续地从杀毒引擎集群中产生;日志数据产生后,云防护平台将日志数据存放到指定文件目录进行保存;
2)云防护平台所在区域的云服务器上集成了flumeagent,flumeagent不间断地采集该区域云防护平台内的日志数据,之后flumeagent将日志数据发送到flumecollector进行日志数据的聚合,flumecollector在接收到多个flumeagent发送的日志数据后,将聚合的日志数据发往消息队列kafka中进行缓存;
3)消息队列kafka采用了发布订阅模式,即flumecollector将日志数据发布到kafka中,kafka对日志数据进行先进先出(fifo)队列式缓存,日志处理模块中的storm框架通过订阅kafka,实现对kafka中缓存的日志数据进行消费;
4)日志处理模块中的实时处理模块storm框架将日志数据从kafka中提取并传输到本地后,storm框架将对日志数据进行实时处理,实时处理包括数据预处理和数据统计,数据预处理采用预设格式的方式对日志数据进行清洗和切分,即通过将每一条日志数据与标准日志数据模板进行对比,实现去除部分格式错误或内容残缺的日志数据,并通过日志数据中的分隔符,实现日志数据中的数据段的切分和提取;数据的各项统计结果则通过正则表达式对已提取的数据段中的具体数据信息字段进行精确匹配,之后将匹配的数据信息字段进行分组和统计;统计的数据报表将保存到日志数据存储模块的关系型数据库mysql中;
5)storm框架实时处理完成后,原始的海量日志数据将被持久化存储到日志存储模块的hdfs中,日志数据在hdfs中存储多个备份,同时多个备份均匀的分布在多个节点上,通过hdfs的冗余机制保障了海量日志数据的可靠性;
6)日志处理模块的离线处理模块mapreduce框架在hdfs内对海量日志数据进行离线处理,离线处理主要对日志数据执行数据挖掘算法,具体的数据挖掘算法的源代码通过mapreduce框架的客户端进行提交后,mapreduce框架内的map任务对日志数据进行分割和映射,reduce任务会对map任务映射后的数据进行合并和统计;离线处理后的数据报表也将保存到日志数据存储模块的mysql中;
7)mysql中的数据报表需要通过前端网页进行展示,前端网页首先向后端dal发送超文本传输协议(http)请求数据包,dal通过解析http请求数据包获取需要查询的数据报表;此后,dal将优先去缓存数据库redis中查找是否存在该数据报表,若存在则直接将该数据报表返回;若不存在,则转向mysql中进行查询,待查询的数据报表返回后,再将该数据报表添加到redis中,下次访问该数据报表时,dal将直接从redis中读取并返回;dal在获取前端网站查询的数据报表后,通过发送http响应数据包将该数据报表发送到前端网页;最后,前端网页对数据报表进行数据展示,用户即可通过前端网页展示的信息来获取云防护日志系统对日志数据实时处理或离线处理的结果。
1.一种云防护日志系统及其工作方法,该系统包括日志收集模块、日志处理模块和日志存储模块,日志收集模块负责采集和聚合云防护平台下杀毒引擎集群产生的日志数据,之后将日志数据发送到日志处理模块进行实时处理;待实时处理完成后,日志处理模块将日志数据存储到日志存储模块中;此后日志处理模块对日志存储模块中的日志数据进行离线处理;日志处理模块中实时处理和离线处理产生的数据报表将存储到日志存储模块中;日志收集模块包括日志收集系统flume和消息队列kafka,flume包括负责日志数据采集的flumeagent和对采集的日志数据进行聚合的flumecollector,flume采集和聚合日志数据后,将日志数据发送到kafka中缓存;日志处理模块包括分布式实时大数据处理框架storm和分布式离线大数据处理框架mapreduce,两者分别负责对日志数据进行实时和离线处理;日志存储模块包括负责存储海量日志数据的hadoop分布式文件系统hdfs以及负责存储和缓存数据报表的关系型数据库mysql和非关系型数据库redis,外部的数据访问层dal查询mysql中的数据报表时,将优先去redis中查询,如缓存未命中,则直接去mysql中查询;云防护日志系统通过日志收集模块中的flumeagent集成到云防护平台内部进行日志数据的采集工作;数据报表存储于mysql中,外部的dal可以通过redis和mysql直接查询和展示数据报表,其工作流程为:日志收集系统flume采集、聚合各区域云防护平台上杀毒引擎产生的日志数据,之后将日志数据缓存到消息队列kafka中;负责执行实时处理任务的storm会去kafka中提取和处理日志数据;待日志数据处理完后,将其保存到hdfs中;而负责离线处理任务的mapreduce会在hdfs上运行数据挖掘算法;经过实时处理和离线处理的数据报表将被存储到mysql中,该方法的具体步骤如下:
1)云防护平台部署在各区域的云服务器上,用户在购买云防护平台的服务后,用户内部主机与外部网络交换数据时,其数据流量将转发到云防护平台的杀毒引擎集群进行扫描,杀毒引擎集群通过生成日志数据的形式来记录当前数据流量的重要信息以及扫描结果,同时日志数据是以流式数据的形式持续地从杀毒引擎集群中产生;日志数据产生后,云防护平台将日志数据存放到指定文件目录进行保存;
2)云防护平台所在区域的云服务器上集成了flumeagent,flumeagent不间断地采集该区域云防护平台内的日志数据,之后flumeagent将日志数据发送到flumecollector进行日志数据的聚合,flumecollector在接收到多个flumeagent发送的日志数据后,将聚合的日志数据发往消息队列kafka中进行缓存;
3)消息队列kafka采用了发布订阅模式,即flumecollector将日志数据发布到kafka中,kafka对日志数据进行先进先出队列式缓存,日志处理模块中的storm框架通过订阅kafka,实现对kafka中缓存的日志数据进行消费;
4)日志处理模块中的实时处理模块storm框架将日志数据从kafka中提取并传输到本地后,storm框架将对日志数据进行实时处理,实时处理包括数据预处理和数据统计,数据预处理采用预设格式的方式对日志数据进行清洗和切分,即通过将每一条日志数据与标准日志数据模板进行对比,实现去除部分格式错误或内容残缺的日志数据,并通过日志数据中的分隔符,实现日志数据中的数据段的切分和提取;数据的各项统计结果则通过正则表达式对已提取的数据段中的具体数据信息字段进行精确匹配,之后将匹配的数据信息字段进行分组和统计;统计的数据报表将保存到日志数据存储模块的关系型数据库mysql中;
5)storm框架实时处理完成后,原始的海量日志数据将被持久化存储到日志存储模块的hdfs中,日志数据在hdfs中存储多个备份,同时多个备份均匀的分布在多个节点上,通过hdfs的冗余机制保障了海量日志数据的可靠性;
6)日志处理模块的离线处理模块mapreduce框架在hdfs内对海量日志数据进行离线处理,离线处理主要对日志数据执行数据挖掘算法,具体的数据挖掘算法的源代码通过mapreduce框架的客户端进行提交后,mapreduce框架内的map任务对日志数据进行分割和映射,reduce任务会对map任务映射后的数据进行合并和统计;离线处理后的数据报表也将保存到日志数据存储模块的mysql中;
7)mysql中的数据报表需要通过前端网页进行展示,前端网页首先向后端dal发送超文本传输协议http请求数据包,dal通过解析http请求数据包获取需要查询的数据报表;此后,dal将优先去缓存数据库redis中查找是否存在该数据报表,若存在则直接将该数据报表返回;若不存在,则转向mysql中进行查询,待查询的数据报表返回后,再将该数据报表添加到redis中,下次访问该数据报表时,dal将直接从redis中读取并返回;dal在获取前端网站查询的数据报表后,通过发送http响应数据包将该数据报表发送到前端网页;最后,前端网页对数据报表进行数据展示,用户即可通过前端网页展示的信息来获取云防护日志系统对日志数据实时处理或离线处理的结果。
技术总结