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

Wer*_*eii 5 linux logging manjaro auditd

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

我已经找到了如何在arch wiki上完全禁用 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
# ...
Run Code Online (Sandbox Code Playgroud)

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

那么,我怎样才能停止在 journal[ctl] 中看到审计事件并让它们只登录到一个特定的文件中呢?

Wer*_*eii 6

我做了功课并将所有内容都记录到一个文件中,而不是记录到 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
Run Code Online (Sandbox Code Playgroud)

在您重新启动之前,审核事件可能仍会记录到日志中。

设置 auditd

安装或确保auditd安装了软件包,根据您的发行版,auditManjaro可能会以不同的方式命名。

配置文件

的位置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
Run Code Online (Sandbox Code Playgroud)

这个文件已经存在于我的系统上,有一些合理的默认值,但这些似乎是最重要的日志选项。如果它不存在,您应该查阅您的联机帮助页,其他可能重要的选项之一是dispatcher=,因为如果您正在使用审核规则 ( audispd, /etc/audit/rules.d/)。

系统单位 auditd

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

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

# /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
Run Code Online (Sandbox Code Playgroud)

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