Splunk SIEM
Splunk Enterprise instead of ELK, on the same siem VM. Mutually exclusive โ only one SIEM stack runs per deploy.
Table of contents
Deployment
ENABLE_SPLUNK=true vagrant up
winserver/win11 install a Splunk Universal Forwarder instead of Elastic Agent, forwarding to siem:9997.
Network
graph TB
SIEM["๐ง siem .10\nSplunk Enterprise\nWeb :8000 ยท mgmt :8089 ยท receiving :9997"]
WS["๐ฅ winserver .20\nSplunk UF"]
W11["๐ฅ win11 .30\nSplunk UF"]
WS -->|"UF :9997"| SIEM
W11 -->|"UF :9997"| SIEM
HOST["Host browser"] -->|"localhost:8000"| SIEM
Credentials
Written to logs/splunk-credentials.txt after provisioning:
Splunk Web : http://localhost:8000
Username : admin
Password : <auto-generated>
License : Enterprise (licensed) | Free/Trial (no valid license applied)
Receiving : 192.168.56.10:9997
License (optional)
A Splunk Enterprise license file at splunk/Splunk.License (gitignored, not tracked in this repo โ bring your own) is optional. Its <expiration_time> field (Unix epoch) is checked before every deploy:
- Present and not expired โ applied automatically, Splunk runs licensed.
- Missing, unreadable, or expired โ provisioning continues anyway in Splunk Free/Trial mode instead of failing (single indexer, no auth roles, no alerting/distributed search). The active mode is always recorded in
logs/splunk-credentials.txtand logged during provisioning โ check there rather than assuming.
Get a personal developer license from dev.splunk.com and place it at splunk/Splunk.License.
Verify
bash tests/check-splunk.sh
Checks, in order:
- Splunk Web responding
- Wrong credentials are actually rejected (HTTP 401) โ auth is enforced, not just present
- Real login with the generated admin password
- Active license group (Enterprise / Trial / Free) via the REST API
- Actual events indexed from
WIN-SRV22andWIN11-WS01โ not just that port 9997 is open
tests/check-lab.sh delegates to this script automatically when ENABLE_SPLUNK=true is set.
Notes
scripts/splunk-provision.shinstalls Splunk Enterprise from the official.debpackage (downloaded directly on thesiemVM), not from a third-party apt repo.- Splunk 10.x refuses to run as root without
--run-as-rootโ this lab runs Splunk as root (no dedicatedsplunkservice account), consistent with its existing minimal-hardening posture (Fleet Server also runs insecure-http/0.0.0.0, no TLS anywhere in the lab). - Re-provisioning resets the admin password to a newly generated one each time, the same idempotency pattern
elk-provision.shuses for theelasticuser.
โ Usage