环境准备:装好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默认就会记录一些审计事件,但我们需要把它调到“全量”级别,确保所有关键操作都被记下来。
你要改两个文件:
- 审计日志开关 –
$SPLUNK_HOME/etc/system/local/audit.conf - 审计日志级别 – 在
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创建索引
- 登录Splunk Web,进入 设置 > 索引
- 点击新建索引
- 索引名称:
audittrail - 索引类型:事件
- 数据保留:建议至少90天(合规要求)
- 最大大小:保持默认或按需调整
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 本章知识结构一览
2.6 常见问题与避坑
| 问题 | 原因 | 解决办法 |
|---|---|---|
| 审计日志不显示 | audit.conf未生效 / 未重启 |
检查文件路径是否正确,重启服务 |
索引audittrail为空 |
没有配置数据输入指向它 | 直接用_audit索引,或设置转发 |
| Splunk启动失败 | 端口被占用 / 权限不足 | 检查8000、8089端口;使用sudo |
我的经验:如果你是在Docker里跑Splunk,记得把audit.conf挂载进去。我曾经折腾了一下午,结果发现容器一重启配置就丢了……后来老老实实挂载外部卷。
好,环境准备好了。现在你的Splunk已经能正常接收并记录所有用户操作了。下一步我们就要开始写真正的巡检查询——但那是后面的事情。