Detecting Credential Theft Using Splunk Geographic Information

Earlier this year I attended the Educause Security Professional Conference in St. Louis. I went to a session at which Nick Hannon from Swarthmore College explained how Splunk could combine MaxMind GeoIP data with authentication logs to detect credential theft. I couldn’t find an exact tutorial online, so this is my execution of his idea. I based much of the syntax on another Splunk report I found here.

First we will need to get CAS sending its authentication logs to Splunk, see this post for details.

Next we can use the MaxMind database included in the Google Maps app for Splunk. Get that here: This will give us access to the “geoip” command which provides (among other things) the longitude and latitude of an IP address. Continue reading Detecting Credential Theft Using Splunk Geographic Information

Mapping CAS Logins with Splunk

The first log that I wanted to parse with our new Splunk Enterprise system was catalina.out log from our CAS server. CAS, or Central Authentication Server, is a web-based, federated, single sign-on service available at We use it for, among other things, our authentication for Google Apps for Education.

Configuring the universal forwarder on the CAS server was fairly straight forward. However, although CAS logs are log4j formatted, the defaults in Splunk will cause the multi-line entries to split into separate events since there are some timestamps in the middle of events. As such I needed to create a new source type to deal with this. So I created a new file at ‘/opt/splunk/etc/system/local/props.conf’ and added the following contents.

props.confThe main difference is that the RegEx for BREAK_ONLY_BEFORE is more strict than the default log4j configuration, so timestamps in the middle of an entry will not cause a new entry to start. Continue reading Mapping CAS Logins with Splunk