TECHRUNBOOK · PRACTICAL GUIDE

Azure RDP Blocked by NSG: Troubleshooting Runbook

Diagnose Azure Windows VM RDP failures caused by subnet or NIC Network Security Groups, rule priority and source restrictions.

Practical RunbookTechnical Troubleshooting
Practical Runbook10 StepsIssues → Solutions → Recommendations
Have a question about this runbook?Post your issue to the TechRunbook Community and get help from other IT professionals.
Ask the Community →
!Issue

Diagnose Azure Windows VM RDP failures caused by subnet or NIC Network Security Groups, rule priority and source restrictions.

Solution

Start with Confirm the RDP symptom and work through the six diagnostic checks in order.

Recommendations

Record results before changing configuration and validate the original symptom after each controlled change.

TechRunbook approach: Test one dependency at a time, record the result and only then change the configuration.

Quick checks

Start with the basic checks in this runbook before moving to deeper troubleshooting.

  • Confirm the affected service or component is available.
  • Check recent configuration or connectivity changes.
  • Run the relevant commands and compare the result with the expected state.
01

Confirm the RDP symptom

Determine whether RDP times out, is refused, or works only from selected source networks.

02

Run IP Flow Verify

Use Network Watcher IP Flow Verify to identify whether inbound TCP 3389 is denied by an NSG.

03

Review effective security rules

Inspect the effective security rules applied through both NIC and subnet NSGs.

04

Check rule priority

Confirm the intended allow rule is evaluated before any matching deny rule.

05

Check Windows Firewall and TermService

If Azure permits the flow, inspect Windows Firewall and the Remote Desktop service inside the VM.

06

Retest securely

Retest from the approved source and use Azure Bastion or JIT access where appropriate instead of broad public RDP exposure.

07

Useful commands

Run these checks from an appropriate administrative session and replace example values with your environment.

RDP port

Test-NetConnection <vm-fqdn-or-ip> -Port 3389

Effective NSGs

az network nic list-effective-nsg --resource-group <resource-group> --name <nic-name>
08

Quick troubleshooting path

Use this sequence to isolate the failing dependency before changing production configuration.

  1. Confirm the RDP symptom → Determine whether RDP times out, is refused, or works only from selected source networks.
  2. Run IP Flow Verify → Use Network Watcher IP Flow Verify to identify whether inbound TCP 3389 is denied by an NSG.
  3. Review effective security rules → Inspect the effective security rules applied through both NIC and subnet NSGs.
  4. Check rule priority → Confirm the intended allow rule is evaluated before any matching deny rule.
  5. Check Windows Firewall and TermService → If Azure permits the flow, inspect Windows Firewall and the Remote Desktop service inside the VM.
  6. Retest securely → Retest from the approved source and use Azure Bastion or JIT access where appropriate instead of broad public RDP exposure.
09

What good troubleshooting looks like

Good infrastructure troubleshooting is evidence-driven. Capture the original state, test the dependency that can prove or disprove your hypothesis, make the smallest safe change and repeat the original test.

Example workflow
Symptom → hypothesis → direct test → result → controlled change → validation → documentation
10

Frequently asked questions

What should I check first?

Start with the exact symptom and validate the dependency closest to the failure in this Azure runbook.

Should I change production configuration immediately?

No. Capture the current state first, test the suspected dependency and make one controlled change at a time.

How should I document the fix?

Record the symptom, commands used, result, configuration change and validation result so the procedure can be repeated.

+

Related TechRunbook guides

Was this runbook helpful?

↑ Top