Comprehensive audit of Fortinet FortiSASE cloud-delivered security services.
Unlike traditional perimeter firewall audits that focus on on-premises policy
chains, this skill evaluates the FortiSASE-specific architecture: Secure Web
Gateway (SWG) policy coverage, Zero Trust Network Access (ZTNA) application
gateway posture, thin edge FortiGate integration health, FortiClient endpoint
compliance enforcement, and FortiGuard cloud security service currency.
Covers FortiSASE tenants with SWG, ZTNA, SD-WAN overlay, and FortiClient
endpoint management. For on-premises FortiGate-specific audits, see the
fortigate-firewall-audit skill. Reference references/api-reference.md
for FortiSASE REST API endpoints and FortiCloud authentication patterns.
FORTISASE_API_TOKEN environment variable)Follow this audit flow sequentially. Each step builds on prior findings.
The procedure moves from tenant discovery through SWG policy analysis, ZTNA
assessment, firewall policy review, thin edge validation, SSL inspection,
endpoint compliance, FortiGuard health, and logging infrastructure.
Authenticate to the FortiSASE API via FortiCloud IAM and enumerate the
tenant topology.
# Authenticate to FortiCloud and obtain bearer token
POST https://customerapiauth.fortinet.com/api/v1/oauth/token/
Content-Type: application/json
{
"username": "<forticloud_user>",
"password": "<forticloud_pass>",
"client_id": "<api_client_id>",
"grant_type": "password"
}
After authentication, enumerate tenant resources:
# List Points of Presence (PoPs)
GET /api/v1/fortisase/pops
# List thin edge sites
GET /api/v1/fortisase/thin-edges
# Endpoint summary
GET /api/v1/fortisase/endpoints/summary
# License utilization
GET /api/v1/fortisase/license/status
Record: tenant name, region, PoP locations and their status, thin edge
site count and registration status, total licensed endpoints versus
connected endpoints, and license expiration dates. Identify any PoPs
in degraded state or thin edges showing as offline.
Flag license utilization above 90% as a capacity Warning — approaching
the licensed endpoint limit may prevent new endpoint connections.
Retrieve all SWG-related security profiles and policies.
# Web filter profiles
GET /api/v2/cmdb/webfilter/profile
# Application control lists
GET /api/v2/cmdb/application/list
# Antivirus profiles
GET /api/v2/cmdb/antivirus/profile
# IPS sensor configuration
GET /api/v2/cmdb/ips/sensor
# Video filter profiles
GET /api/v2/cmdb/videofilter/profile
# Inline CASB profiles (if licensed)
GET /api/v2/cmdb/casb/profile
For each web filter profile, evaluate:
an explicit action (allow, block, monitor, warning, authenticate). Categories
left at default may create unintended access. Count categories with explicit
actions versus total categories.
engines and YouTube restricted mode where required by policy.
ActiveX/Java/cookie filtering settings.
For application control, evaluate:
block, monitor, or allow. High-risk categories (P2P, proxy, remote-access,
botnet) should have explicit block actions.
contradict category-level policy.
cannot be identified.
Verify that antivirus and IPS profiles are bound to SWG firewall policies.
An SWG policy without AV and IPS binding passes traffic uninspected for
malware and exploits — this is a Critical finding for internet-bound traffic.
Evaluate ZTNA rules, application definitions, and posture tag enforcement.
# ZTNA rules
GET /api/v2/cmdb/firewall/access-proxy
# ZTNA server definitions
GET /api/v2/cmdb/firewall/access-proxy/virtual-host
# ZTNA tags (posture tags)
GET /api/v2/cmdb/user/device-category
# User and group definitions for ZTNA
GET /api/v2/cmdb/user/group
For each ZTNA access proxy rule:
tags (e.g., compliant OS, AV running, patch level current). Rules without
posture tags allow access from non-compliant devices — flag as High.
or group membership, not just network location. ZTNA rules relying solely
on source IP contradict zero trust principles.
correct backend servers, ports, and SSL settings are configured. Check for
wildcard or overly broad application definitions.
rules precede broader rules. Identify shadow rules that never match due to
a preceding broader rule.
integration and that MFA is enforced for sensitive applications.
Calculate the ZTNA posture tag coverage ratio: rules with posture tag
requirements divided by total ZTNA rules. A ratio below 80% indicates
insufficient device compliance enforcement.
Audit the firewall policies that govern both SWG and ZTNA traffic flows.
# Firewall policies
GET /api/v2/cmdb/firewall/policy
# Central SNAT policies
GET /api/v2/cmdb/firewall/central-snat-map
For each firewall policy, evaluate:
srcaddr "all", dstaddr "all", service "ALL", and action accept are Critical
findings — they accept all traffic without restriction.
web-filter, application-control, IPS sensor, and SSL inspection profile
bound. Calculate the profile binding coverage percentage.
order. Identify shadow rules — rules that can never match because a
preceding rule with broader criteria matches all their traffic first.
status disable create auditconfusion. Flag for cleanup.
logtraffic is set to all or utm on security-relevant policies. Policies with logtraffic disable create
visibility gaps.
security windows during off-schedule periods. Validate schedule alignment
with intended access windows.
Summarize: total policies, accept versus deny, UTM profile coverage ratio,
shadow rule count, and disabled policy count.
Validate thin edge FortiGate registration, tunnel health, and policy
consistency.
# Thin edge status
GET /api/v1/fortisase/thin-edges
# Per thin edge detail
GET /api/v1/fortisase/thin-edges/{edge_id}
# SD-WAN overlay health
GET /api/v1/fortisase/thin-edges/{edge_id}/sdwan/health
# Thin edge firmware status
GET /api/v1/fortisase/thin-edges/{edge_id}/firmware
For each thin edge site:
its IPsec/SSL tunnel to the nearest FortiSASE PoP is established. Tunnels
in down state mean site traffic is not protected by FortiSASE — Critical
finding.
jitter, packet loss thresholds). Verify health-check targets are reachable
and meaningful. Check that SLA violation failover does not bypass security
inspection.
with the FortiSASE cloud policy. Identify discrepancies where thin edge
local rules may override or conflict with centralized cloud policy.
recommended firmware target. Thin edges running firmware more than one major
version behind are a High finding due to unpatched vulnerabilities.
PoPs for redundancy. Single-tunnel configurations create a single point of
failure.
Review deep inspection profiles and their deployment coverage.
# SSL inspection profiles
GET /api/v2/cmdb/firewall/ssl-ssh-profile
# Certificate inspection settings
GET /api/v2/cmdb/certificate/ca
Evaluate:
deep-inspection versus certificate-inspection. Policies using only
certificate inspection cannot inspect encrypted payload — AV and IPS
profiles see only connection metadata on HTTPS traffic.
Overly broad exemptions (entire categories or wildcard domains) reduce
inspection coverage. Document each exemption with business justification.
deployed to all managed endpoints. Endpoints without the CA certificate
will encounter TLS errors or bypass inspection.
SMTPS, IMAPS, POP3S, and FTPS. Verify all relevant protocols are included
in the inspection scope.
resource consumption. Review PoP capacity metrics to ensure deep inspection
is sustainable at current traffic volumes.
Assess FortiClient EMS integration and endpoint compliance posture.
# FortiClient EMS connection status
GET /api/v1/fortisase/ems/status
# Endpoint compliance summary
GET /api/v1/fortisase/endpoints/compliance
# ZTNA tag assignments
GET /api/v1/fortisase/endpoints/ztna-tags
# Endpoint group inventory
GET /api/v1/fortisase/endpoints/groups
Evaluate:
synchronizing. Check last sync timestamp — sync delays exceeding 15
minutes may indicate connectivity issues.
group:
correct ZTNA tag assignment. Non-compliant endpoints should receive a
non-compliant tag that restricts ZTNA access. Check for endpoints with
missing or stale tags.
detects whether the endpoint is on-fabric (corporate network) or
off-fabric (remote). Off-fabric endpoints should route through FortiSASE
SWG; on-fabric endpoints may use local FortiGate. Misconfigured detection
can create security gaps.
endpoints meeting all compliance rules. Rates below 85% indicate systemic
compliance issues requiring remediation campaigns.
Verify subscription status and signature currency for all FortiGuard
security services.
# FortiGuard subscription status
GET /api/v2/monitor/fortiguard/service-communication-stats
# Signature database versions
GET /api/v2/monitor/system/fortiguard
# FortiGuard server connectivity
GET /api/v2/monitor/fortiguard/server-list
Verify each FortiGuard service:
| Service | Expected Status | Maximum Signature Age |
|---|---|---|
| --------- | ---------------- | ---------------------- |
| FortiGuard Antivirus | Active, licensed | 24 hours |
| FortiGuard IPS | Active, licensed | 7 days |
| FortiGuard Web Filter | Active, licensed | 7 days |
| FortiGuard Application Control | Active, licensed | 7 days |
| FortiGuard DNS Filter | Active, licensed | 7 days |
| FortiGuard Inline CASB | Active (if licensed) | 7 days |
| FortiGuard DLP | Active (if licensed) | 7 days |
Check FortiGuard server connectivity from each PoP. FortiSASE relies on
cloud-based FortiGuard queries for real-time web filter rating and DNS
filter lookups. Degraded connectivity forces fallback to cached data, reducing
detection efficacy for newly categorized threats.
Verify the update mechanism — FortiSASE should automatically receive
signature updates from FortiGuard. Check for update failures in the last 7
days and identify root cause (connectivity, license, service outage).
Check FortiAnalyzer Cloud integration and log infrastructure health.
# FortiAnalyzer Cloud status
GET /api/v1/fortisase/logging/status
# Log forwarding configuration
GET /api/v1/fortisase/logging/forwarders
# Alert policies
GET /api/v1/fortisase/logging/alerts
Evaluate:
on-premises FortiAnalyzer) is connected and receiving logs from all
FortiSASE components (SWG, ZTNA, thin edges, endpoints).
web filter, application control), event logs, and ZTNA logs are all
forwarded. Missing log types create investigation blind spots.
requirements (typically 90-365 days depending on regulatory framework).
At minimum, alerts should cover: malware detection, IPS critical severity,
ZTNA authentication failures, thin edge tunnel down, FortiGuard update
failures, and endpoint compliance drops.
configured for SWG threat activity, ZTNA access patterns, and endpoint
compliance trends.
| Metric | Normal | Warning | Critical |
|---|---|---|---|
| -------- | -------- | --------- | ---------- |
| URL categories with explicit action | >90% | 70-90% | <70% |
| AV profile bound to SWG policies | 100% | 80-99% | <80% |
| IPS sensor bound to SWG policies | 100% | 80-99% | <80% |
| Application control profile bound | >95% | 75-95% | <75% |
| High-risk app categories blocked | 100% | 80-99% | <80% |
| SSL deep inspection on internet policies | >80% | 50-80% | <50% |
| Metric | Normal | Warning | Critical |
|---|---|---|---|
| -------- | -------- | --------- | ---------- |
| ZTNA rules with posture tag requirement | >90% | 70-90% | <70% |
| Endpoint posture tag compliance rate | >85% | 65-85% | <65% |
| ZTNA rules with user/group restriction | 100% | 80-99% | <80% |
| MFA enforcement on sensitive apps | 100% | 80-99% | <80% |
| ZTNA tag propagation latency | <5 min | 5-15 min | >15 min |
| Metric | Normal | Warning | Critical |
|---|---|---|---|
| -------- | -------- | --------- | ---------- |
| Tunnel status | Up (all edges) | 1-2 edges degraded | Any edge down |
| Firmware currency | Current or N-1 | N-2 | >N-2 or EOL |
| SD-WAN SLA compliance | >95% | 80-95% | <80% |
| Dual-tunnel redundancy | All edges dual-tunnel | >80% dual-tunnel | <80% dual-tunnel |
| Policy consistency (cloud vs edge) | 100% match | Minor drift | Major drift |
| Metric | Normal | Warning | Critical |
|---|---|---|---|
| -------- | -------- | --------- | ---------- |
| Endpoints compliant (all rules) | >90% | 75-90% | <75% |
| OS patch currency (<30 days) | >90% | 70-90% | <70% |
| AV signatures current (<24h) | >95% | 80-95% | <80% |
| Vulnerability scan (no critical) | >90% | 75-90% | <75% |
| EMS sync status | Connected, <15min | Connected, 15-60min | Disconnected or >60min |
| Metric | Normal | Warning | Critical |
|---|---|---|---|
| -------- | -------- | --------- | ---------- |
| Subscription status | All active | Expiring <30 days | Expired or inactive |
| AV signature age | <24 hours | 24-72 hours | >72 hours |
| IPS signature age | <7 days | 7-14 days | >14 days |
| Web filter DB age | <7 days | 7-14 days | >14 days |
| FortiGuard connectivity | All PoPs connected | Intermittent | Disconnected |
SWG policy gap identified
├── What type of gap?
│ ├── Missing AV/IPS profile on accept policy
│ │ ├── Policy carries internet-bound traffic?
│ │ │ ├── Yes → CRITICAL: Bind AV + IPS immediately
│ │ │ │ └── Also verify SSL deep inspection is active
│ │ │ └── No (internal SaaS only) → HIGH: Bind AV + IPS
│ │ └── Is policy actively used (hit count > 0)?
│ │ ├── Yes → Prioritize remediation
│ │ └── No → Evaluate for removal
│ │
│ ├── URL category not explicitly actioned
│ │ ├── Category is high-risk (malware, phishing, C2)?
│ │ │ ├── Yes → CRITICAL: Set action to block immediately
│ │ │ └── No → MEDIUM: Review and set explicit action
│ │ └── Category is business-relevant?
│ │ ├── Yes → Set to allow with logging
│ │ └── No → Set to block or monitor
│ │
│ ├── Application control gap
│ │ ├── High-risk categories (P2P, proxy, botnet) not blocked?
│ │ │ └── CRITICAL: Block high-risk categories
│ │ ├── Unknown applications allowed?
│ │ │ └── HIGH: Set unknown apps to monitor or block
│ │ └── Application override contradicts category policy?
│ │ └── MEDIUM: Review and align override with policy
│ │
│ └── SSL inspection gap
│ ├── No deep inspection on internet-bound policies?
│ │ └── HIGH: Deploy deep inspection; distribute CA cert
│ ├── Excessive exemptions in inspection profile?
│ │ └── MEDIUM: Review each exemption for business justification
│ └── CA certificate not deployed to all endpoints?
│ └── HIGH: Deploy via EMS or MDM
│
└── Remediation timeline
├── CRITICAL → Immediate (within 24 hours)
├── HIGH → Within 7 days
└── MEDIUM → Within 30 days
ZTNA access policy finding
├── Rule missing posture tag requirement?
│ ├── Application sensitivity?
│ │ ├── High (financial, PII, admin consoles)
│ │ │ └── CRITICAL: Add posture tags immediately
│ │ │ ├── Require: OS patched, AV current, compliant
│ │ │ └── Block non-compliant with redirect to remediation
│ │ ├── Medium (internal tools, collaboration)
│ │ │ └── HIGH: Add posture tags within 7 days
│ │ └── Low (public-facing info, non-sensitive)
│ │ └── MEDIUM: Add posture tags within 30 days
│ │
│ └── Interim mitigation:
│ └── Enable enhanced logging on untagged rules
│ └── Monitor for non-compliant device access patterns
│
├── Rule missing user/group restriction?
│ ├── Rule uses source IP only?
│ │ └── HIGH: Migrate to identity-based access
│ │ ├── Integrate SAML/LDAP identity source
│ │ └── Define access by group membership
│ └── Rule allows "all users"?
│ └── MEDIUM: Scope to required groups
│
├── Shadow rule detected?
│ ├── Shadow rule more restrictive than matching rule?
│ │ └── Reorder: move restrictive rule above broad rule
│ └── Shadow rule redundant?
│ └── Remove shadow rule; document in change log
│
└── Authentication method insufficient?
├── No MFA on sensitive applications?
│ └── HIGH: Enable MFA via SAML IdP integration
└── Single-factor only?
└── MEDIUM: Plan MFA rollout
Thin edge finding identified
├── Tunnel down?
│ ├── Single edge affected?
│ │ ├── Check edge connectivity (WAN link status)
│ │ ├── Verify IPsec/SSL VPN configuration
│ │ └── Check PoP availability in region
│ └── Multiple edges affected?
│ ├── PoP outage? → Check FortiSASE status page
│ └── Configuration push failed? → Check FortiCloud sync
│ └── CRITICAL: Restore tunnel — site unprotected
│
├── Firmware outdated?
│ ├── How far behind?
│ │ ├── N-1 → LOW: Schedule upgrade in maintenance window
│ │ ├── N-2 → MEDIUM: Upgrade within 30 days
│ │ └── >N-2 or EOL → HIGH: Urgent upgrade required
│ └── Check for known CVEs in current firmware version
│ └── Active exploit in the wild? → CRITICAL: Emergency upgrade
│
├── Policy inconsistency (cloud vs edge)?
│ ├── Edge has locally defined rules overriding cloud policy?
│ │ └── HIGH: Align local rules with cloud policy or remove
│ ├── Edge missing security profiles present in cloud?
│ │ └── MEDIUM: Push consistent profiles from FortiSASE
│ └── Edge allows traffic not covered by cloud policy?
│ └── HIGH: Review and restrict; enforce cloud-first policy
│
└── No dual-tunnel redundancy?
├── Business-critical site?
│ └── HIGH: Configure secondary tunnel to alternate PoP
└── Non-critical site?
└── MEDIUM: Plan dual-tunnel deployment
FORTISASE SECURITY POSTURE AUDIT REPORT
=========================================
Tenant: [tenant name]
Region: [primary region]
FortiSASE Service Tier: [tier/license level]
Audit Date: [timestamp]
Performed By: [operator/agent]
TENANT TOPOLOGY:
- Points of Presence (PoPs): [count] ([list with status])
- Thin edge sites: [count] ([registered/total])
- Licensed endpoints: [used] / [total] ([utilization %])
- License expiration: [date]
- PoPs in degraded state: [count or none]
SWG FINDINGS:
- Web filter profiles: [count]
- URL categories with explicit action: [n] / [total] ([%])
- Application control profiles: [count]
- High-risk categories blocked: [yes/no — list gaps]
- SWG policies with full UTM binding (AV+IPS+WebFilter+AppCtrl): [n] / [total] ([%])
- SSL deep inspection coverage: [n] policies / [total internet-bound] ([%])
- Inline CASB enabled: [yes/no]
ZTNA FINDINGS:
- ZTNA access proxy rules: [count]
- Rules with posture tag requirement: [n] / [total] ([%])
- Rules with user/group restriction: [n] / [total] ([%])
- MFA enforced on sensitive apps: [n] / [total sensitive] ([%])
- Shadow rules identified: [count]
- ZTNA server definitions: [count]
- Authentication sources: [SAML/LDAP/RADIUS — list with status]
THIN EDGE FINDINGS:
- Total thin edge sites: [count]
- Tunnels established: [n] / [total]
- Tunnels down: [list sites]
- Dual-tunnel redundancy: [n] / [total] ([%])
- Firmware current (within N-1): [n] / [total] ([%])
- Firmware outdated (>N-2 or EOL): [list sites with versions]
- SD-WAN SLA compliance: [%]
- Policy consistency issues: [count — list sites]
ENDPOINT COMPLIANCE FINDINGS:
- Managed endpoints: [count]
- FortiClient EMS sync status: [connected/disconnected — last sync time]
- Endpoints fully compliant: [n] / [total] ([%])
- Non-compliant breakdown:
- OS patch overdue: [count]
- AV signatures stale: [count]
- Critical vulnerabilities present: [count]
- Endpoint firewall disabled: [count]
- ZTNA tags assigned correctly: [n] / [total] ([%])
- On-fabric / off-fabric detection issues: [count or none]
FORTIGUARD SERVICE STATUS:
- Antivirus: [active/expired] — signatures [version] ([age])
- IPS: [active/expired] — signatures [version] ([age])
- Web Filter: [active/expired] — DB [version] ([age])
- Application Control: [active/expired] — DB [version] ([age])
- DNS Filter: [active/expired] — DB [version] ([age])
- Inline CASB: [active/expired/not licensed]
- FortiGuard connectivity: [all PoPs connected / degraded — details]
- Update failures (last 7 days): [count or none]
LOGGING AND ANALYTICS:
- FortiAnalyzer Cloud: [connected/disconnected]
- Log types forwarded: [list — traffic, UTM, event, ZTNA, endpoint]
- Log retention: [days]
- Alert policies configured: [count]
- Missing alert coverage: [list gaps]
FINDINGS SUMMARY:
1. [Severity] [Category] — [Description]
Component: [SWG / ZTNA / Thin Edge / Endpoint / FortiGuard]
Detail: [specific configuration issue]
Impact: [security implication]
Recommendation: [specific remediation action]
REMEDIATION ROADMAP:
- Immediate (0-24 hours): [Critical findings — list]
- Short-term (1-7 days): [High findings — list]
- Medium-term (7-30 days): [Medium findings — list]
- Long-term (30-90 days): [Low findings and improvements — list]
NEXT AUDIT: [CRITICAL findings present: 30 days | HIGH only: 90 days | Clean: 180 days]
FortiCloud API authentication requires a valid API client ID and credentials
with appropriate IAM permissions. Common issues:
(typically 1 hour). Implement token refresh logic for long-running audits.
FortiSASE resources. Insufficient permissions return 403 Forbidden on
resource endpoints but may succeed on authentication.
account, API authentication may require an API-specific account without
MFA or use of service account credentials.
requests/minute). Implement exponential backoff for 429 Too Many Requests
responses. Batch queries where possible.
Thin edge tunnels that repeatedly establish and drop indicate underlying
connectivity or configuration issues:
packet loss, or bandwidth saturation. SD-WAN health checks can trigger
tunnel failover, but the root cause is the underlay network.
small, fragmented packets cause tunnel instability. Set the thin edge
tunnel MTU to 1400 or enable DF-bit clearing.
(UDP 4500). Verify the upstream NAT device allows UDP 4500 and that
the NAT session timeout exceeds the IPsec DPD interval.
(e.g., 5 seconds) on high-latency links cause false positives. Adjust
DPD interval to 30 seconds with a retry count of 3.
When FortiClient EMS synchronization with FortiSASE exceeds expected
intervals:
endpoints (*.fortisase.com:443). Check firewall rules on the EMS host
and any upstream proxies.
experience sync delays during full synchronization. Verify incremental
sync is functioning.
compatible with the current FortiSASE release. Version mismatches can
cause sync failures or partial data updates.
TLS certificates. Expired or untrusted certificates cause silent sync
failures.
When FortiSASE PoPs or thin edges cannot reach FortiGuard update servers:
configure FortiGuard to use the proxy for update downloads. Verify proxy
authentication credentials if required.
service.fortiguard.net, update.fortiguard.net, and related domains.
Verify DNS is functioning on all PoPs and thin edges.
UDP 53/8888 for rating queries. Ensure these ports are permitted.
Verify the nearest FortiGuard server is reachable and not blocked by
geo-IP restrictions.
When ZTNA tags updated in FortiClient EMS do not reflect in FortiSASE
access decisions promptly:
EMS to FortiSASE. Each hop introduces latency. Normal propagation is
under 5 minutes; delays beyond 15 minutes indicate a pipeline issue.
between EMS and FortiSASE. Default intervals may be too long for
time-sensitive compliance enforcement.
TTL settings affect how quickly tag changes take effect. Review cache
settings if tag changes are not applying within expected timeframes.
rules periodically (default: every 5 minutes). Increasing evaluation
frequency reduces the time between a compliance state change and the
corresponding tag update.
When FortiSASE PoP performance degrades or capacity limits are approached:
performance degrades. Enable PoP load balancing or geo-steering to
distribute endpoints across available PoPs.
per-session resource consumption. If PoP capacity is constrained, evaluate
inspection exemptions for high-bandwidth, low-risk traffic (e.g., trusted
SaaS platforms with their own security controls).
of business day across a time zone) can saturate PoP capacity. Review
capacity planning and consider PoP pre-scaling if supported.
Endpoints in underserved regions may experience higher latency. Review
FortiSASE regional coverage against endpoint geographic distribution.
共 1 个版本
暂无安全检测报告