T Techclick ← All lessons
Cisco · Secure Firewall · Access Control · Interactive lesson

FTD Access Control Policy — first match, then prove it

The ticket says “the IPS rule never fired” or “HTTPS still works after we blocked it.” Secure Firewall did not pick the most specific row. It picked the first access control rule whose conditions all match. This lesson walks rule order, default action, Trust vs Allow vs Block, and logging — then you prove the hit in connection events.

~18 min read · L2 primary · Quiz at end

After this page you can

Quick answer (say this out loud)

The Access Control Policy (ACP) is first-match, top-down, by ascending rule number. Traffic must meet all conditions on a rule. Except for Monitor (log and keep evaluating), the first matching rule handles the flow. No non-Monitor match means the default action. Trust permits without file, intrusion, or discovery inspection. Allow permits and can attach an intrusion policy and a file policy. Block denies without further inspection. Logging is not automatic — enable it on the rule or default action, then prove the name in connection events.

1. Why first-match burns tickets

Monday you add INSIDE-to-OUTSIDE-HTTPS-IPS as an Allow with Balanced Security and Connectivity. Tuesday someone “temporarily” parks a Trust any-any at the top of Mandatory so a backup job can finish. HTTPS still works. Intrusion events stay empty. Hit count on your IPS rule is zero.

The Device Configuration Guide is blunt: the system matches traffic to access control rules in the order you specify and, in most cases, handles the flow according to the first rule where all conditions match. A later, more specific Allow cannot steal a session that already matched Trust.

Hero · first matching card wins
Packet approaching a firewall while the first matching policy card lights up
Notice: evaluation is top-down. A Trust or Allow above your intended row is not a hint — it is the decision.

Rule number

Position in the policy, starting at 1, including inherited rules. This is evaluation order. Sections and categories are folders, not a second match engine.

Rule name

What you will read in the connection event field Access Control Rule (syslog AccessControlRuleName). Name the rule for the ticket, not for poetry.

2. Mental model: match, then action

Memorize two questions. Mixing them is why Trust gets used as a cheap Allow.

Does this traffic match? Zones, networks, ports, applications, URLs, users, time — all configured conditions must match. What happens if it matches? That is the action: Monitor, Trust, Block / Block with reset, Interactive Block, or Allow (optionally with file and intrusion policies).

Access control is not the first station. Prefilter, optional decryption, identity work, and Security Intelligence run earlier. A Trust ACP rule does not rewind those steps. If you needed the flow to skip Snort entirely from the first packet, that is a prefilter Fastpath conversation, not a Trust checkbox.

Journey · stations before the rule
Five glass panels labeled Prefilter, Decrypt, Intelligence, Access rule, Inspect
ACP rules sit after prefilter, decryption, and Security Intelligence. Allow is what hands remaining traffic to file then intrusion inspection.
Flow 1 · stations before Snort
Packet path — ACP is not station 1 1 · Prefilter Fastpath / Block or Analyze 2 · Decrypt optional TLS before L7 match 3 · SI IP / URL / DNS reputation block 4 · ACP rules first match wins or default action 5 · Deep inspect file, then IPS Allow / Interactive only If the action is Allow File policy first (type block, then malware). Intrusion policy next. Discovery only if the network discovery policy monitors those IPs. Trust, Block, and Block with reset do not get file or intrusion inspection. Hard words before the runbook LINA = data plane (routing, NAT, L3/L4 ACL). Snort = deep inspection. Security zone = named interface group used as source/destination match. Mandatory / Default sections organize rules. Inheritance nests this policy between a parent’s Mandatory and Default sections.

Read left → right, then the green bar. If Q2 on the quiz feels wrong, this is the figure to re-read.

Say this out loud

Match is not action. Trust is a permit that skips deep inspection. Allow is a permit that can still drop the session later in file or IPS. The default action is just the last rule you forgot to write.

3. Rule order, Monitor, default action

Open Policies → Access Control heading → Access Control, then edit the policy assigned to the device. Each device uses one ACP. Rules are numbered from 1. The system evaluates top-down. Categories and the Mandatory / Default sections do not change that numbering.

