Splunk Enterprise Security
Highlighted

Splunk Enterprise Security: How to filter geographically improbable logins over small distances?

Explorer

In Splunk Enterprise Security, the geographically improbable login correlation fires when users on our network transition between ipv4 and ipv6 due to the different latitude fields in the geoip database. Is there a way to filter out results by distance value?

0 Karma
Highlighted

Re: Splunk Enterprise Security: How to filter geographically improbable logins over small distances?

Splunk Employee
Splunk Employee

The rule by default looks for speed of more than 500. However, there is an evaluation of distance as well that is used to calculate speed. You could add a condition for distance being greater than x miles and/or swapping out the speed threshold.

View solution in original post

Highlighted

Re: Splunk Enterprise Security: How to filter geographically improbable logins over small distances?

Explorer

Thanks I didn't realize I could edit the correlation searches, adding a "where distance > 1" did the trick.

0 Karma
Highlighted

Re: Splunk Enterprise Security: How to filter geographically improbable logins over small distances?

Path Finder

| tstats summariesonly values(Authentication.app) as app, latest(Authentication.userbunit) as userbunit from datamodel=Authentication.Authentication by Authentication.user,Authentication.src time span=1s | `dropdmobjectname("Authentication")| eventstats dc(src) as src_count by user | search src_count>1 | sort 0 + _time|getasset(src)` | iplocation src | eval sessionlat=if(isnull(srclat), lat, srclat) | eval sessionlon=if(isnull(srclong), lon, srclong) | eval sessioncity=if(isnull(srccity), City, srccity) | where isnotnull(sessionlat) and isnotnull(sessionlon) | sort 0 + time | streamstats current=t window=2 earliest(sessionlat) as prevlat, earliest(sessionlon) as prevlon, earliest(sessioncity) as prevcity, earliest(time) as prevtime, earliest(src) as prevsrc, latest(userbunit) as userbunit by user | where (src!=prevsrc) | `globedistance(sessionlat,sessionlon,prevlat,prevlon,"m")` | eval timediff=if((time-prevtime)==0, 1, time - prevtime) | eval speed = round(distance*3600/time_diff,2)| where speed>1

0 Karma