FORTIGATE - SAML Debug: Difference between revisions

From IT-Arts.net
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Wiki]]
'''''[https://it-arts.net/index.php/Category:Wiki Return to Wiki Index]'''''
[[Category:Wiki]]
[[Category:Wiki]]


Line 12: Line 9:
Enable timestamps before collecting any debug output to simplify correlation with client and identity provider logs.
Enable timestamps before collecting any debug output to simplify correlation with client and identity provider logs.


<nowiki>
<nowiki>
diagnose debug console timestamp enable
diagnose debug console timestamp enable
diagnose debug reset
diagnose debug reset
Line 23: Line 20:
Always disable debugging after troubleshooting to avoid unnecessary CPU usage and excessive log generation.
Always disable debugging after troubleshooting to avoid unnecessary CPU usage and excessive log generation.


<nowiki>
<nowiki>
diagnose debug disable
diagnose debug disable
diagnose debug reset</nowiki>
diagnose debug reset</nowiki>
Line 31: Line 28:
Check that SAML daemon is actually processing authentication requests.
Check that SAML daemon is actually processing authentication requests.


<nowiki>
<nowiki>
diagnose sys process pidof samld
diagnose sys process pidof samld
diagnose sys top</nowiki>
diagnose sys top</nowiki>
Line 39: Line 36:
=== Display current SAML sessions ===
=== Display current SAML sessions ===


<nowiki>
<nowiki>
diagnose vpn ssl saml-session list</nowiki>
diagnose vpn ssl saml-session list</nowiki>


Example:
Example:


<nowiki>
<nowiki>
Session ID : 9
Session ID : 9
User      : john.doe
User      : john.doe
Line 54: Line 51:
=== Display authenticated users ===
=== Display authenticated users ===


<nowiki>
<nowiki>
diagnose firewall auth list</nowiki>
diagnose firewall auth list</nowiki>


=== Display session table ===
=== Display session table ===


<nowiki>
<nowiki>
diagnose sys session list</nowiki>
diagnose sys session list</nowiki>


Line 66: Line 63:
=== Enable SSL VPN debug ===
=== Enable SSL VPN debug ===


<nowiki>
<nowiki>
diagnose debug application sslvpn -1
diagnose debug application sslvpn -1
diagnose debug enable</nowiki>
diagnose debug enable</nowiki>
Line 72: Line 69:
=== View SSL VPN sessions ===
=== View SSL VPN sessions ===


<nowiki>
<nowiki>
get vpn ssl monitor</nowiki>
get vpn ssl monitor</nowiki>


=== SSL VPN configuration check ===
=== SSL VPN configuration check ===


<nowiki>
<nowiki>
show vpn ssl settings</nowiki>
show vpn ssl settings</nowiki>


Line 88: Line 85:
Authentication is handled by fnbamd (same as SAML group mapping logic).
Authentication is handled by fnbamd (same as SAML group mapping logic).


<nowiki>
<nowiki>
diagnose debug application fnbamd -1
diagnose debug application fnbamd -1
diagnose debug application ike -1
diagnose debug application ike -1
diagnose debug enable</nowiki>
diagnose debug enable</nowiki>
== The IPsec Case ==
=== IKE Gateway State (Primary Equivalent) ===
This is the closest equivalent to “who is connected” in IPsec.
<nowiki>
diagnose vpn ike gateway list</nowiki>
Provides:
* Peer IP address
* Authentication method (PSK / certificate / EAP)
* IKE SA state (up/down)
* Negotiation status
* Lifetime information
Use this as the primary “session-like” view for IPsec.
=== IPsec Tunnel State (Data Plane View) ===
Shows active encrypted tunnels and traffic selectors.
<nowiki>
diagnose vpn tunnel list</nowiki>
Provides:
* Active Phase 2 SAs
* Encryption domains (subnets)
* SPI values
* Traffic counters
* Tunnel up/down state
This is equivalent to “active VPN data sessions”.
=== Summary View ===
Quick overview of active IPsec tunnels:
<nowiki>
get vpn ipsec tunnel summary</nowiki>
Provides:
* Tunnel name
* Status (up/down)
* Quick health visibility
=== User Identity in IPsec (When It Exists) ===
IPsec only shows user identity when authentication is user-based.
==== EAP / RADIUS / LDAP authentication ====
In this case, identity is handled by fnbamd:
<nowiki>
diagnose firewall auth list</nowiki>
or deeper inspection:
<nowiki>
diagnose debug application fnbamd -1</nowiki>
This may show:
* Username
* Group membership
* Authentication source
* Authorization result


