Skip to content

[#17491][cisco-ftd]: Parse user authentication rejection reasons - #18828

Merged
Niceplace merged 27 commits into
mainfrom
fix/17491-cisco-ftd-incorrect-reason-parsing
Jun 1, 2026
Merged

Niceplace merged 27 commits into
mainfrom
fix/17491-cisco-ftd-incorrect-reason-parsing

Conversation

@Niceplace

@Niceplace Niceplace commented May 5, 2026 •

Copy link
Copy Markdown
Contributor

Proposed commit message

Add grok processor support in cisco FTD integration to accept four variants of user authentication rejection reasons: Invalid Password, Password is expiring, Password malformed, Password has expired. The support for "Invalid Password" is scoped to address issue #17491 whereas the other three rejection reasons are a backport of #8015

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

How to test this PR locally

From the root of the repo

  1. Go to packages/cisco_ftd
  2. Run elastic-package stack up -d
  3. Run elastic-package test pipeline
  4. All tests should pass

Sample logs used for pipeline tests are in /packages/cisco_ftd/data_stream/log/_dev/test/pipeline/test-ftd-fix-message-113005-user-auth-rejected.log

Related issues

Fixes: #17491 and as recommended in #17491 (comment), implements the same support for authentication reason rejections as #8015

@Niceplace Niceplace added the bugfix Pull request that fixes a bug issue label May 5, 2026
@github-actions

github-actions Bot commented May 5, 2026 •

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 1 suggestion found

💡 Suggestions (1): Optional style improvements. Apply when helpful.
File Line Rule Message
packages/cisco_ftd/changelog.yml 1 Elastic.Versions Use 'later versions' instead of 'newer versions' when referring to versions.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

@github-actions

This comment has been minimized.

@andrewkroh andrewkroh added documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. Integration:cisco_ftd Cisco FTD labels May 5, 2026
@elastic-vault-github-plugin-prod

This comment was marked as spam.

@github-actions

This comment has been minimized.

Comment thread .gitignore Outdated
# Folder created by the Sonar Scanner
.scannerwork/

# Zed editor settings

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Context: By default, Zed auto-formats YAML with opinionated rules based on prettier, which introduced a bunch of indentation/whitespace/double quote formatting.

Since I did not want to entirely disable YAML formatting in my whole workspace, I added a project-specific zed configuration for that, hence the need to create a .zed/ folder here, which we don't want included in the code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@elastic/ecosystem - Would you mind taking a look at this change?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Niceplace would it be an option for you to use ~/.gitignore_global?

Git supports global ignores using this file, so one doesn't need to add all the files of all the tools they use to all the projects.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love it ! Thank you

<182>2025-03-06T16:54:27Z seattle : %FTD-6-302304: Teardown TCP state-bypass connection 123456789 from carpal-tunnel1:10.123.1.23/38110 to EL_BOW2:10.0.10.123/6379 duration 0:02:02 bytes 54 Connection timeout
<190>2025-12-08T07:15:25Z: %FTD-6-113005: AAA user authorization Rejected : reason = AAA failure : server = 81.2.69.195 : user = user1@example.com : user IP = 10.7.5.8
<118>2026-03-24T13:48:05Z: %FTD-6-430002: EventPriority: Low, DeviceUUID: 48a00000-8e53-11ec-9a0c-d396ffaa0000, InstanceID: 23, FirstPacketSecond: 2026-03-24T13:48:05Z, ConnectionID: 56300, AccessControlRuleAction: Allow, SrcIP: 10.123.123.123, DstIP: 10.123.123.124, SrcPort: 1234, DstPort: 5678, Protocol: udp, IngressInterface: inside, EgressInterface: outside, IngressZone: input-zone, EgressZone: output-zone, SourceSecurityGroup: 2005, SourceSecurityGroupTag: 2005, DestinationSecurityGroup: 9, DestinationSecurityGroupTag: 9, SourceSecurityGroupType: Session Directory, DestinationSecurityGroupType: SXP, IngressVRF: Global, EgressVRF: Global, Endpoint Profile: Cisco-Device:Cisco-Collaboration-Device:Cisco-Room-Device, ACPolicy: ProductionPolicy, AccessControlRuleName: Intrusion-Rule, Prefilter Policy: Default Prefilter Policy, Client: DNS, ApplicationProtocol: DNS, InitiatorPackets: 1, ResponderPackets: 0, InitiatorBytes: 102, ResponderBytes: 0, NAPPolicy: Balanced Security and Connectivity, DNSQuery: elastic.co, DNSRecordType: a host address, DNSResponseType: No Error, ReferencedHost: elastic.co, ClientAppDetector: AppID
<166>May 01 2026 09:24:32Z %FTD-6-113005: AAA user authentication Rejected : reason = Invalid password : server = 192.0.2.20 : user = engineer@elastic.co : user IP = 198.51.100.30

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I initially added these log lines in a separate file dedicated to the bugfix, but after initial review with @vinit-chauhan (thanks for the help Vinit :D !) it was decided to move them into an existing log file that contained log entries of a similar category.

Also as a recommendation from the initial review, IP addresses used in tests are valid according to ingest pipeline geoip recommendations.

@Niceplace
Niceplace marked this pull request as ready for review May 6, 2026 17:31
@Niceplace
Niceplace requested review from a team as code owners May 6, 2026 17:31
@github-actions

This comment has been minimized.

@andrewkroh andrewkroh added the Team:Integration-Experience Security Integrations Integration Experience [elastic/integration-experience] label May 6, 2026
@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

Pinging @elastic/integration-experience (Team:Integration-Experience)

@Niceplace

Niceplace commented May 7, 2026 •

Copy link
Copy Markdown
Contributor Author

I've been able to locally reproduce the failure for the aws.config test, I'm trying to understand if the failure is consistent and related to my changes or not. I also have a failure with the netbox integration that seems to be consistent in the CI so I have to investigate this one as well. I also want to confirm if these failures are happening on main

Example aws.config failure: https://buildkite.com/elastic/integrations/builds/42437/canvas?sid=019dfe60-06c0-4b86-a3f2-b404855cfa40&tab=output
Example netbox test failure: https://buildkite.com/elastic/integrations/builds/42437/canvas?sid=019dfe60-07a3-4c83-9da1-2429a8c64eca&tab=output

@github-actions

This comment has been minimized.

@Niceplace
Niceplace requested a review from vinit-chauhan May 25, 2026 16:54
@Niceplace
Niceplace requested review from vinit-chauhan and removed request for taylor-swanson May 27, 2026 15:24
@github-actions

Copy link
Copy Markdown
Contributor

TL;DR

Buildkite failed in Check integrations cisco_ftd because the package README check is out of sync: the PR adds cisco.ftd.rejection_reason to packages/cisco_ftd/docs/README.md, but the generated README no longer contains that field after the ingest pipeline change.

Remediation

  • Regenerate docs for the package (cd packages/cisco_ftd && elastic-package build) and commit the resulting README changes, or manually remove the added cisco.ftd.rejection_reason row from packages/cisco_ftd/docs/README.md.
  • Re-run the package check (.buildkite/scripts/test_one_package.sh packages/cisco_ftd origin/main 4db92f7abc60001635e80d8ea25bb851f048bc5f) to confirm README lint passes.
Investigation details

Root Cause

This is a configuration/docs sync failure, not a parser runtime/test assertion failure.

The PR updates the grok capture to event.reason in packages/cisco_ftd/data_stream/log/elasticsearch/ingest_pipeline/default.yml (hunk @@ -431,9 +431,9 @@), and expands accepted reason values. In the same PR, packages/cisco_ftd/docs/README.md adds:

| cisco.ftd.rejection_reason | Reason for AAA user authentication rejection | keyword |

During CI, elastic-package lint rebuilds README content and reports that this row should be removed.

Evidence

README.md is outdated. Rebuild the package with 'elastic-package build'
@@ -165,3 +165,2 @@
 | cisco.ftd.privilege.old | When a users privilege is changed this is the old value | keyword |
-| cisco.ftd.rejection_reason | Reason for AAA user authentication rejection | keyword |
 | cisco.ftd.rule_name | Name of the Access Control List rule that matched this event. | keyword |
Error: checking package failed: checking readme files are up-to-date failed: files do not match

Verification

Not run in this workflow (read-only detective run); diagnosis is from Buildkite logs + PR diff correlation.

Follow-up

If cisco.ftd.rejection_reason is still intended as a package field, add/restore a backing field definition and pipeline mapping for it; otherwise keep event.reason and let generated docs omit the custom field row.


What is this? | From workflow: PR Buildkite Detective

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/cisco_ftd/docs/README.md Outdated
| cisco.ftd.missed_updates_count | The number of Stateful Failover updates missed. | long |
| cisco.ftd.privilege.new | When a users privilege is changed this is the new value | keyword |
| cisco.ftd.privilege.old | When a users privilege is changed this is the old value | keyword |
| cisco.ftd.rejection_reason | Reason for AAA user authentication rejection | keyword |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you regenerate the README? I think this is stale.

@andrewkroh andrewkroh removed the documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. label May 28, 2026

@vinit-chauhan vinit-chauhan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@elasticmachine

Copy link
Copy Markdown

💚 Build Succeeded

History

@Niceplace
Niceplace merged commit 9f627ac into main Jun 1, 2026
10 checks passed
@Niceplace
Niceplace deleted the fix/17491-cisco-ftd-incorrect-reason-parsing branch June 1, 2026 15:46
herrBez pushed a commit to herrBez/integrations that referenced this pull request Jun 1, 2026
…ns (elastic#18828)

* fix: Add support in grok processors for four more variants of password rejection reasons in cisco FTD

* Generate changelog entry and bump version

* Ignore per-project zed editor settings

* Revert whitespace & quote changes introduced by editor auto-formatting

* Re-add grok processor fix for authentication reason field

* Move logs to a file containing existing logs similary in category

* Ensure rejection reason is parsed and mapped to the ECS field

* Revert local changes for editor, will use global ignore instead

* Update generated JSON without formatting

* Use ECS field event.reason instead of custom vendor field

* Rebuild package to remove custom field we no longer use

* Added Undefined as a supported reason, taking example from cisco ASA
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown
Contributor

Package cisco_ftd - 3.13.5 containing this change is available at https://epr.elastic.co/package/cisco_ftd/3.13.5/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Pull request that fixes a bug issue Integration:cisco_ftd Cisco FTD Team:Integration-Experience Security Integrations Integration Experience [elastic/integration-experience]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Cisco FTD]: FTD message 113005 incorrect Reason Parsing - Missing Value

5 participants