当前位置:首页 期刊杂志

基于IPv6的网络日志分析系统研究*

时间:2024-05-04

王 爽

(西安体育学院网络管理中心,陕西 西安 710068)

0 引言

随着大数据技术发展、高速互联网的兴起,大规模软件运行日志收集及维护系统得到快速的发展,随之产生了越来越多的日志数据。一些国际顶级期刊已经设立了专刊来研究如何有效地组织和使用海量的日志数据来推动人类的科学技术进步和社会的发展。记录了软件系统、硬件设备和用户行为的日志文件,在监控网络情况、检查硬件故障、保护软件安全等方面起着重要的作用。加强对网络日志的管理和分析是强化网络管理、维护网络安全的一个重要途径。通过分析日志数据,可以获取关于设备故障、网络运行历史背景、网络异常行为等信息,从而有助于网络安全管理人员及时发现和解决网络故障或阻断网络攻击,保证网络的健康稳定运行。提供针对日志内容的分析和查询能力,可以给软件运维带来便利,也可以基于日志中获得更深的业务价值。

下一代互联网技术IPv6 协议的不断成熟及推广,支持IPv6 访问的应用逐渐成为了主流,IPv6 网络面临的安全风险与攻击威胁成为网络发展亟待解决的问题。本文利用NoSQL非关系型数据库设计并实现一种基于MongoDB 的IPv6 网络安全日志分析系统。NoSQL 数据库是一种新型模式,不仅能够快速存储数据,也可以快速查询数据,除此之外,NoSQL 数据库的容错性很高,灵活的分布方式更适合存储海量数据,NoSQL 数据库有MongoDB、Hdase、Redis 等,其中MongoDB由于具有数据模型丰富、存取性能优异、支持丰富查询表达式、数据维护工作量小等诸多优势。因非常适用于分析和管理日志。

网络日志通常具有大规模、高维、非结构化、非数值化、非拓扑等特点。本文根据网络日志的应用特点,提出了日志数据NoSQL缓存及处理机制。并依其为基础,设计构建了基于NoSQL的在线网络日志分析系统。在新系统中,日志通过MongoDB 数据库作为日志接收缓存层,从而应对突然到达的海量日志造成缓冲溢出。日志通过分析处理后,将可视化数据存储在NoSQL 中,可提供访问者行为分析、运营相关指标统计和分析结果可视化报表。

1 系统功能需求分析

本系统包含六个功能:安全监测预警、流量趋势分析、访问者行为分析、日志检索、设备管理、日志存储管理。

主要进行异常信息的实时监测,并产生预警信息。功能包含URL 访问异常、设备登录异常、反病毒分析、预警规则管理等。

通过相关指标进行网络流量趋势分析,包括URL访问量、IP 流量、设备接口流量、应用程序流量、防火墙规则流量等指标,各指标最终以图表方式展示。图表主要内容包括IP Top 10、规则Top10、接口Top10、IP 名声、应用程序Top10、URL Top 50、IP 源/目标地理分布图等。

通过分析网络中访问者的日志,可确定访问者在网络中的活动轨迹,即达到分析“谁,在什么时间,使用什么设备,做了什么”的目的。主要包含访问者的某时间范围内使用的IP、使用的设备名称和MAC、具体的应用程序、访问了哪些网络资源,并产生了多少流量。

通过日志检索功能,可以确定网络安全和设备运行问题,进而加强网络安全和网络管理。

通过配置日志源设备,来管理有效日志源,避免无效日志数据进入系统,造成系统负担。

管理日志存储配置信息,可指定日志存储时效、磁盘空间限额等。

2 系统模块设计

本系统在结构上分为五个大模块:分别为日志采集、日志预处理、日志存储、日志分析、日志分析结果可视化。

2.1 日志采集模块

