如何启用 systemd 的日志审计传输?

如何启用 systemd 的日志审计传输?

我一直在研究 Linux 上的日志记录,但遇到了一个障碍,让我在过去几天里陷入了困境。我的目标是将运行 OpenSUSE Tumbleweed (aarch64) 的两个 raspberry pi 3 的日志转发到运行 Ubuntu 17.04 的笔记本电脑上。我使用rsyslog它来实现这一点,它被用作imjournal源,因为我想将日志存储为 json 格式,并附带 systemd-journal 提供的所有额外元数据,然后再使用它。

我试图解决的问题是缺少_TRANSPORT=auditRaspberry Pi。我重新编译了systemd其中audit一个 Raspberry Pi 上的支持,以为这样可以解决问题,但并没有。我还在audit=1Raspberry Pi 上添加了内核命令行并重新启动了它们。我的笔记本电脑支持传输audit

以下是我的不同系统上的journalctl --versionsudo journalctl --field _TRANSPORT和的输出。cat /proc/cmdline

笔记本电脑:

$ journalctl --version
systemd 232
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP 
+LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS 
+KMOD +IDN

$ sudo journalctl --field _TRANSPORT
syslog
stdout
journal
audit
driver
kernel

$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.10.0-33-generic.efi.signed 
root=UUID=cf4dc10b-511a-4369-ad5c-637833244929 ro apparmor=1 
security=apparmor 

rpi1(重新配置systemdaudit支持):

$ journalctl --version
systemd 234
+PAM +AUDIT +SELINUX -IMA +APPARMOR -SMACK +SYSVINIT +UTMP 
+LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS 
+KMOD -IDN2 -IDN default-hierarchy=hybrid

$ sudo journalctl --field _TRANSPORT
stdout
kernel
journal
syslog
driver

$ cat /proc/cmdline
BOOT_IMAGE=/boot/Image-4.4.83-5-default root=UUID=30bbe534-b90f-4de6-
a0e6-1e2b60088461 root=/dev/disk/by-id/mmc-ACLCD_0xd02f42e5-part2 
disk=/dev/disk/by-id/mmc-ACLCD_0xd02f42e5 resume=/dev/disk/by-id/mmc-
ACLCD_0xd02f42e5-part3 quiet splash=silent plymouth.enable=0 
swiotlb=512,force cma=384M console=ttyS0,115200n8 console=tty quiet 
audit=1

rpi2(systemd由发行版配置的原始版本):

$ journalctl --version
systemd 234
+PAM -AUDIT +SELINUX -IMA +APPARMOR -SMACK +SYSVINIT +UTMP 
+LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL+XZ +LZ4 +SECCOMP +BLKID -ELFUTILS 
+KMOD -IDN2 -IDN default-hierarchy=hybrid

$ sudo journalctl --field _TRANSPORT
stdout
kernel
journal
syslog
driver

cat /proc/cmdline
BOOT_IMAGE=/boot/Image-4.4.83-5-default root=UUID=30bbe534-b90f-4de6-
a0e6-1e2b60088461 root=/dev/disk/by-id/mmc-ACLCD_0xcaf643ee-part2 
disk=/dev/disk/by-id/mmc-ACLCD_0xcaf643ee resume=/dev/disk/by-id/mmc-
ACLCD_0xcaf643ee-part3 quiet splash=silent plymouth.enable=0 
swiotlb=512,force cma=384M console=ttyS0,115200n8 console=tty quiet 
audit=1

我不确定我需要做什么才能systemd-journald在我的 rpi 上启用审计传输。我已在所有系统上auditd.service启用systemd-journald-audit.socket并激活了。如果您需要任何其他信息,请告诉我,谢谢。

答案1

我会检查以下事项:

  • 配置 systemd-journald-audit.socket为使用协议监听套接字AF_NETLINK。如果systemctl status systemd-journald-audit.socket未处于活动状态,则systemd-journald.service表示未使用它。

  • 确保systemd-journald-audit.socket包含在Sockets=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket定义中systemd-journald.service

    如果默认值缺失systemd-journald.service,请创建覆盖/etc/systemd/system/systemd-journald.service.d/override.conf

    # systemctl edit systemd-journald.service
    [Service]
    Sockets=
    Sockets=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket
    # systemctl restart systemd-journald.service
    
  • audit=0尚未设置为内核参数。请使用 检查cat /proc/cmdline

验证审计现在是否在您的字段类型集合中_TRANSPORT

# journalctl --field _TRANSPORT
stdout
kernel
syslog
journal
audit
driver

相关内容