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
服务端配置(172.18.40.156):
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:
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:
此时服务端有audit日志
客户端运行命令再次开启audit:systemctl start auditd.service
服务端打印的日志错误如下:
理所当然的看到了最后一行: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目录下找到配置文件
将这两个文件的字段值active 为yes后,保存并再次重启auditd服务,服务端audit日志打印正常且不中断(active表示是否激活此插件)
总结:
至此,成功解决问题,audit可外发日志到rsyslog,由于以前未了解过相关的知识,排查问题时花费了大量时间。不同配置文件的每一项及字段都有重要功能需要一一校对,写下此总结仅供学习使用。
关于本文章的帮助及信息转载:【Linux】rsyslog日志服务(配置,测试、日志转储)_滨河四季的博客-CSDN博客
如何将linux audit产生的审计信息传入到其他程序中(利用audispd)_audispd 命令_yldfree的博客-CSDN博客