Home› Blog› AWS Daily Intelligence #59 - The VPCs that widen y…
AWS Daily Intelligence AWS

AWS Daily Intelligence #59 - The VPCs that widen your firewall's trust do not have to send it traffic

Verified against current vendor documentation on 22 October 2026. Pricing, limits and API behaviour were checked against the official docs on that date. Cloud services change fast — if you are reading this much later, treat the specifics as a starting point and re-check the linked sources.

Network Firewall can now check that a destination IP address is one your Route 53 Resolver actually returned, which extends domain filtering to protocols that carry no domain name. The thing to read before enabling it is which resolutions count as valid.

“This includes VPCs that are associated with the rule group but don't send traffic through this firewall. A destination IP address that any associated VPC resolved for a domain is considered resolved for all of them.”

Executive summary

The gap being closed is specific and old: “A standard domain rule matches on the host name that a client asserts —the TLS Server Name Indication (SNI) or the HTTP Host header.” A client controls both of those. So: “Resolved IP validation adds a check on the provenance of the destination IP address: whether your VPC's Amazon Route 53 Resolver returned this IP address when it resolved the domain.”

That closes one hole and opens one door. “This closes the gap where a client sets Host: allowed.example.com but connects to an unrelated IP address.” And: “Because the check is based on the destination IP address rather than on an application-layer header, it also extends domain-based rules to traffic that carries no domain name at all.” That is where SFTP and SSH come in.

What decides whether a destination passes is not your firewall's configuration but a DNS Firewall rule group association, and the scope of that association is wider than most people will assume.

What changed

AspectWhat AWS says
What is checked“the provenance of the destination IP address” — whether your Resolver returned it
Why it mattersStandard domain rules match “the host name that a client asserts”
New reach“traffic that carries no domain name at all”; the announcement names “SFTP and SSH”
Two levelsPolicy level alone, or rule level on top — the rule level “requires the policy-level setting”
EnforcementALERT, DROP or REJECT, required
Validation scopeThe VPCs associated with the referenced DNS Firewall rule group
Evaluation“once for each connection, on the connection's first packet”
Cost“at no additional charge”, all commercial Regions where both services are available

Architecture

Diagram: how AWS Network Firewall resolved IP validation works, what sets its validation scope, and the two conditions under which legitimate traffic fails the check. AWS announced that Network Firewall now supports IP validation, extending domain-based filtering beyond HTTP and HTTPS to protocols such as SFTP and SSH, by validating that a connection's destination IP address was resolved through the VPC's Amazon Route 53 VPC Resolver, closing security gaps where clients could bypass domain rules, and that it is available in all AWS commercial regions where Network Firewall and Route 53 Resolver DNS Firewall are available at no additional charge. The gap being closed is specific: a standard domain rule matches on the host name that a client asserts, the TLS Server Name Indication or the HTTP Host header, both of which the client controls. Resolved IP validation adds a check on the provenance of the destination IP address, namely whether the VPC's Route 53 Resolver returned that IP address when it resolved the domain, which closes the gap where a client sets a Host header naming an allowed domain but connects to an unrelated IP address. Because the check is based on the destination IP address rather than on an application-layer header, it also extends domain-based rules to traffic that carries no domain name at all, which is how protocols other than HTTP and HTTPS become filterable. The feature works at two levels. The policy level is a firewall policy setting that verifies the Resolver resolved the connection's destination IP address for a domain, any domain, and applies an enforcement action to connections that fail; it can be used on its own. The rule level matches specific domains using the AWS_ROUTE_53_RESOLVED_DOMAIN domain list target type or the aws_route_53_resolved_domain Suricata rule keyword, and requires the policy-level setting. The central finding concerns what sets the validation scope. AWS states that the validation scope is the set of VPCs associated with the Amazon Route 53 Resolver DNS Firewall rule group referenced in the policy, that every VPC associated with it contributes its resolutions to a single shared pool, and that the firewall validates against that whole pool. Critically, this includes VPCs that are associated with the rule group but do not send traffic through this firewall, and a destination IP address that any associated VPC resolved for a domain is considered resolved for all of them. So the scope of what the firewall trusts is set by a rule group association rather than by traffic flow, and AWS documents the consequence as an explicit warning: do not reuse that rule group for other firewalls or for unrelated deployments, because sharing a rule group across unrelated deployments widens what each firewall accepts, and a separate rule group should be used for each firewall deployment. The second way legitimate traffic fails is Availability Zone scoping. Resolutions are recorded for each Availability Zone and validation is scoped to the zone, so a firewall endpoint validates against the resolutions recorded in its own Availability Zone. Multi-zone deployments work where routing is zone-aligned, meaning clients in a zone reach the firewall endpoint in that same zone. A connection can cross zones to reach a firewall endpoint, in which case the firewall cannot tell that the client is in a different zone, the connection fails validation as unresolved, and Network Firewall applies the configured Action to it. The documented exception is a firewall attached through a transit gateway, which carries the client's zone with the traffic, and AWS recommends that approach for centralized deployments inspecting traffic from multiple zones. On evaluation timing, Network Firewall evaluates resolved IP validation once for each connection, on the connection's first packet, using the connection's source IP address, which must be in the configured scope, and its destination IP address, and the result applies for the life of the connection in the originating client-to-server direction. On settings, Action is required with valid values ALERT, DROP or REJECT: ALERT tags the matching connection in the firewall's flow logs without blocking it and requires that logging be enabled, DROP silently blocks the connection, and REJECT blocks the connection and sends a TCP reset to the client, with Reject applying to TCP while Network Firewall drops non-TCP traffic. The DNS Firewall rule group ID is required, must match the pattern beginning rslvr-frg, and changing it swaps the association asynchronously, with further changes to resolved IP validation rejected until the policy returns to the ACTIVE state. A DNS expiry exception policy is required, with valid values CONTINUE, DROP or REJECT, where CONTINUE treats an expired resolution as still valid; AWS notes that resolved IP validation keeps a resolution in the resolved IP cache for longer than the DNS record's time to live, so a short TTL alone does not cause connections to fail. Source IP ranges is optional, accepting up to 100 IPv4 or IPv6 addresses or CIDR ranges, and if no ranges are specified validation applies to the firewall's VPC CIDR ranges, with that scope applying to the policy-level check only. For rollout, AWS recommends setting Action to ALERT and keeping it there for about 24 hours before switching to DROP or REJECT, because resolved IP validation recognises a destination only after the domain has been resolved through the VPC Resolver, which gives clients time to refresh their DNS caches and repopulate resolutions, while watching flow logs and metrics and switching to enforcement after the rate of unresolved flows settles. The recommended actions are to use a separate DNS Firewall rule group for each firewall deployment and to audit which VPCs are currently associated with the rule group a policy references, since that list and not the traffic pattern defines what the firewall accepts; to check whether routing is zone-aligned before enabling enforcement, or to use a transit gateway attachment for centralized inspection; to start in ALERT with logging enabled for about 24 hours; and to decide the DNS expiry exception policy deliberately, since CONTINUE trades strictness for availability.
What the firewall trusts is set by a rule group association, not by what flows through it.