Monitor is the exception. It forces connection logging and lets evaluation continue. The next non-Monitor match (or the default action) actually handles the traffic. The connection event Action field is therefore never Monitor — it shows Allow, Trust, Block, Default Action, and so on, plus up to eight Monitor rule names beside the handler.

Decision · Trust, Allow, or Block
Diamond splitting traffic into Block, Allow, and Trust paths
Monitor is not on this diamond. It logs and returns you to the next row. The diamond is the first non-Monitor match.
Flow 2 · first-match with Monitor and default action
Top-down — first non-Monitor match handles the flow New connection zones + 5-tuple + app Match rule N? Yes — read Action all conditions matched No → try rule N+1 until the list ends Default action Block / Trust / IPS / Discovery On a match Monitor log, keep evaluating Trust permit, no deep inspect Block / Block+reset deny, stop inspection Allow permit + optional IPS/file Interactive Block = HTTP warning. Bypass → Allow. Refuse → Block.

Read left then down, then the right stack. A broad Trust at rule 1 means the specific Allow at rule 8 never votes.

The default action handles traffic that was not fastpathed, not Security Intelligence-blocked, not blocked by the decryption policy, and that matched no non-Monitor access control rule. Official options:

Default actionEffectInspection you can attach
Access Control: Block All TrafficBlock, no further inspectionNone. Log at beginning only.
Access Control: Trust All TrafficPermit to destination, no further inspectionNone
Intrusion PreventionAllow if the chosen IPS policy passes itIntrusion + network discovery. No file/malware policy.
Network Discovery OnlyAllowDiscovery only
Inherit from base policyWhatever the parent setDefined in the base. Inheritance of default action is not enforced.
Logging on the default action starts off

Cisco’s policy chapter: logging of connections handled by the default action is initially disabled. Open the cog next to Default Action. For Block All Traffic you can enable Log at beginning of connection only. For Trust / IPS / Discovery you can log beginning, end, or both. Proof does not appear until you flip that switch and deploy.

4. Trust vs Allow vs Block

Pick the action for the job, then place the specific rule above any broader cousin. Cisco’s own caution: application-control rules should sit lower than simple L3/L4 rules because application identity takes packets. Specific networks and IPs belong above general application or URL rows so they are not shadowed.

ActionWhat the flow doesDeep inspectionUse it when
AllowPermit. Still subject to identity and rate limiting.Optional intrusion policy and file / malware policy. File runs before IPS.User or server traffic you actually want inspected.
TrustPermit without file, intrusion, or network discovery.None. Identity and QoS can still apply. Decryption already happened if a decrypt rule matched.High-volume flows you have decided not to inspect. Not a shortcut for “make it work.”
BlockDeny immediately.NoneTraffic that must die. Prefer this over Block with reset on high-rate TCP drops (reset is CPU-heavy).
Block with resetDeny and reset TCP (or ICMP unreachable).None. HTTP response pages cannot display if you reset immediately.When the client must stop retrying now.
Interactive BlockHTTP warning page. Bypass mimics Allow; refuse mimics Block.If the user clicks through, file and IPS can run.User-facing web only. Pair Interactive Block with reset if non-web traffic must reset.
MonitorLog only. Next rule (or default) decides.None by itselfPilot visibility before you cut a Block, or extra logging beside the real handler.
Trust is not “Allow without clicking IPS”

An Allow with no intrusion or file policy still permits discovery on monitored hosts. Trust does not. Cisco also notes that protocols with secondary channels (FTP, SIP) can break if Trust bypasses the inspection that opens those pinholes — change those rules to Allow. And Trust after a decrypt rule still means the session was decrypted first. Uninspected from packet one is prefilter Fastpath, not ACP Trust.

5. Runbook: zones, rules, logging

Primary source for this block: Cisco Secure Firewall Management Center Device Configuration Guide 7.4, chapters Access Control Policies and Access Control Rules.

Side A — Zones and objects (outside the rule editor)

  1. Name the security zones

    A security zone is a named group of interfaces. You assign the zone on the interface (Devices → Device Management → edit the device → Interfaces). Rules then match Source Zones and Destination ZonesINSIDE to OUTSIDE — instead of raw interface names. Same-zone traffic needs an explicit rule if you intend to allow it.

  2. Build the network and port objects you will reuse

    Objects → Object Management. Keep RFC 1918 / lab objects named for the ticket (NET-USERS-10-0-1-0, H-WEB-10-0-2-20). Access Control uses the real (pre-NAT) addresses — do not write the PAT public IP as the destination on an inside-to-outside browse rule. That NAT lesson is next in this course.

  3. Confirm the device already has this ACP

    Each managed device uses one access control policy. On the policy list, open Targeted: n devices and assign before you add rules you will never deploy.