日志采集模块将采集符合SysLog RFC3164 和RFC5424 两种协议的日志。采集到的日志分别发送两次,一次发送到日志预处理模块进行处理后存储于MongoDB,如果日志级别为Error,则再次发送到日志实时分析模块,为系统实时预警机制提供数据。支持现有系统的多种数据源,包括文件、系统事件等。

系统基于Java 语言开发,用于接收网络安全设备通过UDP 协议输出的标准syslog 日志。要基于IPv6实现UDP通讯我们需要做到以下两个方面。

Java 从1.4 版开始支持Linux 和Solaris 平台上的IPv6,1.5 版起又加入了Windows 平台上的支持,在Java 语言中对于InetAddress 提供了两个扩展类:Inet4Address和Inet6Address,其中封装了对于IPv4和IPv6的特殊属性和行为,方便我们处理不同的IP协议。

Java 网络栈会优先检查底层系统是否支持IPv6,及采用的何种IP 栈系统。如果是双栈系统,那它直接创建一个IPv6套接字如图1所示,对于分隔栈系统,Java则创建IPv4/v6两个套接字(分隔栈结构)如图2所示。

图1 双栈结构

图2 分隔栈结构

在系统中,使用的是UDP 协议,所以两个套接字都会保留来完成通讯。

在IPv4/IPv6双环境中,对于使用Java开发的网络应用,比较值得注意的是以下两个IPv6 相关的Java虚拟机系统属性:

程序中设置代码如下:

preferIPv4Stack(默认false)表示如果存在IPv4 和IPv6 双栈,Java 程序是否优先使用IPv4 套接字。默认值是优先使用IPv6套接字,因为IPv6套接字可以与对应的IPv4 或IPv6 主机进行对话。相反如果优先使用IPv4,则不能只与IPv6主机进行通信。

preferIPv6Addresses(默认false)表示在查询本地或远端IP 地址时,如果存在IPv4 和IPv6 双地址,Java程序是否优先返回IPv6 地址。Java 默认返回IPv4地址主要是为了向后兼容,以支持旧有的IPv4 验证逻辑,以及旧有的仅支持IPv4地址的服务。

2.2 日志预处理模块

日志预处理作为系统的一个重要模块,是日志分析的基础。本系统将源日志处理后直接存入MongoDB,为了加快对数据的写入,每个Document 下子Document 数据设置为2000,每200 个Document 写入一次。每条日志按内容结构进行切分为五个部分:设备、ip、级别、时间、消息主体。

2.3 日志存储模块

对存储模块的设计采用MongoDB与NoSQL的组合方式,其中MongoDB 负责缓冲存储采集的所有日志,NoSQL 负责存储从MongoDB 中导出的日志数据,从而为日志分析奠定基础。

2.4 日志分析模块

系统采集了大量网络设备的日志,如:身份认证、DHCP、DNS、流控等设备,系统依据这些设备日志,按业务规则对日志进行分析,可以确定出访问者在网络中的活动轨迹,具体实现过程的描述如图3所示。

图3 用户行为轨迹分析

2.5 日志分析结果可视化模块

对日志分析结果进行再处理并可视化显示,系统将日志分析处理后存储在NoSQL 中,需要先将这些结果提取出来,并分析转换为相应的可视化元素,如表格、图、表等。例如:对目标IP 位置进行地图展示如图4所示。

图4 目标IP位置地图可视化展示

2.6 系统部署架构

系统由一台日志收集服务器、日志分析服务器、和日志存储数据库服务器构成,其中日志分析服务器在整个架构中居于中心地位。

3 结束语

本文完成了基于IPv6 的网络日志分析系统的设计和实现,系统结合Syslog 协议和MongoDB 数据库技术实现了海量日志的收集和快速处理,同时,实现了对访问者的行为轨迹分析。

目前,本系统支持的网络设备还不够全面。此外,系统虽然具备一定的监测预警能力,可以第一时间报警并告知管理人员,但是提供的安全监测预警能力有限,在安全预警监测方面仍有较大提升空间。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!