The validation scope is an association, not a traffic path

“The validation scope is the set of VPCs that are associated with the Amazon Route 53 Resolver DNS Firewall rule group that you reference in the policy.”

“Every VPC that is associated with it contributes its resolutions to a single shared pool, and the firewall validates against that whole pool.”

And the consequence, which AWS spells out rather than leaving to be discovered: “This includes VPCs that are associated with the rule group but don't send traffic through this firewall.”

So a VPC that has nothing to do with this firewall — attached to the same DNS Firewall rule group for DNS filtering reasons, by someone solving a different problem — contributes resolutions that this firewall will accept. The recommendation page states the risk in its own words: “Sharing a rule group across unrelated deployments therefore widens what each firewall accepts. Use a separate rule group for each firewall deployment.”

Worth noting what kind of object the rule group is. A DNS Firewall rule group is usually associated with VPCs to apply DNS filtering, and those associations are often managed centrally and by a different team from whoever owns a Network Firewall policy. This feature gives that association a second meaning.

Two ways legitimate traffic fails the check

Cross-zone traffic. “Resolutions are recorded for each Availability Zone, and validation is scoped to the zone”, and: “A connection can cross zones to reach a firewall endpoint. In that case, the firewall can't tell that the client is in a different zone. The connection fails validation as unresolved, and Network Firewall applies your Action setting to it.”

With Action set to DROP, that is legitimate traffic silently blocked for a routing reason rather than a security one. The documented remedy: “The exception is a firewall attached through a transit gateway, which carries the client's zone with the traffic.”

A cold cache. Validation only knows destinations the Resolver has returned, so at the moment you switch it on, resolutions clients are already using may not be recorded. Which is why AWS gives a rollout instruction rather than leaving it to you: “set Action to ALERT and keep it there for about 24 hours before you switch to DROP or REJECT”, and “switch to enforcement after the rate of unresolved flows settles”.

Evaluated once, for the life of the connection

“Network Firewall evaluates resolved IP validation once for each connection, on the connection's first packet… The result applies for the life of the connection, in the connection's originating (client-to-server) direction.”

That is a sensible design for a stateful firewall and it has one consequence worth holding: a long-lived connection carries whatever verdict it got at setup. A connection established while a resolution was valid is not re-checked when that resolution changes.

The expiry setting is a required choice between strictness and availability

“DNS expiry exception policy (required) – The action to take when a recorded resolution has expired from the resolved IP cache but the firewall still sees traffic to that IP address. Valid values: CONTINUE | DROP | REJECT. CONTINUE treats the expired resolution as still valid.”

There is no default to fall back on — it is required, so you pick. And AWS removes one worry up front: “Resolved IP validation keeps a resolution in the resolved IP cache for longer than the DNS record's time to live (TTL), so a short TTL alone doesn't cause connections to fail.”

Business value

The old shape of egress domain filtering was that it worked where there was a header to read. HTTP and HTTPS have one; SFTP, SSH and most other protocols do not. Checking IP provenance instead of a header is what makes the rest of your outbound traffic filterable by domain at all, and the announcement names the cases: “protocols such as SFTP and SSH”.