Side B — Policy, rules, actions, logging

  1. Open the policy

    Policies → Access Control heading → Access Control → Edit. Lock the policy if someone else might save over you. New Policy asks for Name and an initial default action (Block all traffic, Intrusion Prevention, or Network Discovery).

  2. Add the specific rule first

    Click Add Rule. Give it a ticket-readable name. Set Action. Fill only the conditions you mean — empty “any” on every tab is how Trust any-any is born. Place specific Block / Allow-with-IPS rows above broad Trust or Allow rows. Application and URL conditions belong lower than simple network/port rows.

  3. Attach inspection only on Allow (or Interactive Block)

    On an Allow rule, select an intrusion policy (and variable set) and, if needed, a file policy. You cannot hang a file policy on the default action. Encrypted payloads skip intrusion and file inspection by default unless you decrypt first.

  4. Turn logging on for the handler

    On the rule: Log at beginning of connection, Log at end of connection, or both. Send events to Firewall Management Center (and syslog if that is the shop standard). Blocked traffic is usually beginning-only — the session never has a useful end. Monitor forces logging even if the eventual handler is quiet.

  5. Set and log the default action

    Bottom of the rule list: pick Access Control: Block All Traffic unless you have a written reason not to. Cog → enable beginning-of-connection logging. If you inherited a Trust-all default from a lab policy, change it before the first production deploy.

https://fmc.lab.example/#policies/access-control/edit/rule
Training mock · not live

Policies → Access Control heading → Access Control → ACP-CAMPUS → Add Rule

Add Rule

General Zones Networks Applications Ports Logging
INSIDE-to-OUTSIDE-HTTPS-IPS
Allow
into Mandatory, above Trust-any
INSIDE
OUTSIDE
Balanced Security and Connectivity
Beginning + End → Management Center
Cancel Add

Placeholder networks only. Source: FMC Device Configuration Guide 7.4 — Create and edit access control rules.

After Add, confirm the new row sits above any Trust or Allow that could also match this HTTPS flow. Then Save and Deploy.

Side C — Deploy, hit counts, first packet

  1. Save and deploy

    Deploy configuration changes to the targeted device. A saved rule that never deployed is a comment in the GUI. Established connections keep the old match until they close (or you clear them with clear conn on FTD — only if tearing those sessions is acceptable).

  2. Read hit counts

    In the policy editor, Analyze → Manage Rule Hit Counts. Zero on the new specific rule plus rising counts on the broad rule above it is the shadow, not a routing problem.

  3. Generate one pilot flow

    From a host in INSIDE (example 10.0.1.50) open HTTPS to a known responder. Then go prove it in connection events — next section — before you call the change done.

6. Prove it: connection events

Primary source: Cisco Secure Firewall Management Center Administration Guide — Connection Logging and Connection and Security-Related Connection Events.

Connection events appear when a connection matches an access control rule or default action that has logging enabled. They also appear for prefilter, decryption, and Security Intelligence blocks. If logging is off on the handler, the session can succeed or fail in silence.

Ops · verification desk
Operations desk monitor with abstract green checkmarks and log lines
Green boxes are not the proof. The named Access Control Rule and Action fields are the proof.
https://fmc.lab.example/#analysis/connections/events
Training mock · not live

Analysis → Connections → Events · last 15 minutes · device FTD-EDGE-01

Connection Events

Initiator / Responder Access Control Rule Action Reason
10.0.1.50 → 203.0.113.80:443 INSIDE-to-OUTSIDE-HTTPS-IPS Allow N/A
10.0.1.50 → 198.51.100.10:22 Default Action Default Action N/A
198.51.100.66 → 10.0.2.20:443 WAN-to-DMZ-BLOCK Block N/A
10.0.1.88 → 203.0.113.25:443 Trust-any + 1 Monitor Rule Trust N/A

