Cisco ASA / FTD Firewall Security Policy Audit
Policy-audit-driven analysis covering both Cisco ASA (classic) and Firepower
Threat Defense (FTD). Unlike generic firewall checklists that check for open
ports and default-deny, this skill evaluates the platform-specific security
architecture: ASA security levels with interface-bound ACLs and Modular
Policy Framework, or FTD Access Control Policy with Snort IPS integration
and Firepower Management Center (FMC) orchestration.
Where platforms diverge, sections use [ASA] and [FTD] labels.
Shared concepts apply to both platforms unlabeled. Covers ASA 9.x+ and
FTD 6.x+ / 7.x+ managed by FMC or FDM. Reference
references/policy-model.md for the ASA security-level model and FTD ACP
evaluation chain, and references/cli-reference.md for dual-platform
read-only commands.
When to Use
- - ACL review after rule changes or migration from ASA to FTD
- Annual or quarterly compliance audit requiring per-rule justification
- Post-incident rule assessment to identify how traffic was permitted
- [ASA] Security level and interface ACL gap analysis
- [ASA] Modular Policy Framework audit — verifying inspection maps
- [FTD] Access Control Policy rule ordering and IPS coverage review
- [FTD] Snort IPS policy tuning assessment — false positive vs detection gap balance
- NAT policy validation after network re-addressing or migration
- VPN configuration security review — site-to-site and remote access
- Failover / HA posture verification
- Pre-migration baseline before ASA-to-FTD conversion
Prerequisites
- - [ASA] Privilege level 5+ (read-only
show commands) or ASDM read-only access - [FTD] Read-only analyst access to FMC web UI or FMC REST API; Expert shell access for Snort-level diagnostics
- Understanding of the interface topology — which interfaces exist, their security levels ([ASA]), and network segment assignments
- Knowledge of expected access policies per interface pair or zone
- For multi-context ASA: access to system and each security context
- [FTD] Knowledge of IPS policy baseline — which Snort ruleset and network analysis policy are expected
- Active configuration — audit evaluates the running configuration, not pending changes
Procedure
Follow this audit flow sequentially. Each step builds on prior findings.
The procedure moves from platform identification through access policy,
NAT, inspection/IPS, VPN, and logging.
Step 1: Platform Identification and Architecture Inventory
Determine the platform and collect architectural baseline.
CODEBLOCK0
Identify: ASA vs FTD, software version, hardware platform (ASA 5500-X,
Firepower 1000/2100/4100/9300, virtual), licensed features.
[ASA] Inventory interfaces, security levels, and context mode:
CODEBLOCK1
Security levels (0–100) determine implicit traffic flow: traffic from a
higher security level to a lower is permitted by default (unless ACLs
override); lower-to-higher is denied by default. Record each interface
name, security level, and IP address.
For multi-context ASA:
CODEBLOCK2
[FTD] Identify management model and registered devices:
CODEBLOCK3
FTD managed by FMC: policy is pushed from FMC — audit via FMC UI/API.
FTD managed by FDM (local): policy configured on-device — audit via
FDM web UI or REST API.
Check failover/HA status on both platforms:
CODEBLOCK4
Record active/standby status, failover interface, and last failover time.
Step 2: Access Policy Analysis
[ASA] ACL-based access control:
CODEBLOCK5
ASA uses interface-bound ACLs. Each ACL is applied inbound or outbound on
an interface via access-group. Evaluate:
- - ACL evaluation order: Top-down within each ACL. First matching ACE
(Access Control Entry) is applied. Implicit deny at the bottom.
- - Global ACL: If configured, applies to all interfaces. Interface ACLs
are evaluated before the global ACL.
- - Overly permissive ACEs:
permit ip any any or INLINECODE5
entries are Critical findings — they permit all traffic of that protocol.
- - Unused ACEs: ACEs with zero hit counts (check INLINECODE6
output for
hitcnt=0) over 90+ days are cleanup candidates.
- - EtherType ACLs: Used on transparent firewall interfaces. Review for
overly broad EtherType permits.
CODEBLOCK6
[FTD] Access Control Policy (ACP):
Access the ACP via FMC UI or REST API. The ACP evaluates traffic through
a defined chain (see references/policy-model.md). Evaluate:
- - Prefilter policy: Hardware-level rules that bypass Snort. Overly
broad prefilter Trust rules skip all inspection.
- - SSL policy: Determines which TLS flows are decrypted for inspection.
- Access Control rules: Top-down evaluation. Actions: Allow (with or
without IPS), Trust (bypass Snort), Block, Monitor.
- Rules with Action=Allow and no Intrusion Policy pass traffic without
IPS inspection.
- Rules with Action=Trust bypass all further inspection including IPS
and file/malware — use only for verified trusted flows.
- - Default action: Applied when no rule matches. Should be Block with
logging, not Allow.
- - Intrusion Policy binding: Each Allow rule can bind an Intrusion
Policy (Snort ruleset). Rules without one pass traffic uninspected.
CODEBLOCK7
Step 3: NAT Policy Audit
[ASA] NAT order of operations:
CODEBLOCK8
ASA NAT evaluates in three sections:
- - Section 1 (Manual NAT / Twice NAT): Explicit rules, top-down. Highest
priority. Used for fine-grained control.
- - Section 2 (Auto NAT / Object NAT): Per-object NAT definitions.
Evaluated after Section 1. Ordering: static rules first, then dynamic.
- - Section 3 (Manual NAT after-auto): Low-priority manual rules evaluated
after auto NAT. Used for catch-all translations.
Check for NAT rule conflicts — a Section 1 rule that matches the same traffic
as a Section 2 object NAT always wins. Verify that static NAT entries for
published servers have corresponding ACL entries restricting access.
[FTD] NAT rules in FMC:
FTD NAT follows the same three-section model as ASA but is configured via
FMC. Review NAT rules in the FMC NAT policy. Verify:
- - Manual NAT rules take precedence over auto NAT
- NAT rules align with ACP rules — ensure translated addresses match ACP
source/destination references
- - No unnecessary identity NAT rules consuming processing
Cross-reference NAT entries with access policy on both platforms — static NAT
that exposes internal servers must have restrictive access rules.
Step 4: Inspection and IPS Assessment
[ASA] Modular Policy Framework (MPF):
CODEBLOCK9
ASA inspection uses MPF: class-maps define traffic → policy-maps bind
inspections → service-policies apply to interfaces. Evaluate:
- - Default inspection: ASA enables inspection for common protocols
(HTTP, DNS, FTP, etc.) via the
global_policy. Verify the global
policy is applied (
service-policy global_policy global).
- - Custom inspections: Additional class-maps/policy-maps for specific
traffic patterns. Verify they are applied to correct interfaces.
- - Missing inspections: Traffic not matching any class-map in the
service-policy receives no application-layer inspection — only ACL
enforcement.
- - Connection limits: MPF can set connection limits and timeouts.
Review for overly permissive or missing connection limits on
internet-facing interfaces.
[FTD] Snort IPS and File/Malware policies:
- - Intrusion Policy: Each ACP Allow rule can reference an Intrusion
Policy that determines the Snort ruleset. Check that internet-facing
Allow rules bind an Intrusion Policy.
- - Snort rule sets: Verify the base policy (Balanced Security and
Connectivity, Connectivity Over Security, Security Over Connectivity,
Maximum Detection). For production environments, "Balanced Security
and Connectivity" is the minimum recommended baseline.
- - Network Analysis Policy (NAP): Controls protocol decoder settings
and preprocessor configuration. Misconfigured NAP can cause Snort
detection gaps.
- - File and Malware Policy: Detects and blocks malware file transfers.
Verify binding on rules permitting file-carrying protocols
(HTTP, SMTP, FTP, SMB).
- - Snort deployment mode: Inline (can block) vs passive (alert only).
Production deployments should use inline mode for active prevention.
CODEBLOCK10
Step 5: VPN and Remote Access Audit
Evaluate VPN configuration security on both platforms.
CODEBLOCK11
Check:
- - Site-to-site tunnels: Verify IKE version (IKEv2 preferred over
IKEv1), encryption algorithms (AES-256-GCM recommended; DES/3DES are
findings), DH groups (group 14+ recommended; groups 1/2/5 are weak),
and PFS settings.
- - Crypto maps / tunnel groups: [ASA] Review crypto map entries
and tunnel group definitions.
[FTD] Review site-to-site VPN
topology in FMC.
- - AnyConnect / remote access VPN: If configured, evaluate:
- Authentication method (certificate + MFA preferred over password-only)
- Split tunneling settings (full tunnel recommended for security;
split tunnel for performance — document the choice)
- Connection profiles and group policies
- Client certificate validation settings
- Banner and session timeout configuration
CODEBLOCK12
- - IKE/IPSec SA lifetimes: Very long lifetimes (>24h IKE, >8h IPSec)
increase exposure if keys are compromised.
Step 6: Logging and Monitoring
Evaluate logging configuration and coverage.
[ASA] Syslog configuration:
CODEBLOCK13
- - Syslog severity: Verify logging level is set to at least
"informational" (level 6) for security-relevant events. Level 5
(notifications) misses connection teardown events. Level 7 (debugging)
generates excessive volume.
- - Syslog destinations: Verify syslog server(s) are configured and
reachable. Check for encrypted syslog (TCP/TLS) for log integrity.
- - SNMP: If configured, verify community strings are not defaults and
SNMP v3 is used for authentication/encryption.
[FTD] Firepower event logging:
- - Connection events: In FMC, verify connection logging is enabled on
ACP rules. "Log at End of Connection" is standard; "Log at Beginning"
adds volume but provides immediate visibility.
- - Intrusion events: Automatically logged by Snort when rules trigger.
Verify events are forwarded to the SIEM.
- - eStreamer: The Firepower event streaming API for SIEM integration.
Verify eStreamer client connectivity if in use.
- - Security Analytics / SecureX: If integrated, verify telemetry
forwarding is active.
CODEBLOCK14
Verify logging covers: denied connections (ACL denials), permitted
connections (for audit trail), VPN events, failover events, and
administrative access.
Threshold Tables
Policy Rule Severity Classification
| Finding | Severity | Rationale |
|---|
[ASA] permit ip any any in interface ACL | Critical | Permits all IP traffic — no access restriction |
| [FTD] ACP default action set to Allow |
Critical | All unmatched traffic permitted without inspection |
|
[FTD] Prefilter Trust rule with broad match (any/any) | Critical | Traffic bypasses all Snort inspection |
|
[ASA] No global service-policy applied | High | No application-layer inspection on any traffic |
|
[FTD] Allow rule without Intrusion Policy binding | High | Traffic permitted without IPS inspection |
|
[FTD] SSL policy not decrypting internet-bound traffic | High | Snort inspects only metadata on encrypted flows |
| VPN using DES/3DES or DH group 1/2/5 | High | Weak cryptographic algorithms — vulnerable to attack |
| Static NAT with no restricting ACL | High | Published server accessible on all ports |
| Failover configured but standby not monitoring | High | HA not providing redundancy |
|
[FTD] Snort in passive mode (production) | High | IPS detects but cannot block threats |
|
[ASA] ACE with hitcnt=0 for >90 days | Medium | Unused rule — cleanup candidate |
|
[FTD] File/Malware policy not bound on file-carrying rules | Medium | Malware detection gap on HTTP/SMTP/FTP |
| VPN split tunneling enabled | Medium | Remote user traffic may bypass corporate security controls |
| Logging severity below informational (level 6) | Medium | Security events not captured in logs |
|
[ASA] Security levels equal with same-security-traffic disabled | Low | Traffic between equal interfaces blocked (may be intentional) |
IPS / Inspection Maturity
| Coverage | Maturity | Guidance |
|---|
| [FTD] All Allow rules have Intrusion + File/Malware policies | Mature | Maintain; tune Snort rules quarterly |
| [FTD] Most Allow rules have Intrusion Policy, some gaps |
Developing | Bind Intrusion Policy to remaining Allow rules |
|
[ASA] Global inspection policy active, custom maps defined | Developing | Evaluate FTD migration for deeper inspection |
|
[ASA] Default global_policy only, no custom inspections | Immature | Add custom inspection maps for critical protocols |
Decision Trees
Access Policy Gap Remediation
CODEBLOCK15
NAT Conflict Resolution
CODEBLOCK16
Report Template
CODEBLOCK17
Troubleshooting
ASA-to-FTD Migration Assessment
When evaluating an ASA for migration to FTD, document: ACL count, NAT rules,
MPF inspections, VPN configurations (crypto maps don't migrate directly),
and multi-context usage (FTD does not support multi-context). The Cisco
Firepower Migration Tool provides a baseline but audit the migrated policy
for accuracy — automated migration often produces suboptimal rule ordering.
Multi-Context ASA Audits
Each security context is an independent firewall with its own interfaces,
ACLs, NAT, and routing. Audit each context separately via
changeto context <name>. Use show context in the system context to
list all contexts and show resource allocation for per-context limits.
Large ACLs (>1000 ACEs)
Export the configuration (show running-config access-list) and parse
programmatically. Prioritize by hit count — high-hit-count ACEs carry
the most traffic. Zero-hit-count ACEs over 90 days are removal candidates.
FTD Diagnostic CLI
FTD runs Snort on top of an ASA-derived data plane. Use
system support diagnostic-cli for ASA-style show commands. The
canonical policy source is FMC — the diagnostic CLI shows deployed results.
Packet Tracer for Policy Verification
Both platforms support packet tracer for simulating traffic:
CODEBLOCK18
Shows each processing phase: ACL/ACP evaluation, NAT translation,
inspection, routing, and egress. Use to verify audit findings.
Cisco ASA / FTD 防火墙安全策略审计
基于策略审计驱动的分析,涵盖 Cisco ASA(经典)和 Firepower Threat Defense(FTD)。与检查开放端口和默认拒绝的通用防火墙检查清单不同,此技能评估特定于平台的安全架构:ASA 安全级别与接口绑定的 ACL 和模块化策略框架,或 FTD 访问控制策略与 Snort IPS 集成和 Firepower 管理中心(FMC)编排。
在平台存在差异的部分,使用 [ASA] 和 [FTD] 标签进行标记。未标记的概念适用于两个平台。涵盖由 FMC 或 FDM 管理的 ASA 9.x+ 和 FTD 6.x+ / 7.x+。请参考 references/policy-model.md 了解 ASA 安全级别模型和 FTD ACP 评估链,以及 references/cli-reference.md 了解双平台只读命令。
使用时机
- - 规则变更后或从 ASA 迁移到 FTD 后的 ACL 审查
- 需要逐条规则说明的年度或季度合规审计
- 事件后的规则评估,以确定流量是如何被允许的
- [ASA] 安全级别和接口 ACL 差距分析
- [ASA] 模块化策略框架审计——验证检查映射
- [FTD] 访问控制策略规则排序和 IPS 覆盖范围审查
- [FTD] Snort IPS 策略调优评估——误报与检测缺口平衡
- 网络重新编址或迁移后的 NAT 策略验证
- VPN 配置安全审查——站点到站点和远程访问
- 故障转移/高可用性状态验证
- ASA 到 FTD 转换前的迁移基线
前提条件
- - [ASA] 特权级别 5+(只读 show 命令)或 ASDM 只读访问权限
- [FTD] FMC Web UI 或 FMC REST API 的只读分析员访问权限;用于 Snort 级别诊断的 Expert shell 访问权限
- 了解接口拓扑——存在哪些接口、它们的安全级别([ASA])以及网段分配
- 了解每个接口对或区域的预期访问策略
- 对于多上下文 ASA:访问系统和每个安全上下文
- [FTD] 了解 IPS 策略基线——预期的 Snort 规则集和网络分析策略
- 活动配置——审计评估正在运行的配置,而非待处理的更改
流程
按顺序执行此审计流程。每个步骤都基于之前的发现。流程从平台识别开始,依次经过访问策略、NAT、检查/IPS、VPN 和日志记录。
步骤 1:平台识别和架构清单
确定平台并收集架构基线。
show version
识别:ASA 与 FTD、软件版本、硬件平台(ASA 5500-X、Firepower 1000/2100/4100/9300、虚拟化)、许可功能。
[ASA] 清点接口、安全级别和上下文模式:
show interface ip brief
show nameif
show mode
安全级别(0–100)决定隐式流量流向:默认情况下,允许从较高安全级别到较低安全级别的流量(除非 ACL 覆盖);默认拒绝从较低到较高安全级别的流量。记录每个接口名称、安全级别和 IP 地址。
对于多上下文 ASA:
show context
changeto context
show interface ip brief
[FTD] 识别管理模式和注册设备:
show managers
由 FMC 管理的 FTD:策略从 FMC 推送——通过 FMC UI/API 进行审计。
由 FDM(本地)管理的 FTD:策略在设备上配置——通过 FDM Web UI 或 REST API 进行审计。
检查两个平台上的故障转移/高可用性状态:
show failover
show failover state
记录主用/备用状态、故障转移接口和上次故障转移时间。
步骤 2:访问策略分析
[ASA] 基于 ACL 的访问控制:
show access-list
show running-config access-list
show running-config access-group
ASA 使用接口绑定的 ACL。每个 ACL 通过 access-group 在接口上入站或出站应用。评估:
- - ACL 评估顺序: 每个 ACL 内自上而下。应用第一个匹配的 ACE(访问控制条目)。底部有隐式拒绝。
- 全局 ACL: 如果配置,则应用于所有接口。接口 ACL 在全局 ACL 之前评估。
- 过度宽松的 ACE: permit ip any any 或 permit tcp any any 条目是关键发现——它们允许该协议的所有流量。
- 未使用的 ACE: 超过 90 天命中计数为零(检查 show access-list 输出中的 hitcnt=0)的 ACE 是清理候选。
- EtherType ACL: 用于透明防火墙接口。审查过于宽泛的 EtherType 允许。
show access-list brief
[FTD] 访问控制策略(ACP):
通过 FMC UI 或 REST API 访问 ACP。ACP 通过定义的链评估流量(请参阅 references/policy-model.md)。评估:
- - 预过滤策略: 绕过 Snort 的硬件级别规则。过于宽泛的预过滤信任规则会跳过所有检查。
- SSL 策略: 确定哪些 TLS 流被解密以进行检查。
- 访问控制规则: 自上而下评估。操作:允许(带或不带 IPS)、信任(绕过 Snort)、阻止、监控。
- 操作为 Allow 且没有入侵策略的规则会通过流量而不进行 IPS 检查。
- 操作为 Trust 的规则会绕过所有进一步检查,包括 IPS 和文件/恶意软件——仅用于已验证的受信任流量。
- - 默认操作: 当没有规则匹配时应用。应为带日志记录的 Block,而不是 Allow。
- 入侵策略绑定: 每个 Allow 规则可以绑定一个入侵策略(Snort 规则集)。没有入侵策略的规则会通过未检查的流量。
system support diagnostic-cli
show access-control-config
步骤 3:NAT 策略审计
[ASA] NAT 操作顺序:
show nat
show nat detail
show running-config nat
show xlate
ASA NAT 在三个部分中评估:
- - 第 1 部分(手动 NAT / 两次 NAT): 显式规则,自上而下。最高优先级。用于精细控制。
- 第 2 部分(自动 NAT / 对象 NAT): 每个对象的 NAT 定义。在第 1 部分之后评估。顺序:静态规则优先,然后是动态规则。
- 第 3 部分(自动之后的手动 NAT): 在自动 NAT 之后评估的低优先级手动规则。用于全面转换。
检查 NAT 规则冲突——匹配与第 2 部分对象 NAT 相同流量的第 1 部分规则始终获胜。验证已发布服务器的静态 NAT 条目具有相应的限制访问的 ACL 条目。
[FTD] FMC 中的 NAT 规则:
FTD NAT 遵循与 ASA 相同的三部分模型,但通过 FMC 配置。在 FMC NAT 策略中审查 NAT 规则。验证:
- - 手动 NAT 规则优先于自动 NAT
- NAT 规则与 ACP 规则一致——确保转换后的地址与 ACP 源/目标引用匹配
- 没有不必要的身份 NAT 规则消耗处理能力
在两个平台上交叉引用 NAT 条目与访问策略——暴露内部服务器的静态 NAT 必须具有限制性访问规则。
步骤 4:检查和 IPS 评估
[ASA] 模块化策略框架(MPF):
show running-config class-map
show running-config policy-map
show running-config service-policy
show service-policy
ASA 检查使用 MPF:class-map 定义流量 → policy-map 绑定检查 → service-policy 应用于接口。评估:
- - 默认检查: ASA 通过 globalpolicy 为常见协议(HTTP、DNS、FTP 等)启用检查。验证全局策略已应用(service-policy globalpolicy global)。
- 自定义检查: 针对特定流量模式的附加 class-map/policy-map。验证它们已应用于正确的接口。
- 缺少检查: 与服务策略中任何 class-map 都不匹配的流量不会收到应用层检查——仅执行 ACL。
- 连接限制: MPF 可以设置连接限制和超时。审查面向互联网的接口上过于宽松或缺少的连接限制。
[FTD] Snort IPS 和文件/恶意软件策略:
- - 入侵策略: 每个 ACP Allow 规则可以引用一个决定 Snort 规则集的入侵策略。检查面向互联网的 Allow 规则是否绑定了入侵策略。
- Snort 规则集: 验证基础策略(平衡安全性与连接性、连接性优先于安全性、安全性优先于连接性、最大检测)。对于生产环境,“平衡安全性与连接性”是最低推荐基线。
- 网络分析策略(NAP): 控制协议解码器设置和预处理器配置。配置错误的 NAP 可能导致 Snort 检测缺口。
- 文件和恶意软件策略: 检测并阻止恶意软件文件传输