如何停止 journalctl 显示审计日志并仅将其保存在文件中?

如何停止 journalctl 显示审计日志并仅将其保存在文件中?

我希望所有 auditd 日志都只放在它自己的日志文件中,并保持我的 journalctl 视图较少受到大多数时候由我自己的操作(单用户/个人计算机)生成的事件的污染。

我已经找到了如何完全禁用auditd或禁用审计事件的日志记录(?)拱门维基,然后我看了一下auditd.conf实际上log_file填写了一个选项,但它指向的文件不存在,所有内容都只是记录到日志中。

# /etc/audit/auditd.conf

local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /usr/bin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
# ...

似乎 systemd-journald-audit 比审计事件具有优先级,我的第一个想法是使用 rsyslog 规则,但似乎 Manjaro 上没有使用 rsyslog。

那么,我怎样才能停止在 journal[ctl] 中查看审计事件并让它们仅记录到特定文件中?

答案1

我做了功课,把所有东西都记录到文件中,而不是 syslog/journal 中。从表面上看,默认情况下,systemd 会为内核的审计事件设置自己的监听器,并将它们记录到 syslog/journal 中。另一种方法是使用auditd读取这些事件并将其记录到可配置的日志文件中。

禁用 systemd 的审计事件日志记录:

systemctl stop systemd-journald-audit.socket 
systemctl disable systemd-journald-audit.socket

# masking will prevent starting by other services
# 'systemctl unmask' to reverse
systemctl mask systemd-journald-audit.socket

审计事件可能仍会记录到日志中,直到您重新启动。

设置auditd

安装或确保auditd包已安装,根据发行版的不同可能会有不同的名称,在撰写本文时,它audit适用于基于 Arch 的 Manjaro。

配置文件

的位置auditd.conf似乎不同(在线手册页有不同的位置),请参阅您的man auditd.conf

下面的配置应该可以解决问题,确保/var/log/audit/存在。

# /etc/audit/auditd.conf

local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 5                  # after how many messages to explicitly flush
max_log_file = 8          # size in MB per one log file
num_logs = 5              # keep n amount of rotated logs

#  ... truncated

此文件已存在于我的系统中,并具有一些合理的默认值,但这些似乎是日志记录最重要的选项。如果不存在,您应该查阅手册页,另一个可能重要的选项是dispatcher=,如果您正在使用审计规则(audispd/etc/audit/rules.d/)。

Systemd 单元auditd

auditd 软件包附带有自己的 systemd 单元文件,位于 /usr/lib/systemd/system/auditd.service。服务文件中有一些注释,请务必阅读以检查这些注释是否适用。

将该文件复制到/etc/systemd/system/auditd.service,然后发出

systemctl daemon-reload

systemctl start auditd.service
systemctl enable auditd.service # will be auto started with system

这一切都适用于我的系统,即5.9.10-1 kernel带有systemd 246和 的Manjaro audit version 2.8.5。用于将审计事件记录到 syslog/journal 的 systemd 单元可能名称不同,并且 auditd 的 systemd 单元的存在及其配置路径在其他发行版中可能不同。

相关内容