=== IPsec tunnel negotiation debugging ===
=== IPsec tunnel negotiation debugging ===


<nowiki>
<nowiki>
diagnose debug application ike -1
diagnose debug application ike -1
diagnose vpn ike gateway list
diagnose vpn ike gateway list
Line 102: Line 167:
=== Live IKE negotiation trace ===
=== Live IKE negotiation trace ===


<nowiki>
<nowiki>
diagnose debug console timestamp enable
diagnose debug console timestamp enable
diagnose debug reset
diagnose debug reset
Line 110: Line 175:
Filter by peer IP:
Filter by peer IP:


<nowiki>
<nowiki>
diagnose vpn ike log-filter addr <peer_ip></nowiki>
diagnose vpn ike log-filter addr <peer_ip></nowiki>


Stop debug:
Stop debug:


<nowiki>
<nowiki>
diagnose debug disable
diagnose debug disable
diagnose debug reset</nowiki>
diagnose debug reset</nowiki>
Line 137: Line 202:
== Web authentication (shared backend) ==
== Web authentication (shared backend) ==


<nowiki>
<nowiki>
diagnose debug application fnbamd -1
diagnose debug application fnbamd -1
diagnose debug enable</nowiki>
diagnose debug enable</nowiki>
Line 149: Line 214:
== Certificates validation ==
== Certificates validation ==


<nowiki>
<nowiki>
show full-configuration vpn certificate local
show full-configuration vpn certificate local
show full-configuration vpn certificate ca</nowiki>
show full-configuration vpn certificate ca</nowiki>
Line 155: Line 220:
== Time synchronization (critical for SAML) ==
== Time synchronization (critical for SAML) ==


<nowiki>
<nowiki>
get system status
get system status
diagnose sys ntp status</nowiki>
diagnose sys ntp status</nowiki>
Line 163: Line 228:
=== SAML / HTTPS ===
=== SAML / HTTPS ===


<nowiki>
<nowiki>
diagnose sniffer packet any "host <idp_ip>" 4 0 a</nowiki>
diagnose sniffer packet any "host <idp_ip>" 4 0 a</nowiki>


=== IPsec IKE ===
=== IPsec IKE ===


<nowiki>
<nowiki>
diagnose sniffer packet any "udp port 500 or udp port 4500" 4 0 a</nowiki>
diagnose sniffer packet any "udp port 500 or udp port 4500" 4 0 a</nowiki>


== Flow debugging (authentication path) ==
== Flow debugging (authentication path) ==


<nowiki>
<nowiki>
diagnose debug reset
diagnose debug reset
diagnose debug flow filter clear
diagnose debug flow filter clear
Line 182: Line 247:
Filter:
Filter:


<nowiki>
<nowiki>
diagnose debug flow filter addr <client_ip></nowiki>
diagnose debug flow filter addr <client_ip></nowiki>


Stop:
Stop:


<nowiki>
<nowiki>
diagnose debug disable
diagnose debug disable
diagnose debug reset</nowiki>
diagnose debug reset</nowiki>
Line 237: Line 302:
* https://learn.microsoft.com/entra/identity/
* https://learn.microsoft.com/entra/identity/
* https://wiki.oasis-open.org/security/saml
* https://wiki.oasis-open.org/security/saml
----
'''''[https://it-arts.net/index.php/Category:Wiki Return to Wiki Index]'''''


----
----


'''''[https://it-arts.net/index.php/Category:Wiki Return to Wiki Index]'''''
'''''[https://it-arts.net/index.php/Category:Wiki Return to Wiki Index]'''''

Latest revision as of 06:56, 6 July 2026


Return to Wiki Index

Debug SAML Authentication

Enable timestamped debugging

Enable timestamps before collecting any debug output to simplify correlation with client and identity provider logs.

diagnose debug console timestamp enable
diagnose debug reset
diagnose debug application samld -1
diagnose debug application fnbamd -1
diagnose debug enable

Disable debugging

Always disable debugging after troubleshooting to avoid unnecessary CPU usage and excessive log generation.

diagnose debug disable
diagnose debug reset

Verify SAML daemon activity

Check that SAML daemon is actually processing authentication requests.

diagnose sys process pidof samld
diagnose sys top

SAML Runtime Information

Display current SAML sessions

diagnose vpn ssl saml-session list

Example:

