关于rsyslog转发auditd日志配置过程及问题排查

  • 项目功能,要求收集linux系统日志,故使用了rsyslog转发audit系统日志
  • 本环境测试搭建了两台虚拟机,使用centos7.9,一台为客户端,一台为服务端
  • auditd为系统默认自带,rsyslog应当手动安装(安装步骤可以百度)
  • 测试环境拓扑

关于rsyslog转发auditd日志配置过程及问题排查_第1张图片

 

1.rsyslog守护进程可以被分配为两种角色,既可以做客户端也可以做服务端,通过配置文件/etc/rsyslog.conf实现,该配置文件主要包含三个部分如下:

        MODULES:定义消息来源的模块

        GLOBAL DIRECTIVES:定义全局环境

        RULES:定义日志的等级规则

2.查看注释及帮助信息,具体配置项如下:

客户端配置(172.18.40.155):

$template CustomAuditFormat,"/var/log/audit/audit.log"   # 转发的日志文件路径
$ActionFileDefaultTemplate CustomAuditFormat   # 设置使用上面定义的模板
#audit log
$ModLoad imfile
$InputFileName /var/log/audit/*
$InputFileTag tag_audit_log
$InputFileStateFile audit_state1
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor

关于rsyslog转发auditd日志配置过程及问题排查_第2张图片

 服务端配置(172.18.40.156):

关于rsyslog转发auditd日志配置过程及问题排查_第3张图片

3.在以上客户端和服务端配置完成后,两台终端重启rsyslog服务,关闭防火墙 

systemctl restart rsyslog

systemctl stop firewalld.service

 4.使用logger命令测试,从客户端写信息,查看服务器是否有收到发来的日志信息

logger -it warning "hello sss"

logger -it error -p local5.info "hello aaaaa"

logger -it error -p local5.info "hello aaaaa"

172.18.40.155:

关于rsyslog转发auditd日志配置过程及问题排查_第4张图片

 5.进入/var/log下可以看见客户端发来的日志消息文件

$template IpTemplate,"/var/log/%FROMHOST-IP%.log":定义客户端发来的日志文件位置及名称(这个是在/var/log目录下)
*.* ?IpTemplate:模板应用到所有接收到的日志上 

172.18.40.156

 6.排查问题

此时整个日志通道已经调试通过,但是audit日志却没能发送,只能发送手动打印的日志。在反复修改rsyslog.conf配置文件时,发现每次使用命令systemctl stop audit停止服务,服务端可以收到来自客户端的audit日志,但是用命令systemctl start audit开启服务后,则服务端停止接收audit日志。(这个过程花费了大量时间,服务端audit日志时有时无,完全没有想到开启和停止audit服务会影响日志发送,而且是服务开启停止发送audit,服务关闭才会发送audit日志

7.顺着步骤6的结果,我查看了开启audit服务时,错误打印消息

客户端停止audit:

关于rsyslog转发auditd日志配置过程及问题排查_第5张图片

 此时服务端有audit日志

关于rsyslog转发auditd日志配置过程及问题排查_第6张图片

 客户端运行命令再次开启audit:systemctl start auditd.service

服务端打印的日志错误如下:

关于rsyslog转发auditd日志配置过程及问题排查_第7张图片理所当然的看到了最后一行:Unregistered Authentication Agent for unix-process

8.通过网上查询原因未果,许多服务包括mysql都有类似报错,原因是为需要认证的进程,依然没有解决问题。

于是再次查找了日志信息 中(audispd:  No plugins found, exiting),询问gpt后,了解到audispd一个非常重要的组件,audispd是一个用于处理和转发audit事件的守护程序。它负责接收来自auditd的事件,并根据配置的插件进行处理和转发。这些插件可以执行各种操作,如将事件写入本地日志文件、发送到远程syslog服务器或执行自定义脚本。

当audispd启动时,它会查找可用的插件,并加载这些插件以处理audit事件。如果没有找到任何插件,那么就会显示该错误消息并且audispd会退出。

9.顺着步骤8的结果,查找audispd插件是否加载及配置文件,查找到在/etc/audisp/plugins.d目录下找到配置文件

关于rsyslog转发auditd日志配置过程及问题排查_第8张图片

 将这两个文件的字段值active 为yes后,保存并再次重启auditd服务,服务端audit日志打印正常且不中断(active表示是否激活此插件)

关于rsyslog转发auditd日志配置过程及问题排查_第9张图片

 总结:

至此,成功解决问题,audit可外发日志到rsyslog,由于以前未了解过相关的知识,排查问题时花费了大量时间。不同配置文件的每一项及字段都有重要功能需要一一校对,写下此总结仅供学习使用。

关于本文章的帮助及信息转载:【Linux】rsyslog日志服务(配置,测试、日志转储)_滨河四季的博客-CSDN博客

如何将linux audit产生的审计信息传入到其他程序中(利用audispd)_audispd 命令_yldfree的博客-CSDN博客

你可能感兴趣的:(linux,网络)