干货|龙芯架构明御综合日志审计分析平台迁移技术

技术引领创新,用“芯”构建生态,在这个春暖花开的季节,第二期龙芯生态论坛如约而至,本期将继续围绕龙芯生态建设应用迁移技术,介绍龙芯架构下安恒明御综合日志审计分析平台的迁移适配。

以下内容为活动速记

分享主题:龙芯架构明御综合日志审计分析平台迁移技术

分享嘉宾:陈岳军

在这里插入图片描述

安恒信息日志审计产品适配负责人 陈岳军
负责安恒产品在各类平台的迁移适配,具有丰富的产品适配及项目优化管理经验,擅长国产CPU项目的性能调优,推进迁移适配产品融入CI流程,具有丰富的产品安全检测整改经验,并为多家厂商提供产品适配解决方案。

正文如下:

1、项目背景

本次分享的主题的是龙芯架构下安恒明御综合日志审计分析平台迁移技术,接下来将从以下几个方面展开介绍:项目背景及产品架构、迁移适配路径、适配问题及解决方案。

安恒信息一直专注于网络信息安全领域,公司秉承“助力安全中国、助推数字经济”的企业使命,以“诚信正直、成就客户,责任至上,开放创新,以人为本,共同成长”作为企业的价值观,不断提高核心技术创新能力,从公司创立以来,先后为北京奥运会、十八大、十九大等国家重点活动提供安全服务保障,在重大活动中保持零失误,安恒也将是2022年杭州亚运会的官方合作伙伴。

信息技术应用创新是近年来信息技术领域的关注重点,结合近几年的国际形势,我们能够感受到,科学没有国界,但科技是有国界的,掌握信息产业自主核心技术,研发自主CPU及操作系统软硬件基础产品势在必行。下面具体介绍安恒日志审计系统在自主软硬件架构下的适配方案及问题与收获。

首先介绍一下安恒明御综合日志审计分析平台(以下简称安恒日志审计系统)。日志审计产品主要提供事前预警、事后审计的系统安全保障功能,通过对日志数据的全面采集、解析和深度关联分析,可及时发现各类安全威胁及异常行为事件。安恒日志审计系统的业务逻辑主要采用Java实现,部分功能采用Golang实现,以下为安恒日志审计系统的架构图。

在这里插入图片描述
从上图可以看到,安恒日志审计系统分为采集器、解析器、数据存储、功能展示四个部分。安恒日志审计系统从企业资产端搜集各类日志,采集器使用到了snmp、Nginx等消息相关的组件,解析和关联引擎是安恒自主研发的Java组件,性能监控采用了wapper组件,存储模块采用了MySQL和BDB,产品的目标是通过一套代码来适配各类自主CPU架构及操作系统。

2、迁移规划

下图展示了安恒日志审计系统的迁移路径,主要包括开发环境、应用组件、配置脚本的适配及业务测试与性能调优。
在这里插入图片描述

安恒日志审计系统采用Java开发,首先需要进行JDK的替换;其次产品部分功能采用Golang开发,需要在目标平台龙芯3A4000中进行代码的交叉编译;另外,安恒日志审计系统需要众多组件的支持,需要对相关组件进行适配迁移。迁移工作开始前,对相关组件进行整理并按照迁移工作量进行分类。上图中绿色标明的组件表示迁移难度较低,工作量相对较少;黄色标明的组件MySQL表示可以选择多种迁移方案;橙色标明的组件wapper表示迁移难度高,工作量比较大,需要进行代码重构。

当组件适配完成后,产品的主要功能已基本实现,为了更好地适配目标平台,需要对部分脚本进行调整修改,调整后,即可进行最终的产品及性能调优测试。

下图为安恒日志审计系统在龙芯架构下的适配调研情况表。从表中可以看出,龙芯架构下安恒日志审计系统的主要组件都已成功适配,但需要重点关注的是MySQL及wapper。对于MySQL,可以获取组件源码,在龙芯架构下进行编译,但考虑到开发进度及产品升级等问题,可以采用MariaDB进行替代,后面会详细介绍。
在这里插入图片描述

3、适配流程

借助于持续集成CI工具,我们可以实现一套代码适配不同的CPU架构及操作系统。此外,在原有CI流程基础上,增加了灌装环节,代码从dev分支汇入到目标平台的适配分支,经过构建、灌装,最终产出日志审计系统安装包。

作为自动化适配流程中的重要环节,下面着重介绍灌装流程的设计理念。拟在迁移目标平台环境下安装已适配好的组件,不同的迁移平台对应不同的适配环境,但代码来源相同。在灌装环境下,只需一次性安装、配置好适配环境就可以多次使用,后续只需要关注产品代码本身,无需再关注适配环境,提高了软件迁移效率。

在这里插入图片描述

4、适配问题及解决方案

下面重点介绍龙芯架构安恒日志审计系统的适配问题及解决方案。回顾迁移适配过程,可以将问题分为三类。

  • 第一类为系统类。本类问题与系统相关,需要具体问题具体分析,按照错误提示寻找解决办法。
  • 第二类为命令类。例如目标平台不能正确执行某个命令,需要寻找新的替代命令来解决本问题;另外脚本执行结果可能不符合预期,则需要修改脚本,调整获取脚本结果的方式来解决问题。
  • 第三类为编译类问题。这类问题又可分为三种:
    第一种问题需要重新编译源码来适配新环境;
    第二种为无源码但可下载到对应平台下的安装包,直接下载安装即可;
    第三种的适配难度较高,功能组件不存在源码或安装包,需要调研是否有替代产品或重新开发。

