Elastic high stable kql
FortiGate Administrator Login from Multiple IP Addresses
This rule detects successful logins to the FortiGate management interface using the same Administrator account from multiple distinct source IP addresses within an 24-hour period. Administrator logins from multiple locations in a short time window may indicate credential sharing, compromised credentials, or unauthorized access and should be investigated.
Detection Logic
FROM logs-fortinet_fortigate.*, filebeat-* metadata _id
| WHERE data_stream.dataset == "fortinet_fortigate.log" and
event.category == "authentication" and event.action == "login" and
event.outcome == "success" and source.user.roles == "Administrator" and
source.user.name is not null and source.ip is not null
| stats Esql.logon_count = count(*),
Esql.source_ip_count_distinct = COUNT_DISTINCT(source.ip),
Esql.max_timestamp = MAX(@timestamp),
Esql.source_ip_values = VALUES(source.ip),
Esql.message_values = VALUES(message),
Esql.source_geo_country_name_values = VALUES(source.geo.country_name) by source.user.name
// last logon event timestamp is within 6m of the rule execution time to avoid duplicates
| eval Esql.recent = DATE_DIFF("minute", Esql.max_timestamp, now())
| where Esql.recent <= 6 and Esql.logon_count >= 2 and Esql.source_ip_count_distinct >= 2
// move dynamic fields to ECS equivalent for rule exceptions
| eval source.ip = MV_FIRST(Esql.source_ip_values)
| keep source.ip, source.user.name, Esql.* Field Validations
Loading…
Comments (0)
Loading comments...