Skip to main content
emnode
Compliance

Protect Azure networks with DDoS and firewalls

One capability across the network edge: make sure every internet-facing virtual network can absorb a volumetric attack, that traffic crossing a trust boundary is inspected by a firewall, and that the same protection extends to host and VM networking on Azure Local.

14 min·10 sections·AZURE

Last reviewed

Protecting the network edge: the basics

What does an under-protected Azure network actually look like?

A virtual network is the perimeter of everything you run in Azure, and exposure at the edge shows up in a handful of distinct shapes rather than one setting. An internet-facing virtual network can sit on the free DDoS Basic tier, which absorbs only the largest platform-wide attacks and leaves a targeted volumetric or protocol attack to overwhelm your own public IPs. Traffic can flow in and out of a virtual network with no firewall in the path, so nothing inspects it, logs it, or denies it by default. On Azure Local, the on-premises HCI platform managed through Azure, host and VM networking can run without the default-deny and microsegmentation rules that keep an attacker from moving laterally once inside. Each is its own Defender for Cloud recommendation, but the underlying risk is the same: a network boundary that more of the internet can reach, flood, or pivot through than you meant.

Microsoft Defender for Cloud turns each of these into its own recommendation, which is why one network-heavy subscription can fail several edge checks at once. 'Azure DDoS Protection Standard should be enabled', 'Virtual networks should be protected by Azure Firewall' and 'Host and VM networking should be protected on Azure Local systems' read as separate problems on the report, but they are one job: make the network edge able to absorb an attack, inspect what crosses it, and contain anything that gets in. The first targets virtual networks that hold public-facing resources such as an Application Gateway with a public IP. The second targets virtual networks with no firewall inspecting their traffic. The third extends the same defence-in-depth to the hybrid Azure Local estate.

Most of this gap is drift, not intent. A virtual network created before DDoS Network Protection was budgeted for, a spoke that peers straight to the internet because the hub firewall was never built, an Azure Local cluster deployed before the network security policies were switched on. The work is to find every internet-facing or trust-crossing network that is under-protected, decide where each control genuinely belongs, and close the gap with a plan the rest of the estate can share.

In this lesson you will learn how Azure expresses protection at the network edge, how to find every internet-facing or trust-crossing network that is under-protected, and how to close the gap without paying for protection you do not need. The Controls this lesson covers section lists every Defender for Cloud recommendation in this capability, each linking to a deep page with the exact check and a copy-and-paste fix.

Fun fact

The flood that set the record, then was beaten the next year

Azure's own DDoS protection teams have publicly reported mitigating some of the largest attacks ever recorded, including multi-terabit-per-second floods aimed at single customers. The striking part is the cadence: each record-setting attack tends to be eclipsed within months as attackers rent ever larger botnets, so a network that comfortably absorbs today's typical attack on the free tier can be flat on its back against next quarter's. That is the case for the Network Protection tier: it brings adaptive, traffic-profiled mitigation and cost protection that scale with the threat, rather than the fixed, platform-wide-only shielding of the free Basic tier.

Finding edge exposure across a subscription

Sam is the security lead at a scale-up preparing for its first ISO 27001 audit. Defender for Cloud shows network findings spread across several virtual networks in two subscriptions: some hold public-facing resources with no DDoS plan, others carry traffic with no firewall in the path.

Rather than work the findings one by one, Sam starts by listing which virtual networks actually carry DDoS Network Protection today, so the genuinely internet-facing networks can be separated from internal ones before any spend is committed.

Start by listing each virtual network and whether DDoS Network Protection is enabled on it. The unprotected internet-facing ones are the priority.

$ az network vnet list --query "[].{name:name, ddos:enableDdosProtection}" -o table
Name Ddos
------------------ ------
vnet-payments-prod False
vnet-batch-internal False
# vnet-payments-prod fronts a public payment portal and has no DDoS plan. Protect it first.

An internet-facing virtual network with DDoS Network Protection off is the highest-value target. Protect the public-facing networks before the internal ones.

How Defender for Cloud decides a network is under-protecteddeep dive

The three recommendations resolve to different properties and have deliberately different scope. 'Azure DDoS Protection Standard should be enabled' looks at virtual networks that contain public-facing resources, specifically those with an Application Gateway and public IPs, and flags any where the virtual network is not associated with a DDoS protection plan ('enableDdosProtection' is false). DDoS Basic is the free, always-on platform default that absorbs only large platform-wide attacks; the Network Protection tier, formerly called Standard, adds per-resource adaptive tuning, attack telemetry, alerting and cost protection, and is what this control wants enabled.

'Virtual networks should be protected by Azure Firewall' looks for virtual networks whose traffic is not routed through an Azure Firewall, and its related policy is 'All Internet traffic should be routed via your deployed Azure Firewall'. In practice the firewall sits in a hub virtual network, the spokes peer to the hub, and a user-defined route sends 0.0.0.0/0 to the firewall's private IP so all internet-bound and cross-boundary traffic is inspected, logged and denied by default rather than flowing direct. 'Host and VM networking should be protected on Azure Local systems' is the hybrid extension: it checks that the network security policies, the default-deny inbound rules and microsegmentation implemented as five-tuple stateful firewall rules at each VM's virtual switch port, are switched on for the Azure Local cluster.