根据以上不同类别的迁移问题,下面将具体说明问题情况及解决方案。安恒日志审计系统的目标适配环境为龙芯3A4000+统信UOS,迁移前环境为X86+CentOS-7, 产品采用Java+Golang语言开发。
适配前需要进行环境配置,在统信UOS系统中添加并更新apt源,以便下载并安装适配过程中需要的组件源码及安装包。下面介绍具体的适配问题。

问题1:系统类问题-apt-get报错

  • 问题描述:在执行apt-get相关命令时,提示缺少/var/backups/dpkg.status.0
  • 解决方案:按照错误提示,在系统中手动创建相关目录并拷贝缺失的文件。

问题2:系统问题-卸载后系统无法启动

  • 问题描述:卸载日志审计系统后,操作系统无法正常启动。
  • 问题分析:日志审计系统的工作目录为/data,卸载时会删除/data目录及目录内容,而龙芯默认的分区配置包含/data/home、/data/var,则卸载日志审计系统、删除/data目录后,破坏了系统分区配置,导致系统无法启动。
  • 解决方案:修改/etc/fstab文件,调整操作系统分区配置信息,注释默认的分区配置后,问题得到解决。下图为调整后的/etc/fstab文件。
    在这里插入图片描述

问题3:命令问题-脚本执行失败

  • 问题分析:统信UOS系统中默认使用dash,而日志审计系统中的脚本需要bash执行。相比于bash,dash执行速度更快,但功能没有bash丰富,导致sh脚本执行失败。
  • 解决方案1:在脚本文件中明确写明脚本解释工具为bash(Shebang为bash)。
  • 解决方案2:将系统默认的sh由dash更改为bash。安恒日志审计系统迁移时,采用了本方案,执行命令sudo dpkg-reconfigure dash,根据界面提示选择“否”。
  • 在这里插入图片描述

问题4:命令问题-命令回显不同

  • 问题描述:执行命令ifconfig,CentOS-7及统信UOS中的执行结果如下:
    在这里插入图片描述

不同系统中命令显示的结果不同。该类问题比较隐蔽,因为命令可以正确执行,无错误提示,需要重点观察并单独调试。

问题5:编译问题-Nginx无法执行

  • 解决方案:下载源码包、在目标适配平台上进行编译、生成可执行文件后,该组件可正常使用。

问题6:编译问题-snmp配置页面无法正常使用

  • 解决方案:通信UOS源提供了该组件的安装包,通过命令apt-get -d install snmpd snmp即可进行下载。下载后根据配置要求,调整安装路径,确保
    组件可正常使用。

问题7:MySQL组件的适配

  • 问题描述:MySQL官方未提供MIPS架构的安装包。
  • 解决方案1:采用MariaDB替代MySQL。
  • 解决方案2:使用MySQL源码进行交叉编译。

问题8:wapper编译

  • 问题描述:wapper组件主要用于日志审计系统的性能展示,但wapper官方未提供MIPS架构的安装包。
  • 解决方案:使用Java重新实现该功能。对于没有源码也没有安装包,但重构工作量较大的组件,也可以采用MySQL的处理方式,即寻找对应的替代组件。
    最后来介绍业务测试及性能调优的情况。

下图为安恒日志审计系统迁移到龙芯架构下性能优化前的报告。从报告中可以看到syslog的接收量为35000多条,但因为解析效率低,正常处理的日志约7502条,其余数据被存入队列,队列被填满,无法及时处理的日志信息,被日志审计系统丢弃,从下图可以看到性能优化前累计丢弃的日志约477556条,性能未达预期:
在这里插入图片描述

通过dump日志,找到了内存消耗的主要原因在于日志解析及SM4加密。经分析,日志解析内存占用量大的原因为日志匹配失败,据此我们更新了日志解析规则库,提案解析成功率,从而降低了内存消耗。对于SM4加密问题,龙芯3A4000提供CPU级别的硬件加密功能,因此可以将代码中原来使用的cypher库加密的方式切换为CPU加密,采用CPU硬件加密后,安全性更高,内存消耗显著降低,性能大幅提升。性能优化后的报告见下图:
在这里插入图片描述

经过优化后,日志信息能够成功正常、完整接收,35000多条syslog信息被全部处理,队列不会出现拥塞,产品性能达到预期。

问答环节:

Q1:龙芯支持1.8以上的 JDK版本吗?
A1:龙芯的官网已经发布了JDK13, 龙芯公司拥有专门、专业的JVM团队,长期致力于JVM研发和维护,具体的版本可以关注龙芯官网的发布情况。

Q2: 我们接下来也准备适配,有没有一些建议可以提供?
A2:对于国产化的适配最好不要作为单独的项目去做,可以作为CI/CD的一部分,一次适配之后,后续的一些改动,都可以通过代码同步来实现持续更新,减少人员投入。

龙芯技术博客:
https://blog.csdn.net/loongnix?spm=1010.2135.3001.5343&type=blog

龙芯技术社区:
https://loongson.cloud.csdn.net/

  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

龙芯技术社区

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值