我正在使用 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 自定义规则或更优雅的方式实现。不管怎样,效果还是不错的。
我希望它有帮助!