Defender for Cloud evaluates these against the Microsoft Cloud Security Benchmark on a periodic cycle, so a fix does not flip the recommendation to Healthy instantly. The control-plane change itself, associating a DDoS plan or attaching a route table, is immediate, but the posture catches up on the next assessment. The strongest position pairs each enabled control with an Azure Policy backstop: a policy that audits or modifies virtual networks to require DDoS protection means no new internet-facing network slips out from under the plan, turning a point-in-time fix into a standing guarantee.

What is the impact of leaving the edge under-protected?

The direct impact splits by control. Without DDoS Network Protection, a targeted volumetric or protocol attack against an internet-facing public IP can saturate it and take the service offline, and on the free Basic tier you have neither the adaptive mitigation tuned to your traffic nor the cost protection that absorbs the scale-out charges an attack can trigger. Without a firewall in the path, traffic crossing a trust boundary flows uninspected: there is nothing to deny it by default, nothing to apply application-level rules, and nothing logging it for the investigation you will need later. On Azure Local without host and VM network protection, an attacker who reaches one VM can move laterally to the next because the default-deny and microsegmentation rules that would have fenced each workload are not in force.

The second-order impact is blast radius and time-to-detect. An inspected, default-deny edge shrinks the attack surface to the routes you actually operate and gives you the logs to see an intrusion early; an open edge leaves you defending everything and discovering problems late. A flood that takes a public service down is not only lost revenue for the hours it lasts, it is the reputational hit of a visible outage.

On the compliance side, every modern framework, ISO 27001, SOC 2, PCI DSS and the UK and EU regimes, expects evidence that internet-facing services are protected against denial-of-service and that traffic crossing trust boundaries is filtered and logged. A passing set of these edge recommendations across every subscription, including the Azure Local systems, is a clear and defensible artefact to hand an auditor.

How do you protect the edge safely and efficiently?

Work the capability as one loop rather than chasing individual findings. The order matters: decide where each control genuinely belongs before you commit spend, so you protect the internet-facing networks and real trust boundaries without paying for protection on networks that do not face the internet.

1. Inventory every network by exposure

List the virtual networks that hold public-facing resources and lack a DDoS plan, the networks whose traffic is not routed through a firewall, and the Azure Local clusters without host and VM network protection. Treat this inventory as the source of truth, not the Defender finding count, because one network can trigger several recommendations at once.

2. Separate internet-facing from internal

DDoS Network Protection belongs on networks that face the internet, not on purely internal ones. Decide which networks genuinely carry public IPs and customer traffic. Those justify the plan today; internal-only networks generally do not, and protecting them uniformly is wasted spend.

3. Protect with shared resources, highest impact first

Create one DDoS protection plan and bring every internet-facing network under it, since a single plan can be shared across every subscription in the tenant, its fixed monthly charge covering up to a hundred public IP addresses. Stand up one Azure Firewall in a hub, peer the spokes to it, and route 0.0.0.0/0 through it so traffic crossing a boundary is inspected and denied by default. Switch on the network security policies for each Azure Local cluster. Prioritise the customer-facing and revenue networks first.

4. Ratchet it shut with Azure Policy

Assign the built-in policy that audits or modifies virtual networks to require DDoS protection, and the policy that requires internet traffic to route via Azure Firewall, so no new internet-facing network is created outside the plan or outside the inspected path. Back this with the Azure Local network protection policy, so the safe configuration is enforced rather than merely encouraged.

# Create one shared DDoS protection plan, then bring the internet-facing
# virtual networks under it. A single plan can be shared across every
# subscription in the tenant; its fixed monthly charge covers up to 100
# public IP addresses.
RG=net-hub-rg
LOC=uksouth
az network ddos-protection create \
  --resource-group "$RG" \
  --name ddos-plan-shared \
  --location "$LOC"

for vnet in vnet-payments-prod vnet-web-prod; do
  az network vnet update \
    --resource-group "$RG" \
    --name "$vnet" \
    --ddos-protection true \
    --ddos-protection-plan ddos-plan-shared
  echo "$vnet: associated with shared DDoS Network Protection plan"
done

# Stand up a Premium Azure Firewall policy in the hub with IDPS and
# threat intelligence both in Deny mode (deploy the firewall + route
# 0.0.0.0/0 to its private IP from each spoke to complete the path).
az network firewall policy create \
  --resource-group "$RG" \
  --name hub-fw-policy \
  --location "$LOC" \
  --sku Premium \
  --threat-intel-mode Deny \
  --idps-mode Deny

# Ratchet it shut: assign the built-in policy that requires DDoS protection
# on virtual networks. Look the definition up by its exact display name so
# no GUID is hardcoded.
pid=$(az policy definition list \
  --query "[?displayName=='Virtual networks should be protected by Azure DDoS Protection'].name" -o tsv)
az policy assignment create \
  --name require-vnet-ddos \
  --policy "$pid" \
  --scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Quick quiz

Question 1 of 5

Defender for Cloud shows findings across DDoS protection, Azure Firewall and Azure Local host networking on several networks. What is the most efficient way to think about them?

You can now treat the Azure network edge as one capability rather than a scatter of findings: inventory which networks face the internet or cross a trust boundary under-protected, separate internet-facing from internal, protect with a shared DDoS plan and a hub firewall highest-impact first, extend the same posture to Azure Local, and ratchet the estate shut with Azure Policy. The Controls this lesson covers section below links every recommendation in this group to its deep page and fix.

Back to the library

Controls this lesson covers

One capability, many Microsoft Defender for Cloud recommendations. This lesson is the shared playbook; each control below keeps its own deep page with the exact check, severity and a copy-and-paste fix.