开源软件在电网企业内网信息资产安全管理中的应用研究

2018-09-18 16:37:37 《电工技术》  点击量: 评论 (0)
根据某电网企业的信息资产管理现状和实际需求,应用开源软件搭建一套主动式的资产信息收集、统计、分析系统,能够满足个性化的管理需求,简化了人工统计梳理资产工作,提高了信息资产管理工作效率和时效性,具有十分重要的意义。

开源软件在电网企业内网信息资产安全管理中的应用研究

向华伟,张雪坚,杨震乾,钏 涛,冯 熙

(云南电网有限责任公司信息中心,云南昆明650200)

[摘要]随着当前电网企业信息化进程的不断推进,信息设备日益增多,虚拟化技术的广泛应用,快速的虚拟机创建与复制使得企业内网运行的服务器及其开放端口梳理困难,处于管理盲区的服务器及其开放的端口也是黑客攻击的目标,成为安全隐患。根据某电网企业的信息资产管理现状和实际需求,应用开源软件搭建一套主动式的资产信息收集、统计、分析系统,能够满足个性化的管理需求,简化了人工统计梳理资产工作,提高了信息资产管理工作效率和时效性,具有十分重要的意义。

关键词 开源软件 信息资产安全管理 电力企业

中图分类号TM769

0引言

近年来,电网企业信息化进程不断推进,信息设备日益增多,而随着虚拟化技术的厂_泛应用,快速的虚拟机创建与复制使得企业内网运行的服务器及其开放端口梳理困难。另一方面,当前信息化管理框架中管理单位、运维单位、建设单位分离的模式,导致信息资产在梳理中存在清查不到位、t信息时效性低的问题,导致部分信息资产在某些时间内处于管理单位的盲区。而在当前熟悉的信息安全环境下,这些处于管理盲区的资产由于未纳入企业安全管理体系,未得到良好的加固,极易成为攻击目标,进而影响整个企业内网安全。

对此,通过应用开源软件,自动化的搜索内网活跃的服务器及其开放端口,避免了人工报送资产导致的时效性差、易出错的缺陷,及时发现管控盲区的资产和可能的木马感染,对于电网企业信息安全防护水平的提升具有重要意义。

1研究背景

IT资产管理在国内外已经存在多款成熟的产品,例如北塔软件提供的IT管理系统中均包含IT资产管理模块,但这类产品在资产动态发现方面存在不足:

1.1 自动化程度不高,资产需要录入

多数资产管理系统需要录入复杂的资产信息,如资产编号、物理名称、价值、资产关系等信息,在梳理资产相关信息时易出错、工作量较太。即使部分软件提供资产自动发现功能,多数是通过在资产生安装代理软件实现,对于未安装代理软件的资产则仅能提供IP、MAC等信息。

1.2缺少资产信息安全管理所需信息

资产信息安全是资产安全管理的基础,但大量资产管理系统均未包含该资产的开放端口、操作系统、运行服务等。

某电网企业现有服务器100余台、网络设备50余台、终端500余台,虚拟机200余个,甚至还存在负工将个人的计算设备带入内网使用的情况。同时,这些设备在运行过程中,其开放的端口、运行的服务均随着软件变更、系统升级等不断变化,虚拟机更是随时迁移、启动,这给IT资产安全管理带来了极大的困难。任何一台设备如果开放不安全的服务,并且该服务没有及时发现并经过加固,都将会成为威胁内网安全的隐患。

2技术路线

近年来,随着开源软件社区日益活跃,大量企业均选择应用开源软件搭建内部的信息化系统,如使用Apache、Mysql。搭建服务网站:甚至部分企业还基于开源软件二次开发后形成商业化的软件产品进行出售,典型的例子是Splunk使用开源的Elastic Search、Kibana等软件开发了成功日志收集、检索系统Splunk。

在内网信息资产安全管理研究中,我们使用Nmap实现资产发现,借助Libnmap库提供的函数实现对Nmap扫描报告的解析,使用LogStash实现扫描结果的采集与导人ElasticSearch存储,最后使用Kibana完成信息检索与可视化展现。

