我一直在研究 Linux 上的日志记录,但遇到了一个障碍,让我在过去几天里陷入了困境。我的目标是将运行 OpenSUSE Tumbleweed (aarch64) 的两个 raspberry pi 3 的日志转发到运行 Ubuntu 17.04 的笔记本电脑上。我使用rsyslog
它来实现这一点,它被用作imjournal
源,因为我想将日志存储为 json 格式,并附带 systemd-journal 提供的所有额外元数据,然后再使用它。
我试图解决的问题是缺少_TRANSPORT=audit
Raspberry Pi。我重新编译了systemd
其中audit
一个 Raspberry Pi 上的支持,以为这样可以解决问题,但并没有。我还在audit=1
Raspberry Pi 上添加了内核命令行并重新启动了它们。我的笔记本电脑支持传输audit
。
以下是我的不同系统上的journalctl --version
、sudo 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(重新配置systemd
并audit
支持):
$ 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