Lab IPs (RFC 5737). Columns map to ACPolicy / AccessControlRuleName / AccessControlRuleAction / AccessControlRuleReason.

Row 1 is a pass. Row 4 is the classic miss: Action is Trust, so your IPS rule never ran. Click the Monitor count to see which Monitor rules also matched.

Read these fields on every pilot:

What “done” looks like in the event
Access Control Policy : ACP-CAMPUS
Access Control Rule   : INSIDE-to-OUTSIDE-HTTPS-IPS
Action                : Allow
Ingress Zone          : INSIDE
Egress Zone           : OUTSIDE
Initiator IP          : 10.0.1.50
Responder IP          : 203.0.113.80
Application Protocol  : HTTPS
If Action is Trust or Default Action, stop arguing with IPS

Intrusion and file policies never attached to that handler. Move or tighten the Trust, or write an Allow above it, deploy, and refresh the event. Do not tune Snort for a flow Snort never received.

7. Traps and pilot checklist

SymptomLikely causeWhat you prove
Specific Allow-with-IPS has zero hits; traffic still works Broader Trust or Allow above it (shadow / preemption) Connection event names the broad rule. Hit count rises on that row, not yours. Enable Analyze → Show Rule Conflicts.
Flow allowed, no connection event Logging off on the matching rule and on the default action Enable beginning and/or end logging, deploy, replay one session. Monitor can force a log while you decide.
Default Action = Block, still no row Default-action logging starts disabled; Block can log beginning only Cog on Default Action → Log at beginning of connection → Management Center.
No IPS or malware events on “allowed” HTTPS Action is Trust, or Allow with no inspection, or payload still encrypted Event Action field. Decrypt policy match. Intrusion-policy icon on the Allow rule.
L7 Block (application / URL) lets a few packets through Expected — AppID needs early packets; LINA cannot drop SYN on application identity Cisco TAC note 212321. Use an L3/L4 Block if the first SYN must die. Set “Intrusion Policy used before Access Control rule is determined” for those early packets.
FTP / SIP dies after you Trust it Secondary channel never opened because Trust skipped inspection Change Trust → Allow (Cisco Trust-action note).
Action is Fastpath, ACP rule never named Prefilter Fastpath handled the flow before ACP Prefilter Policy and Tunnel/Prefilter Rule columns. First-match across prefilter vs ACP is the first match applied.
Pilot checklist

Knowledge check

Six judgment questions. Use the rule-order figure, the action table, and the connection-event fields. Check answers when you are done.

Q1

A broad Trust any-any sits above INSIDE-to-OUTSIDE-HTTPS-IPS (Allow + Balanced Security and Connectivity). A user on INSIDE opens HTTPS. What happens?

Correct: d. First-match, top-down. Trust handles the flow and does not pass it to file or intrusion policies. Re-read rule order.
Q2

When must you choose Allow instead of Trust?

Correct: b. Allow can attach intrusion and file policies. Trust cannot. Skipping Snort from packet one is prefilter Fastpath, not Trust. Monitor is log-and-continue. Interactive Block is the warning page. Re-read Trust vs Allow vs Block.
Q3

The ACP default action runs when which statement is true?

Correct: c. Monitor does not consume the flow. Evaluation walks the whole numbered list, then the default action. NAT is a different table; ACP still uses real IPs. Re-read default action.
Q4

You set the default action to Access Control: Block All Traffic and need proof in FMC. What logging is available?

Correct: a. Default-action logging starts off. A Block default can log beginning only. Re-read the logging callout in section 3 and the proof steps in section 6.
Q5

A connection matches Monitor rule M1 and then Allow rule A2. What does the connection event Action field show?

Correct: b. Cisco: the Action associated with a Monitor match is never Monitor. The next non-Monitor rule handles the flow. The rule field can show A2 + 1 Monitor Rule. Re-read Monitor and event fields.
Q6

Pilot HTTPS is allowed, but Analysis → Connections is empty for that 5-tuple. What is the first check?

Correct: b. Events are generated when the handler has logging on. Variable sets and Interactive Block do not create a connection row by themselves. Re-read prove it and the traps table.

Sources

Related: FTD / FMC fundamentals · Interface modes · FTD NAT · Snort 3 IPS · FTD session factory · FTD evidence desk · FTD interview Q&A