Python脚本应用于网络安全防护

2022-09-28 01:38陈泽生孙涛周敏冯李春
中国教育网络 2022年6期
关键词:列表日志防火墙

文/陈泽生 孙涛 周敏 冯李春

当前网络安全环境愈加复杂,各领域发生的网络攻击行为事件早已屡见不鲜[1-2],针对高校的网络攻击行为数量也与日俱增。为有效提升高校应对网络攻击行为处理的能力,有关部门要求辖内各高校按要求上报所在单位每日的网络攻击详情和处置方式,通过上报的网络攻击数据可以间接反映出各高校的网络安全建设情况和处置能力。同时,各高校上报的网络攻击数据也有益于构建网络攻击黑名单库,以及利用人工智能相关技术,分析挖掘网络攻击数据,动态强化网络攻击防护模型。

当前高校在网络安全建设中,普遍的做法是在网络数据流相关节点设置防护系统。通过预定义的防护规则或大数据和人工智能技术拦截或放行相关的网络操作数据[3-4]。而在整个网络拓扑结构中,节点位置主要是进出口防火墙、数据中心和各业务应用系统。因此,大部分高校均在此重要节点位置设置防护系统,记录网络数据详情。然而存在的问题是,不同厂商或相同厂商不同安全设备的安全防护系统所采集到的网络安全日志在特征数量、特征命名、数据结构形式等方面存在差异。因此,如何将多源异构数据进行融合,并根据攻击IP地址和被攻击IP地址唯一确定索引项,统计该索引产生的次数成为网络安全运维工作中新的难题。

如今,许多科研人员也致力于在网络安全中解决多源异构数据融合问题[5]。文献[6]融合多源异质传感数据。龚俭等人[7]认为原始数据的融合处理是网络安全态势感知的重要一环,Zhao Dongmei等人[8]通过提取网络日志数据的核心属性来实现网络安全态势感知,Zheng Weifa等人[9]将主机防火墙数据、Web 防火墙数据和入侵检测数据进行融合,实现对网络安全性进行评估。综上所述,网络安全防护体系中的数据融合问题在网络安全应用中发挥重要作用。本文通过采用Python脚本将异构数据实现程序化融合,通过自定义唯一索引项实现数据统计和去重。结果表明,学校上报网络攻击威胁IP的数据经排名之后,位列省内所有高校机构前三名,这表明采用Python脚本化实现网络安全常态化运维有显著效果。

网络安全防护体系

目前高校网络安全防护体系正处于建设当中,以进出口网关、数据中心网关、各应用系统等为网络防护关键点,构建网络安全防护体系,其逻辑结构如图1所示。其中,进出口防火墙主要针对外网和内网的数据通讯进行规则扫描,并记录该通讯日志的详细信息和所采取的相关动作。数据中心防火墙用于扫描与数据中心进行数据交互的一切网络操作日志,Web应用防火墙(Web Application Firewall,WAF)用于针对任意Web应用系统的终端防护,并记录相关日志详情。

图1 网络安全防护体系结构示意

数据集描述

本文基于图1所示的网络安全防护体系,采集关键节点WAF防火墙、数据中心防火墙和进出口防火墙的网络日志数据。其中WAF防火墙的数据见表1,数据中心防火墙的数据由于记录的防护类型不同,分为Web防护数据记录和入侵防御系统(Intrusion Prevention System,IPS)数据,分别见表2和表3。进出口防火墙记录的网络日志见表4。表2、表3和表4由于特征数量过多,因此只列出特征名和单个内容值作为示例。由于网络日志涉及敏感信息,因此使用符号“*”替换部分数据以防止暴露。

表2 数据中心Web防护日志

表3 数据中心IPS防护日志

算法设计