The second gain is against the client's own assertion. A rule that matches “the host name that a client asserts” trusts the client. Tying the decision to what your Resolver returned moves the source of truth from the connection to your own DNS infrastructure, which is the right place for it.

Security considerations

The shared pool is the thing to get right. Everything else in this feature tightens control; the rule group association can loosen it, and the loosening is not determined by the firewall's own configuration. The policy names the rule group by ID — “DNS Firewall rule group ID (required)” — while the VPC associations that define the scope live on the Route 53 Resolver side, managed separately.

Scope the source side too. “Source IP ranges (optional) – The client source IP address ranges whose connections are validated. Specify up to 100 IPv4 or IPv6 addresses or CIDR ranges. If you don't specify any ranges, validation applies to the firewall's VPC CIDR ranges.” The default is the firewall's own VPC, which is a reasonable default and worth knowing is a default rather than everything.

ALERT needs logging on to mean anything. “ALERT tags the matching connection in the firewall's flow logs without blocking it, and requires that you enable logging.” An alert-mode rollout with logging off is a rollout that tells you nothing.

Cost considerations

“at no additional charge” for the validation itself. The costs that appear are the ones the rollout requires: flow logging enabled during the alert window, and Route 53 Resolver DNS Firewall in place, since the feature references one of its rule groups.

Operational considerations

Changing the rule group is not instant. “Changing this value swaps the DNS Firewall rule group association and is processed asynchronously. While a swap is in progress, further changes to resolved IP validation are rejected until the policy returns to the ACTIVE state.” So correcting a mis-scoped rule group is a single operation you then wait on, which matters if you are doing it under pressure.

REJECT does not apply uniformly. “REJECT blocks the connection and sends a TCP reset to the client. Reject applies to TCP. Network Firewall drops non-TCP traffic.” So for UDP the behaviour is a silent drop whatever you chose, and a client sees a timeout rather than a reset.

Zone alignment becomes a security control. Routing that crosses zones produces failed validations, so the question "is our routing zone-aligned" stops being purely about latency and cost.

Tradeoffs

What you gainWhat it costs
Domain filtering for protocols with no domain in themA dependency on clients using the VPC Resolver
A check that does not rest on what the client assertsValidation scope set by a rule group association, not by traffic
Policy level usable on its ownRule-level domain matching requires the policy setting first
Per-zone recording, which keeps the data localCross-zone connections fail as unresolved
One decision per connection, cheap at scaleA long-lived connection keeps its original verdict

Implementation guidance

  1. Use a dedicated DNS Firewall rule group for this firewall. AWS says it plainly: “Use a separate rule group for each firewall deployment.”
  2. List the VPCs currently associated with the rule group you plan to reference. That list, not your traffic pattern, is what the firewall will accept.
  3. Check zone alignment before enabling enforcement, or use a transit gateway attachment for centralized inspection.
  4. Enable flow logging, then set ALERT and leave it for about 24 hours.
  5. Watch the unresolved-flow rate and switch to DROP or REJECT only once it settles.
  6. Choose the DNS expiry exception policy deliberately — it is required, and CONTINUE trades strictness for availability.
  7. Set source IP ranges if the firewall's own VPC CIDRs are not the scope you want.

Best practices

  • Treat the rule group association as part of your firewall policy, because it is, and review it when either side changes.
  • Do not run the alert window with logging off. AWS requires logging for ALERT to record anything.
  • Prefer the policy level first, since it works alone and the rule level cannot be used without it.
  • Expect UDP to be dropped rather than rejected, regardless of the Action you chose.
  • Re-test long-lived connections after changing anything, since each one was decided on its first packet.

Who should adopt this and when

Soon, if you egress SSH or SFTP and have wanted domain rules for it. That is the case the feature exists for and there is no charge for the validation.

Soon also, if you already rely on SNI or Host matching — because that is the control this closes a documented gap in, where a client asserts an allowed name and connects elsewhere.

Carefully, if your DNS Firewall rule groups are shared or centrally managed. The scope question has to be answered before enforcement, and the answer lives outside your firewall.

With a transit gateway, if your inspection is centralized across zones — otherwise cross-zone connections will fail validation.

Key takeaways

  • The check is on “the provenance of the destination IP address” rather than a header the client controls.
  • It reaches “traffic that carries no domain name at all”, which is how SFTP and SSH become filterable by domain.
  • Validation scope is the VPCs associated with the referenced DNS Firewall rule group, including ones that “don't send traffic through this firewall”.
  • AWS's own warning: “Sharing a rule group across unrelated deployments therefore widens what each firewall accepts.”
  • A cross-zone connection “fails validation as unresolved” unless the firewall is attached through a transit gateway.
  • Start in ALERT for “about 24 hours” with logging enabled, because validation only knows what the Resolver has already returned.
  • Evaluated “once for each connection, on the connection's first packet”, and the verdict lasts the connection's life.

Official AWS references

Comments

How was your experience?
Your feedback helps improve this site.
PoorExcellent