如何省略特定用户的 PAM 日志消息 (pam_succeed_if Quiet)

如何省略特定用户的 PAM 日志消息 (pam_succeed_if Quiet)

我正在使用监控代理(telegraf)来监控fail2ban。不幸的是,它需要超级用户权限才能执行fail2ban-client,这会导致每 10 秒产生 24 条系统日志消息……算一下,我的系统日志绝对混乱。

我想在系统日志中抑制这些消息,如果可能的话,仅由 telegraf 引起:

sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
sudo: pam_unix(sudo:session): session closed for user root

我尝试使用自定义“规则”来/etc/pam.d/sudo抑制这些消息,但没有成功:

# cat /etc/pam.d/sudo
#%PAM-1.0

session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
session [default=ignore] pam_succeed_if.so quiet uid = 0 user = root ruser = telegraf
@include common-session-noninteractive

仅以开头的行session添加到该文件中。该解决方案改编自如何停止特定用户的 auth.log 中的 sudo PAM 消息?

但是,日志消息仍然出现/var/log/auth.logjournalctl -xe

我已经尝试过quiet_success以及quiet标志(在 中找到man pam_succeed_if)。还使用success=1makefail telegraftoexecute fail2ban-client,我猜是因为它需要一个交互式 tty?

这是使用debug标志记录的:

Sep 20 11:34:51 host sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Sep 20 11:34:51 host sudo: pam_succeed_if(sudo:session): 'uid' resolves to '0'
Sep 20 11:34:51 host sudo: pam_succeed_if(sudo:session): 'user' resolves to 'root'
Sep 20 11:34:51 host sudo: pam_succeed_if(sudo:session): 'ruser' resolves to 'telegraf'
Sep 20 11:34:51 host sudo: pam_unix(sudo:session): session closed for user root

据我所知,“规则”正确匹配 uid、user 和 ruser,但不会抑制日志消息。我是否错过了重新启动,或者发生了什么?

答案1

我设法让它使用以下配置(/etc/pam.d/sudo

#%PAM-1.0

session [success=done default=ignore] pam_succeed_if.so quiet uid = 0 user = root ruser = telegraf
session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

老实说,我不知道问题是什么,但我认为顺序可能很重要。请自行承担使用此信息的风险,我不知道我在做什么......但我的系统日志现在看起来干净多了:)

(如果有人解释一下情况,我们将不胜感激)

相关内容