为了保证对网络攻击日志中的威胁IP实现自动处理和统计,本文设计了一套自动处理流程框架,如图2所示。其中数据源来自于上述表1~表4所提供的数据集。针对这4种数据源,首先进行特征处理。通过删除冗余特征,对部分特征进行拆分、统一规范特征命名等操作,实现数据源的特征统一,从而进一步实现数据源的特征级融合。其次,进行数据处理。数据处理主要包括:以攻击IP和目的IP作为唯一索引项,统计攻击发生的次数,删除冗余记录,此外删除把内网IP作为攻击源的记录、数据内部提到的暴力攻击次数的内容提取、实现内网IP转换为对应的外网IP、攻击类型的转换、数据的加密编码等操作。在数据处理完成之后,还需要进行数据格式的美化,以便所处理的数据可直接用于上报而无需人工处理。实验的关键代码如下所示。

图2 实验处理流程框架

表1 WAF防护日志

表4 进出口防火墙防护日志

网络攻击威胁IP数据处理算法:定义Fi表示第i个数据文件,定义j表示某数据文件内部的第j条记录,定义Attr_propose(Fi)表示对Fi进行特征处理的函数,定义Extract_times(j)表示提取第j条记录中的暴力攻击次数,定义F表示经过特征级融合后形成的汇总数据集,定义Drop_duplicates(索引列表K)为索引去重函数,删除索引K的记录数据,定义Convert_IP(内网IP,外网IP)函数,实现将内网IP转换为外网IP,定义Convert_attack(原始攻击类型列表,期望攻击类型列表),实现将原始攻击类型列表转换为期望的攻击类型列表,定义Base64(特征集)函数,实现将指定的特征集数据执行Base64编码加密,定义Formatting(数据集F)函数,实现将数据集F按指定格式进行设置。

for each file Fi do:

Attr_propose(Fi)

end for

for j in Fi do:

Fi.Extract_times(j)

end for

产生一个新数据集F

for key, value in dict(F[源IP+目的IP], F[次数]):

追加当前索引j进去重索引列表K

特征“次数”累加当前提取的值

end for

Drop_duplicates(索引列表K)

Convert_IP(内网IP,外网IP)

Convert_attack(原始攻击类型列表,期望攻击类型列表)

Base64(特征集)

F=Formatting(F)

实验分析

为了验证实验的有效性,本文在Intel(R) Core(TM) i7-7700 CPU @ 3.60 GHz,8GB内存,64位Windows 10操作系统的环境中进行实验,采集上述4种数据集18份,按实验流程和相关算法进行编码测试,数据集的数据记录数和程序运行时间分别如图3和图4所示。每日网络攻击防护日志一般在10万条数据量以内,程序运行时间在一分钟左右即可完成,大大提高了网络攻击威胁IP的统计效率。此外可以发现,程序运行时间和数据记录数基本呈线性正相关,随着数据记录数的递增,程序运行时间也相应增加。最终处理完成后的数据见表5。实现源IP和目的IP是唯一索引,且基于该索引自动统计发生的攻击次数,并对详细的攻击描述进行base64编码。

表5 经处理后的数据

图3 数据集与其记录数

图4 数据集与其运行时间

本文采用Python脚本对网络攻击防护日志的处理,实现将多源异构数据进行融合,并且完成特征的统一,基于源IP地址和目的IP地址实现数据记录的唯一索引,并统计发生的攻击次数。经实验验证,所设计的算法程序能高效处理网络攻击日志的威胁IP统计,十万条左右的数据量可在一分钟之内完成。同时,对于高校在网络安全运维工作中的常态化威胁IP上报工作,提供了极大的便利。本文是Python脚本在高校网络安全运维中的实际应用示例,可为其他网络安全运维工作提供借鉴与思考。

猜你喜欢
列表日志防火墙
一名老党员的工作日志
学习运用列表法
扶贫日志
全民总动员,筑牢防火墙
扩列吧
构建防控金融风险“防火墙”
雅皮的心情日志
雅皮的心情日志
在舌尖上筑牢抵御“僵尸肉”的防火墙
列表画树状图各有所长