2.1 Nmap

Nmap是一个网络扫描软件,用来扫描网上电脑开放的网络端口。确定哪些服务运行在哪些端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。系统管理员可以利用Nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用Nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

2.2 Libnmap

Libnmap是一个基于python的第三方函数库,可以让Python开发者操作Nmap进程数据,。包括自动或定期安排NMAP扫描、解析作NMAP扫描报告结果、比较2次扫描结果间的差异等。

2.3 Logstash、ElasticSearch、Kibana

Logstash、ElasticSearch、Kibana是Elastic公司开发的日志管理套件,Logstash提供日志采集、解析与范式化的功能,ElasticSearch是基于Lucene二次开发的全文检索软件并面向日志搜索与分析进行了优化,Kibana是可视化的ElasticSearch搜索、分析绘图工具。

3企业内网信息资产安全管理应用研究

3.1应用总体框架

企业内网信息资产安全管理的技术框架如图1所示,通过应用多种开源软件实现资产的自动检测、努析和告警。

 

3.2应用关键技术

3.2.1系统环境准备

为更好地支持开源软件运行,我们选择基于Linux部署个开源软件,操作系统选择Kali Nmap Linux,其上已默认安装Nmap,Python。

(1) Libnmap安装

Libnmap是Python的第三方库,安装前需要安装pip王具,然后运行“pip install Python- libnmap”即可完成安装。

(2) Logstash、ElasticSearch、Kibana的安装Logsr.ash、ElasticSearch、Kibana可以从elastic. co/download免费下载。将下载好的tar包解压缩到自定义的目录下,运行bin目录下对应名称的程序即可,如./hiri/kibana。其中,ElasticSearch必须使用非root账户运行。

3.2.2通过Libnmap调度Nmap进行资产发现

Libnmap提供了Nmapprocess模块进行Nmap调度,是本应用中主要使用的模块。通过应用该库,可以使Python方便的实现调度和解析工作。

为了在python代码中调用这2个模块,需要在代码时引用模块:

from libnmap process import NmapProcess

要自定义扫描,我们需要使用NmapProcess函数:

Nm=NmapProcess( targets一”[ip]”,options-”- sS-oX [file]”)

其中targets参数就是需要扫描的目标,此处ip可以替换为一伞网段或者一个逗号分割的ip地址列表,options指定了扫描的参数,与Nmap参数完全一致,本例中使用- sS参数执行syn扫描,并将结果输出为xml文件以便解析。

当扫描参数设定完成后,可通过nm. run_ background()让Nmap以后台进程的方式运行。Libnmap库提供了进程的监控函数is- running(),借助该函数可以在扫描完成后立即执行解析操作:

while nm.is_running():

print”still scan”

sleep(5)

parse()

上述代码检测扫描完成情况,在扫描完成后退出循环,执行结果解析。

如果需要定时进行扫描,可以利用Linux的cron工具定期执行py程序以定期扫描,实现新资产与服务的不间断发现,同时降低持续扫描对网络的压力。

3.2.3扫描结果的解析

Libnmap提供了NmapParse模块进行扫描结果的解析,为了调用该模块,需要在代码前引用该模块:

from libnmap:parser import NmapParser

该模块提供专门的文件解析类,可将xml格式的扫描报告中的字段直接存储在类中,为了完成该操作,使用以下代码。

nmap_report—NmapParser. parse_fromfile(7[ file]),其中file字段需要替换为扫描结果报告的文件,此时已经将xml报告结构化的解析并存储在m-tap.reporl.变量中,通过使用NmapParser提供的一些方法即可获取不同的内容:hostnames获取目标的主机名、address获取目标IP地址,mac获取目标MAC地址,get_open_ports()获取目标开放的端口等,可以通过循环完成每个ip的相关信息打印: 一

for host in nmap_report.hosts:

