3、数据接入与审计日志采集
好,咱们进入第3章。数据接入这事,说白了就是让 Splunk 能“看到”日志。我帮很多团队搭过审计日志系统,发现大部分问题都出在采集层——要么转发器没配好,要么端口被防火墙挡了。这一章我把通用转发器、监听端口、文件监控和 syslog 这四个点串起来讲,你跟着实操一遍就能搞定。
3.1 通用转发器部署
Splunk 通用转发器(Universal Forwarder,简称 UF)是个轻量级 agent,负责把日志推到 Indexer。嗯,它本身不索引数据,所以资源消耗很小。我个人习惯在生产环境用 RPM 或 Deb 包安装,这样好管理。
安装步骤大致如下:
- 从 Splunk 官网下载对应操作系统的 UF 安装包
- 执行安装命令(Linux 下推荐
rpm -ivh splunkforwarder-*.rpm) - 接收许可证并设置管理员密码:
./splunk start --accept-license - 配置转发目标:
./splunk add forward-server <indexer_ip>:9997 - 添加要监控的日志来源(后续小节会细说)
- 启动并设为开机自启:
./splunk enable boot-start
我曾经遇到过 UF 启动后 Indexer 端一直看不到数据,最后发现是 9997 端口没放通。你部署完第一步,先 telnet 测试一下端口连通性。
3.2 监听端口配置
Indexer 侧要打开接收端口,默认 TCP 9997。配置写在 inputs.conf 里。你看看下表就知道关键参数了:
| 参数 | 说明 | 我的推荐值 |
|---|---|---|
[splunktcp://9997] |
启用 TCP 接收 | 保持默认 |
disabled = 0 |
必须设为 0 才能监听 | 0 |
connection_host = ip |
用发送端 IP 作为主机字段 | ip |
allowFrom |
限制来源 IP,增强安全 | 按子网写,例如 192.168.1.0/24 |
你如果想同时接收两种协议,可以再加一个 [splunktcp-ssl://9998] 走加密。不过内网审计日志我一般用普通 TCP 就够了。
3.3 文件监控
审计日志大多是文本文件,比如 /var/log/secure、/var/log/audit/audit.log。UF 监控文件靠 inputs.conf 里的 monitor 段。
举个例子:
[monitor:///var/log/secure]
disabled = 0
index = linux_secure
sourcetype = linux_secure
crcSalt = <SOURCE>
这里有个小坑——crcSalt 最好加上,不然 rename 后的日志可能被 UF 当成新文件重复采集。我曾在一次升级中忘了写,结果索引量翻了三倍……
注意:文件监控不支持动态发现子目录,你需要手动写多个 [monitor://...] 段,或者用通配符 *,但注意性能开销。
3.4 Syslog 采集
很多网络设备、安全设备只支持 syslog 协议。Splunk 本机也能做 syslog 接收端,但生产环境我建议用 UF + syslog-ng 或者 rsyslog 转发。你想一下,直接用 Splunk 监听 UDP 514 端口,万一日志量大,Splunk 进程可能卡住。
常见架构有两种:
- 直接模式: 在 Indexer 或 UF 上开
[udp://514]接收。简单,但容易丢包。 - 中转模式: rsyslog 收 syslog,写到文件,然后 UF 监控这个文件。我推荐这种方式——稳定、可重传。
配置 rsyslog 转发到 UF 的示例(rsyslog.conf):
# 将收到的 syslog 写入本地文件
$template SplunkAuditLog,"/var/log/splunk_audit/%hostname%_%$NOW%.log"
*.* ?SplunkAuditLog
# 同时直接转发给 UF(可选)
*.* @192.168.10.100:516
然后 UF 监控那个目录。为啥用 516 端口?避免和系统 syslog 默认端口冲突——这是我吃过亏才改的。
3.5 归纳总结
四种接入方式各有适用场景。我画了张图帮你理清关系:
我的经验总结:对于审计日志,最稳妥的组合是“UF+文件监控”收本地日志,用 rsyslog 中转收网络 syslog。监听端口只用在 Indexer 开启,不要在所有 UF 上开——安全性和性能都能兼顾。