Session ID : 9
User       : john.doe
Group      : VPN_Users
Portal     : full-access
IdP        : AzureAD
Login time : 2026-07-04 09:54:13

Display authenticated users

diagnose firewall auth list

Display session table

diagnose sys session list

SSL VPN Debugging (SAML + non-SAML)

Enable SSL VPN debug

diagnose debug application sslvpn -1
diagnose debug enable

View SSL VPN sessions

get vpn ssl monitor

SSL VPN configuration check

show vpn ssl settings

IPsec SAML / authentication context (important)

SAML is typically used for SSL-VPN, but in IPsec environments authentication depends on mode:

IPsec with username/password (FNBAMD path)

Authentication is handled by fnbamd (same as SAML group mapping logic).

diagnose debug application fnbamd -1
diagnose debug application ike -1
diagnose debug enable

The IPsec Case

IKE Gateway State (Primary Equivalent)

This is the closest equivalent to “who is connected” in IPsec.

diagnose vpn ike gateway list

Provides:

  • Peer IP address
  • Authentication method (PSK / certificate / EAP)
  • IKE SA state (up/down)
  • Negotiation status
  • Lifetime information

Use this as the primary “session-like” view for IPsec.

IPsec Tunnel State (Data Plane View)

Shows active encrypted tunnels and traffic selectors.

diagnose vpn tunnel list

Provides:

  • Active Phase 2 SAs
  • Encryption domains (subnets)
  • SPI values
  • Traffic counters
  • Tunnel up/down state

This is equivalent to “active VPN data sessions”.

Summary View

Quick overview of active IPsec tunnels:

get vpn ipsec tunnel summary

Provides:

  • Tunnel name
  • Status (up/down)
  • Quick health visibility

User Identity in IPsec (When It Exists)

IPsec only shows user identity when authentication is user-based.

EAP / RADIUS / LDAP authentication

In this case, identity is handled by fnbamd:

diagnose firewall auth list

or deeper inspection:

diagnose debug application fnbamd -1

This may show:

  • Username
  • Group membership
  • Authentication source
  • Authorization result

IPsec tunnel negotiation debugging

diagnose debug application ike -1
diagnose vpn ike gateway list
diagnose vpn tunnel list

Live IKE negotiation trace

diagnose debug console timestamp enable
diagnose debug reset
diagnose debug application ike -1
diagnose debug enable

Filter by peer IP:

diagnose vpn ike log-filter addr <peer_ip>

Stop debug:

diagnose debug disable
diagnose debug reset

IPsec + SAML reality check

SAML is NOT directly used in classic IPsec tunnels.

Instead:

  • SSL-VPN → SAML supported natively
  • IPsec dialup → usually LDAP/RADIUS or local users
  • IPsec + external auth → goes through fnbamd, not samld

So when troubleshooting IPsec login issues, focus on:

  • ike daemon
  • fnbamd daemon
  • user/group mapping

Web authentication (shared backend)

diagnose debug application fnbamd -1
diagnose debug enable

Useful for:

  • SAML group mapping
  • LDAP / RADIUS fallback
  • user identity resolution

Certificates validation

show full-configuration vpn certificate local
show full-configuration vpn certificate ca

Time synchronization (critical for SAML)

get system status
diagnose sys ntp status

Packet capture (SAML / IPsec)

SAML / HTTPS

diagnose sniffer packet any "host <idp_ip>" 4 0 a

IPsec IKE

diagnose sniffer packet any "udp port 500 or udp port 4500" 4 0 a

Flow debugging (authentication path)

diagnose debug reset
diagnose debug flow filter clear
diagnose debug flow show function-name enable
diagnose debug flow trace start 100
diagnose debug enable

Filter:

diagnose debug flow filter addr <client_ip>

Stop:

diagnose debug disable
diagnose debug reset

Common failures

SAML login loop

  • wrong ACS URL
  • cookie blocked
  • time drift
  • wrong entity-id

IPsec authentication fails

  • wrong group mapping
  • fnbamd rejection
  • phase1 mismatch
  • PSK mismatch (non-SAML case)

SAML works but no VPN access

  • firewall policy missing
  • group not mapped
  • portal mismatch

No debug output

  • forgot enable
  • wrong daemon targeted
  • authentication not triggered

Security concepts

Assertion integrity

SAML must be signed and validated.

Trust chain

Only trusted IdP certificates allowed.

Time validation

NTP drift breaks authentication.

Least privilege

Map only required groups to VPN access.


Return to Wiki Index