Following up on my post earlier about abusing Splunk functionality, one of the issues Splunk administrators face when deploying the Free version is the lack of authentication. I just had a very quick and simple thought for anyone running it on Linux/Unix. I suggest simply that you bind SplunkWeb to localhost only and use SSH tunnels to access it.
It doesn't give you any kind of granularity over permissions within Splunk itself and it's not appropriate for all user types but for systems/IT folk who, in my experience make up a decent percentage of users, it could be a good option. It's likely they already have local OS accounts on the Splunk server anyway.
In order to configure Splunk to listen on localhost only a simple configuration change is required to the following file.
$SPLUNK_HOME is /opt/splunk by default. Uncomment and set the following configuration item as follows:
server.socket_host = localhost
Now restart SplunkWeb:
$SPLUNK_HOME/bin/splunk restart splunkweb
Check that's it listening as you expected using a quick netstat on the Linux box:
$ netstat -an | grep 8000 tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
Nice. Now we need to SSH to the Splunk server and set up our tunnel. I'll give a quick example using OpenSSH, if you're a Windows user PuTTY is your friend (other Windows SSH clients are available). On *your own* machine execute:
$ ssh -L8000:127.0.0.1:8000 splunk-linux.local
Authenticate as normal and your local port 8000 is forwarded to 127.0.0.1:8000 on the Splunk server so you can now access your Splunk Free instance by connecting to http://localhost:8000. This at least restricts access to valid users on the Linux server which is a big step up from the default. It's also more restrictive than (though works nicely in combination with) host-based firewalling on the server.