环境准备:装好Splunk,开审计,配索引

好,咱们正式开始动手。这一章不讲理论,就是让你把机器搭起来,能把审计日志收进去。我见过太多人一上来就写SPL,结果发现日志根本没进来——那才是真浪费时间。所以这一步稳了,后面才顺。

本章目标:能在自己的Splunk实例上查看audittrail索引,确认审计日志已经在写入。

2.1 安装Splunk(本地单实例)

我个人习惯在Linux上装,CentOS或Ubuntu都行。Windows也行,但生产环境建议Linux。这里我以splunk-9.0.5为例,你装新版一样操作。

# 下载(替换成你的实际版本号)
wget -O splunk-9.0.5.deb 'https://download.splunk.com/products/splunk/releases/9.0.5/linux/splunk-9.0.5-xxx-linux-2.6-amd64.deb'

# 安装
sudo dpkg -i splunk-9.0.5.deb

# 启动并同意许可
sudo /opt/splunk/bin/splunk start --accept-license

# 设置开机自启
sudo /opt/splunk/bin/splunk enable boot-start

小提醒:第一次启动会要求你创建管理员账号。记好用户名和密码——你后面所有操作都要用它。我曾经因为忘记密码,把整个实例删了重装……嗯,别学我。

装完之后访问 http://your-server:8000,能登录就说明成功了。

2.2 启用审计日志功能

Splunk默认就会记录一些审计事件,但我们需要把它调到“全量”级别,确保所有关键操作都被记下来。

你要改两个文件:

  1. 审计日志开关 – $SPLUNK_HOME/etc/system/local/audit.conf
  2. 审计日志级别 – 在server.conf或web.conf里调整

2.2.1 配置 audit.conf

# 编辑 /opt/splunk/etc/system/local/audit.conf
[audit]
auditlogs = true          # 开启审计
auditsearches = true      # 记录搜索活动
auditindexes = true       # 记录索引变更
auditrolechanges = true   # 记录角色变更
auditobjecthistory = true # 记录对象(如仪表盘、报表)变更

注意:auditsearches = true 会让每次搜索都被记录,生产环境日志量会剧增。建议先开启,确认能收到后再酌情调整。我曾在客户现场因为忘记关这个,一天产生了20GB审计日志……还好只是一次演练。

2.2.2 调整审计日志级别(可选)

# 编辑 /opt/splunk/etc/system/local/server.conf
[general]
auditlog_level = INFO     # 默认是INFO,可改为DEBUG(更详细)

改完之后重启:

sudo /opt/splunk/bin/splunk restart

2.3 配置索引(接收审计日志)

审计日志不能和普通业务日志混放在一个索引里。专用索引方便后续权限隔离和保留策略。我们创建一个叫audittrail的索引。

2.3.1 通过UI创建索引

  1. 登录Splunk Web,进入 设置 > 索引
  2. 点击新建索引
  3. 索引名称:audittrail
  4. 索引类型:事件
  5. 数据保留:建议至少90天(合规要求)
  6. 最大大小:保持默认或按需调整

2.3.2 通过命令行创建(我推荐的方式)

sudo /opt/splunk/bin/splunk add index audittrail \
  -datatype event \
  -maxTotalDataSizeMB 100000 \  # 约100GB
  -frozenTimePeriodInSecs 7776000  # 90天

2.3.3 验证索引创建

/opt/splunk/bin/splunk list index | grep audittrail

应该看到类似:

audittrail  100000  7776000  event

2.4 确认审计日志已流入

搞了这么多,得验证一下。在搜索框里跑一条命令:

index=_audit sourcetype=splunkd_access | stats count by date_hour

如果能看到数据,说明审计日志已经进入_audit内部索引。但你还需要确认它们归到audittrail里了吗?

实际上Splunk把审计日志默认写入_audit索引,但我们希望它同时写入audittrail?这里要澄清:

  • 方式一:直接使用_audit索引做审计日志巡检(最常用,简单)
  • 方式二:通过自定义数据输入,把_audit里的日志转发到audittrail(适合需要独立生命周期和权限的场景)

我个人建议先用方式一,等清楚数据量后再考虑方式二。本章我们采用方式一:所有审计日志已自动在_audit索引中,后续章节的查询就针对它。

验证命令:

index=_audit | stats count

如果返回结果 > 0,恭喜你,环境就绪。

2.5 本章知识结构一览

Splunk审计日志环境搭建流程 安装Splunk 下载→启动→创建管理员 启用审计日志 修改audit.conf + server.conf 创建审计索引 audittrail 或直接使用_audit 重启Splunk splunk restart 验证日志流入 index=_audit | stats count 注意事项 审计搜索日志会很大 建议先开启再酌情关闭 索引保留策略按需设定

2.6 常见问题与避坑

问题 原因 解决办法
审计日志不显示 audit.conf未生效 / 未重启 检查文件路径是否正确,重启服务
索引audittrail为空 没有配置数据输入指向它 直接用_audit索引,或设置转发
Splunk启动失败 端口被占用 / 权限不足 检查8000、8089端口;使用sudo

我的经验:如果你是在Docker里跑Splunk,记得把audit.conf挂载进去。我曾经折腾了一下午,结果发现容器一重启配置就丢了……后来老老实实挂载外部卷。

好,环境准备好了。现在你的Splunk已经能正常接收并记录所有用户操作了。下一步我们就要开始写真正的巡检查询——但那是后面的事情。