如何在 dmesg 中禁用无用的“审核成功”日志条目

bas*_*ic6 20 linux fedora networkmanager systemd audit

简短版本:如何在 Fedora 系统上禁用审计消息 (dmesg)?


Fedora 系统不断在 dmesg 中记录“审计:成功”消息 - 以一种极端的方式,dmesg 变得无法使用,因为它被这些消息填满(dmesg | grep -v audit为空)。这些消息完全没有用,因为它们显然想通知用户一些日常内部过程已经成功(在调试某些东西时可能会感兴趣,但在这种情况下它只是噪音)。

甚至命令行界面(切换到与非X TTY当Ctrl+ Alt+ F2)变得不可使用,因为它总是与这些审核消息混乱,这是不可能的读取实际上是由用户运行的命令的输出。例如,输入用户名(登录)后,会喷出一条审核消息(显然是告诉用户某些内容已格式化/打印成功):

审计:类型=1131审计(1446913801.945:10129):pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" 主机名 地址=? 终端=?资源=成功'

似乎这些消息中的大多数表示“成功”,但是也有许多审核消息不包含此关键字。运行 Chromium 会触发数百个:

审计:类型=1326审计(1446932349.568:10307):auid=500 uid=500 gid=500 ses=2 pid=1593 comm="chrome" exe="/usr/lib64/chromium/chrome" sig=0 arch=c000003e系统调用=273 兼容=0 ip=0x7f9a1d0a34f4 代码=0x50000

其他消息包括:

审计:类型=1131审计(1446934361.948:10327):pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" =?地址=? 终端=?资源=成功'

审计:类型=1103 审计(1446926401.821:10253):pid=28148 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred grantors=p am_env,pam_unix"exe acct/="user/usr /crond”主机名=?地址=? 终端=cron res=成功'

通常,大多数最近的审计消息(在撰写本文时)都包含关键字“ NetworkManager ”或“ chrome ”。

如何完全禁用这些消息?


附加点:

  • 如果有人可能会想“您应该阅读和分析这些审核消息,而不是禁用它们,它们可能很重要”,不,它们不重要,它们几乎完全是“成功”消息。没有人需要被告知应该有效的东西实际上有效。但是,如果记录了一条真正重要的消息,那么在成千上万条无关紧要的消息风暴中永远不会注意到它。在任何情况下,这个特定系统都不需要审计日志(无论如何它都在受控环境中运行)。
  • 很明显,这个系统上的某些东西一定是配置错误的。然而,它曾经是默认的 Fedora 安装,每当新版本发布时都会升级。也许这只是一个必须更改的简单设置,但是由于手动更改系统配置并没有发生(故意),这个 stackexchange.com 问题有望帮助那些碰巧让他们的系统处于相同状态的其他人。
  • 它现在是一个 Fedora 22 系统,运行 Linux 4.0.6 (systemd 219)。
  • 它是标准的 Fedora 桌面安装,当前运行 KDE。
  • SELinux 被禁用(/etc/selinux/config 设置为“禁用”)。

更新:升级到 Fedora 23(内核 4.2.5,systemd 222)后,审计消息比以前少了。

小智 16

首先,在fedora 上,auditd 和auditctl 来自同一个包(名称不会混淆)。因此,如果您没有auditctl,则其他问题是错误的。尝试这个:

rpm -ql audit |grep ctl
Run Code Online (Sandbox Code Playgroud)

如果这没有给你什么,那么你根本没有安装审计包。

其次,您提到的 grub.cfg 文件中的第一个“人类”语言行在我的系统上说“请勿编辑”。这是对文件的任何手动更改都可能丢失的线索。

在 Fedora/redhat 系统上编辑 grub 配置的正确位置是您特别建议不需要更改的一个文件 (/etc/default/grub)。实际上,这是进行提议的更改并在内核升级中幸存下来的唯一“安全”方式。这是因为它在内核升级期间用作源配置的一部分,以重新生成工作 grub.cfg。查找 grub2-mkconfig 命令(和它的朋友)。详细信息在这里:https : //fedoraproject.org/wiki/GRUB_2

你的回答没有错,但我觉得有点混乱。我讨厌 grub 命令行,恕我直言,任何可能错过在内核命令行上添加空白字符的人都可能不会感谢任何人走上这条路。尽管如此,有些人还是喜欢用我所知道的艰难的方式学习。

下面的所有命令都需要以 root 身份运行(这本身就是一个危险的建议)。

对于正在运行的系统:

auditctl -e 0
Run Code Online (Sandbox Code Playgroud)

如果您找不到 auditctl,请检查您的 PATH 并考虑:

dnf install audit
Run Code Online (Sandbox Code Playgroud)

如果在您可以重新启动之前不禁用消息,这至少应该减少。

要在重新启动后保持不变,请编辑 /etc/default/grub 并更改 GRUB_CMDLINE_LINUX 行以在末尾添加“audit=0”,然后使用 grub2-mkconfig 重新生成 grub.cfg。这最后一步还在您的更改和正在运行的系统之间放置了一层验证。


meu*_*euh 9

您可以使用以下命令快速禁用审核

sudo auditctl -e 0
Run Code Online (Sandbox Code Playgroud)

并暂时删除所有规则

sudo auditctl -D
Run Code Online (Sandbox Code Playgroud)

对于未来的靴子,您可以尝试禁用它的开始

 sudo systemctl disable auditd
Run Code Online (Sandbox Code Playgroud)


bas*_*ic6 5

系统运行时没有可以禁用的auditd服务,但事实证明添加启动选项audit=0似乎会禁用所有这些消息。即使在没有运行 X 的命令行上,系统也可以再次使用。

可以临时设置此选项(重新启动后更改将不会保留):

  1. 当 Grub 启动菜单出现时(打开电源后),点击e编辑启动参数。这将显示一个巨大的文本框。
  2. 向下滚动到以“linux”开头的行。按End键将光标移动到行尾。
  3. 输入一个空格字符,以免破坏最后一个选项,然后追加audit=0。例如... LANG=en_US.UTF-8 audit=0...UTF-8audit=0显然不是)。
  4. 小心不要改变任何其他东西。如果您不小心修改了其他选项,请修复它或重新启动并重新开始。
  5. 点击F10启动系统。

当然,这个改变只有在系统运行时才会生效。重新启动后,审核洪水将再次出现。要使此更改永久生效,必须永久更改启动配置。在 Fedora 上,简单修改就足够了,/boot/grub2/grub.cfg因为当安装新内核(系统更新)时,grubby 应该将最新内核的选项复制到新安装的内核。这意味着,audit=0必须附加到该文件的第一linux行(第一部分)。应该没有必要改变。 更正:实际上,正确且最可靠的方法是使用 编辑并重新生成 Grub 配置,感谢KnightLordAndMaster 指出了这一点menuentry/etc/default/grub
/etc/default/grubgrub2-mkconfig -o /boot/grub2/grub.cfg


关于日志文件中审核日志的附加说明:

附带说明一下,以下行应该可以防止审核日志最终出现在日志文件中,但它们仍然会使 dmesg 和控制台变得混乱,因此这本身并不是一个解决方案。该行将作为第一条规则放入/etc/rsyslog.conf

...
#### RULES ####

# no audit
:programname, isequal, "audit" ~

...
Run Code Online (Sandbox Code Playgroud)

现在,这会导致以下警告:

 rsyslogd[xxxx]: warning: ~ action is deprecated, consider using the 'stop' statement instead [v8.35.0 try http://www.rsyslog.com/e/2307]
Run Code Online (Sandbox Code Playgroud)