Wazuh 忽略 sudo 通知中的特定用户

Wazuh 忽略 sudo 通知中的特定用户

我正在使用 Wazuh 4.1.x 监控我的服务器。我的服务器是 Ubuntu 和 CentOS。它们也使用 Icinga2 和 NRPE 代理进行监控。Wazuh 正在记录所有 sudo 身份验证或使用 sudo 运行的命令(这很好)。但由于某些 nrpe 命令需要使用 sudo 执行,因此我想忽略来自 nagios 用户的所有 sudo 请求。到目前为止,我尝试过的方法是:

我在 /var/ossec/etc/rules/local_rules.xml 中添加了一个自定义组和一个自定义规则,如下所示:

<group name="exceptions,">
  <rule id="101101" level="0">
    <if_sid>5402</if_sid>
    <match>sudo:   nagios</match>
    <description>Ignore sudo auth for nagios user</description>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
  <rule id="101102" level="0">
    <if_sid>5402</if_sid>
    <match>sudo:    nrpe</match>
    <description>Ignore sudo auth for nagios user</description>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

5402 是 Wazuh 的默认 sudo 规则。

在 alerts.log 中我可以看到 sudo 的以下内容:

Aug 19 23:05:25 reports sudo:    nrpe : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/lib64/nagios/plugins/check_procs -c 1: -C nrpe
Aug 19 23:05:25 reports sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 20 00:51:27 transfer sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 20 00:51:27 transfer sudo: pam_unix(sudo:session): session closed for user root
** Alert 1629414327.485693326: - syslog,sudo,pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,
Rule: 5402 (level 3) -> 'Successful sudo to ROOT executed.'
Aug 20 00:51:27 transfer sudo:   nagios : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/lib/nagios/plugins/check_procs -c 1: --ereg-argument-array=SERVER

我无法弄清楚为什么规则没有应用,或者我做错了什么。我还在日志中搜索了规则 101101 或 101102,但什么也没找到,所以我假设它们实际上没有被应用。

更新:也尝试了这种规则:

<group name="exceptions,">
  <rule id="101101" level="0" frequency="5" timeframe="60">
    <if_matched_sid>5407</if_matched_sid>
    <match>   nrpe :</match>
    <description>Ignore sudo auth for nagios user.</description>
    <options>no_log</options>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
  <rule id="101102" level="0" frequency="5" timeframe="60">
    <if_matched_sid>5407</if_matched_sid>
    <match>   nrpe : </match>
    <description>Ignore sudo auth for nrpe user.</description>
    <options>no_log</options>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

显然,规则 5402 适用于 root 执行的 sudo,而规则 5407 适用于普通用户执行的 sudo。无论如何,仍然不起作用...

如果我使用 for,同样的规则也会匹配<hostname>hostname</hostname>,但这意味着它将忽略所有须藤来自该主机,而不仅仅是nagios/nrpe用户。

答案1

最后我想到了一个混合解决方案:Wazuh + Linux PAM 设置

对于 WAZUH-Manager,我添加了以下规则/var/oseec/etc/rules/local_rules.xml

<group name="exceptions,">
  <rule id="101101" level="0">
    <if_sid>5402</if_sid>
    <regex>^  nagios|^   nrpe</regex>
    <description>Ignore sudo auth for nagios|nrpe user.</description>
    <options>no_log</options>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

它的作用是,它忽略记录用户 nagios|nrpe 执行的 sudo 命令

至于如何摆脱 nagios/nrpe 执行 sudo 命令后生成的消息(为用户 root 打开|关闭会话),您可以像这样抑制此消息出现在/var/log/auth.log(Ubuntu/Debian)或(CentOS/Fedora/RedHat)中:/var/log/secure

对于 Ubuntu/Debian:

编辑 /etc/pam.d/sudo 并使其看起来像这样:

...
@include common-account
session [success=1 default=ignore] pam_succeed_if.so quiet uid = 0 ruser = nagios
@include common-session-noninteractive

对于 CentOS/Fedora/RedHat:

编辑 /etc/pam.d/system-auth 并使其看起来像这样:

...
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     [success=1 default=ignore] pam_succeed_if.so quiet uid = 0 ruser = nrpe
session     required      pam_unix.so

这样,所有由用户 nagios|nrpe 使用 sudo 执行的命令都不会再被记录。如果任何其他用户使用 sudo 执行命令,则这些命令将被记录。

至于 WAZUH,alerts.log 不再受到污染,并且类似的操作sudo: nagios : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/lib/nagios/plugins/check_blabla会被忽略且不会记录。

或者,你可以只忽略一些特定的命令,例如:

<group name="exceptions,">
  <rule id="101102" level="0">
    <if_sid>5402</if_sid>
    <field name="command">/usr/lib/nagios/plugins/check_procs|/usr/lib64/nagios/plugins/check_procs</field>
    <description>Rule to ignore sudo command check_procs from nagios|nrpe</description>
    <options>no_log</options>
    <group>pci_dss_10.2.5,pci_dss_10.2.2,gpg13_7.6,gpg13_7.8,gpg13_7.13,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AC.6,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
  </rule>
</group>

也许这个效果可以通过 Wazuh 自定义规则或更优雅的方式实现。不管怎样,效果还是不错的。

我希望它有帮助!

相关内容