我有一个简单的 Splunk 设置。大约 120 台左右的 Linux 服务器(基本上都是设备),安装了通用转发器,还有一台运行 Splunk Enterprise 的 Linux 服务器充当索引器、搜索头等。
我遇到的问题是转发器必须将服务器的审计日志输入到 Splunk。该输入实际上工作正常,但它会淹没服务器,导致我超出许可限制。
具体来说,设备应用程序在 cron 中有一个运行频率很高的事件,它用文件访问、文件修改等事件充斥审计日志,这导致我发送给 Splunk Enterprise 的数据量激增。我根本不需要这些数据。
我想做的是过滤掉这些特定的事件,但是仅有的对于这个特定的用户。我相信这可以使用索引器上的 transforms.conf 和 props.conf 来完成,但我无法正确获取语法和字段。
有人可以帮忙吗?
这是我需要删除的数据...
sourcetype=auditd
acct=appuser
exe=/usr/sbin/crond
exe=/usr/bin/crontab
因此基本上,用户“appuser”的审计日志中引用“/usr/bin/crontab”或“usr/bin/crontab”的任何事件都需要被删除。
这是我想要删除的事件的一个示例。
type=USER_END msg=audit(03/04/2024 15:58:02.701:5726) : pid=26919
uid=root auid=appuser ses=184 msg='op=PAM:session_close
grantors=pam_loginuid,pam_keyinit,pam_limits,pam_systemd acct=appuser
exe=/usr/sbin/crond hostname=? addr=? terminal=cron res=success'
type=USER_ACCT msg=audit(03/04/2024 15:58:02.488:5723) : pid=26947 uid=appuser auid=appuser ses=184 msg='op=PAM:accounting grantors=pam_access,pam_unix,pam_localuser acct=appuser exe=/usr/bin/crontab hostname=? addr=? terminal=cron res=success'
这能做到吗?
答案1
了解您迄今为止尝试过的方法以及这些尝试如何失败会有所帮助。您想要做的事情是可能的。对每条消息进行单独的转换可以更轻松地防止正则表达式变得太混乱。
属性.conf:
[auditd]
TRANSFORMS-nocrond = dropcrond
TRANSFORMS-no crontab =dropcrontab
转换.conf:
[dropcrond]
REGEX = acct=appuser exe=\/usr\/sbin\/crond
DEST = queue
FORMAT = nullQueue
[dropcrontab]
REGEX = acct=appuser exe=\/usr\/sbin\/crontab
DEST = queue
FORMAT = nullQueue
也可以使用 Ingest Actions 来完成。转到 Settings->Ingest Actions 打开向导。
答案2
我最终将 RichG 的回复与来自另一个论坛的一些建议结合起来,得出了我的答案。
这里是
属性配置文件
[source::auditd]
TRANSFORMS-set=setnull
转换配置文件
[setnull]
REGEX = acct=appuser.*exe=/usr/(sbin/crond|bin/crontab)
DEST_KEY = queue
FORMAT = nullQueue