而考虑到单个IP往往对应多个端口,而端口数量又无法确定,为了更好的搜索效果以及后续的统计分析,本文进一步将端口进行解析,在主机的for循环下,使用forport in ports循环将一组端口拆分成为单个端口、将每个目标的主机名、ip地址、mac.地址、单个开放端口和协议以#分隔符按行保存到文件中,为后续数据存入Elastic-Search奠定基础。其每一行的文件格式为“主机名#MAC地址#IP地址#端口#协议”。

3.2.4扫描结果导入ElasticSearch

本文使用logstash完成解析后的扫描结果导人Elastic-Search。要使用logstash进行导入,需要编写。logstash配置文件。

一个logstash配置文件主要包括input、output、filter三部分,其中input指明logstash从哪里获取数据,output指明logstash将处理后的结果发送到哪里,filter指明logstash需要对input数据如何进行处理。本文使用的配置文件内容如下:

input{

file{

path一>”[fullpath/file]”

)

)

output{

elasticsearch{

hosts一>[”127.0.0.1: 9200”]

}

}

filter{

mutate{

split~>[”message”,”#”]

add- field一>(”hostname”一>”%{[message]

[0l}”)

add_ field一>{”MAC_ addr”=≥”%{[message]

[1l}”)

add field兰>"IP_ addr”一>”%{[message][2])”)

add_field一>{”Port”一>”%([messagel[3])”)

add_field=>{”Protocal”一>”%{[message] [4])”}

}

其中input部分指定了logstash输入的数据源,本文由于使用libnmap对原始的nmap进行了格式化解析处理后,将格式化的结果保存在文件中,f因此使用文件数据源,并将path字段设置为文件的绝对路径。

Output部分指定了logstash将其处理过的数据输出的目的地,本文使用elasticsearch对结果进行统一存储与搜索,因此输出目的地设置为本机的elasticsearch服务器,在host字段中配置服务器端口和端口,而如果服务器需要验证,还需要使用user和pass字段告知logstash使用对应的用户名和口令进行以证。 、

Filter部分指定了对输入的数据进行处理的方法,由于本文已经利用libnmap对需要通过logstahs导人elastic-search的数据进行了规格化处理,因此此处仅需要使用mutate插件,利用split模块对每一行按“#”进行分割,将分割后的消息创建对应的字段即可‘4]。

配置文件编写完成后,可以通过<安装目录>/bin/logstash -f<配置文件>'agent启动logstash,这将对该结果文件进行持续监控,一旦该文件发生了改变,logstash将自动读取文件内容并保存至elasticsearch。

3.2.5结果展现与搜索

当elasticsearch中存储了相关信息后,即可在kibana中查看相关信息,如图2所示:

 

可以通过IP _addr:精确查询单个IP开放的端口情况,如下图3所示,也可以通过Port:查询开放该端口的主机信息,如下图4所示:

而借助kibana丰富的可视化工具,可以进行相关统计分析,包括每奈主机并放的端口,如图5所示,开放端口的类型占比等,如图6所示:

 而随着扫描数据的积累,还可以对比IP的变化及IP开放端口的变化等,对于统计、分析及发现非法开放端口具有非常重要的意义。

4结束语

 

目前,提供信息资;产关联的工具较多。但这些工具均为高度定制化或通用型产品,难以完全满足各个单位的实际需要。本文针对某能源企业IT资产暴露面发现需求的实际需要,应用多种开源软件实现了企业内网信息资产搜索、统计、分析、对比功能的管理平台。后续可以根据需求、数据源的变化,调整数据组织方式,引入更多的外部数据进行关联分析写展现,具有较强的扩展性和灵活性,为信息化管理人员开展信息资产管控提供了便利。

参考文献

[1]蔡燕华,侯开虎;王伟华,企业IT资产管理系统研究及实现[J].工业技术经济,2007,26 (11):111-113

[2] Nmap Documentation[ EB/OL].[2017-03-03].https:∥

[3lLibnmap's documentation[EB/OL]. [2017-03-03l.http://libnmap. readthedocs.iol en/latest/. . ,

[4lLogstashReference[EB/OL]. [2017-03-03].https://www.e- lastic.co/guide/en/logstash/indexhtml."

 

大云网官方微信售电那点事儿

责任编辑:继电保护

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