elastic / elastic/integrations

[Fortinet Fortigate]: Control on dissect with tag "ssh login 2" in pipeline "logs-fortinet_fortigate.log-1.36.8-login" is not strict enough

Open
#20,275 1 comment 0 reactions 1 assignee Claimed by @qcorporation View on GitHub
Integration:fortinet_fortigate Team:Integration-Experience
Dominant language
Handlebars
Stars
333
Forks
647
Avg merge
3d 4h
Merged PRs (30d)
209

Description

### Integration Name

Fortinet FortiGate Firewall Logs [packages/fortinet_fortigate]

### Dataset Name

fortinet_fortigate.log

### Integration Version

1.36.8

### Agent Version

9.3.5

### Agent Output Type

logstash

### Elasticsearch Version

9.3.5

### OS Version and Architecture

Docker

### Software/API Version

_No response_

### Error Message

Processor dissect with tag ssh login 2 in pipeline logs-fortinet_fortigate.log-1.36.8-login failed with message: Unable to find match for dissect pattern: %{_tmp.user.roles} %{user.name} login %{event.outcome} from %{}(%{source.ip}) %{} against source: Administrator admin login failed from console because of invalid password

### Event Original

"<185>date=2026-07-21 time=10:36:31 devname=\"devname\" devid=\"FGT60FXXXXXXXX\" eventtime=1784630191306647240 tz=\"+0000\" logid=\"0100032002\" type=\"event\" subtype=\"system\" level=\"alert\" vd=\"root\" logdesc=\"Admin login failed\" sn=\"0\" user=\"admin\" ui=\"console\" method=\"console\" srcip=0.0.0.0 dstip=0.0.0.0 action=\"login\" status=\"failed\" reason=\"passwd_invalid\" msg=\"Administrator admin login failed from console because of invalid password\""

### What did you do?

The integration does not have any special configuration applied other than a custom ingest port.

### What did you see?

I regularly check for events with error.message in that dataset and noticed that this error message pops up from time to time.

### What did you expect to see?

There's a processor with tag "ssh login 3" which can handle the success of this message, however there's no processor for failed logins. As "ssh login 2" expect parentheses the Dissect does not match.
Either:
- "ssh login 2" should be changed to a Grok with multiple patterns
- %{WORD:_tmp.user.roles} %{NOTSPACE:user.name} login %{WORD:event.outcome} from (?:jsconsole|%{WORD}(?:\(%{IP:source.ip}\))?)
- "ssh login 3" should have different conditionals and a second grok pattern, tighten conditional in "ssh login 2"
- Add a new processor with these patterns and tighten conditional in "ssh login 2":
%{WORD:_tmp.user.roles} %{NOTSPACE:user.name} login %{WORD:event.outcome} from (?:jsconsole|%{WORD}(?:\(%{IP:source.ip}\))?)

Conditional:
ctx.message != null && ctx.message.startsWith('Administrator') && !ctx.message.toLowerCase().contains('logged in')

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.