Posts Tagged NSG
Azure Policy – Deny creation of virtual machines without IP restriction across all Azure subscriptions
Posted by Ashish Gupta in Azure, Security on December 2, 2020
TLDR;
Public Azure virtual machines without any IP restriction is always an attack vector which may result in compromise of the VM and further lateral movement in Azure infrastructure.
Azure policy may be used to deny any attempt to even create the virtual machines without IP restriction.
This blog post has step-by-step process on how to implement an Azure policy on ALL your subscriptions covering IP restriction for ALL your future virtual machines.
What is Azure policy:
Azure policy is a service inside Azure that allows configuration management.It executes every time a new resource is added or an existing resource is changed. It has a set of rules, and set of actions. The Azure policy could report the event as non-compliant or even deny the action altogether if the rules are not matched.
Azure policy is an excellent way to enforce and bake-in security and compliance in the Azure infrastructure.
As you see in the below picture, Azure policy is an integral part of Azure Governance – mainly consisting of Policy Definitions and Policy Engine which works directly with Azure Resource Manager (ARM).
Image source : https://www.microsoft.com/en-us/us-partner-blog/2019/07/24/azure-governance/
Summary:
If the Azure virtual machines need to be accessible over internet, Its important to restrict access its access ONLY from your corporate public IP addresses.
This will help in couple of situations :
a) Limit external access from an attacker.
b) Limit Insider threat or misuse from an employee.
The IP address restriction could be created while creating the virtual machine using network security groups.
However, enforcing this on the policy level by the administrator would ensure we are not dependent on individual team’s best judgment.
Process:
As a best practice, always test the policy in audit mode before switching to deny mode. In this walkthrough, we will follow below steps :
1) Create the policy definition.
2) Apply the policy (Policy Assignment) in audit mode
3) Test with Audit mode
3) Apply the policy (Policy Assignment) in deny mode
4) Test with Deny mode
Create the policy definition
On the search bar, search for “policy” and click on it.
Click Definitions and then click Policy Definition
Click the … button under “Definition Location” to select the management group. If you want to apply this policy to all subscriptions, don’t select any subscription.
To apply this policy to a specific subscription, select the desired subscription under the subscription dropdown.
Policy Details:
Name:
Deny creation of virtual machine without access restricted only from company’s public IP addresses
(on-prem/VPN)
Description (Change the IP address list below):
Deny creation of virtual machine which does not have external company IP addresses restriction in the network security group.
One or more of the below corporate IP addresses must be specified in the network security group when creating the virtual machine. Otherwise, the validation will fail and the virtual machine will not be created.
Below is the valid public corporate IP addresses list :
208.114.51.253
104.104.51.253
108.104.51.253
Category : Network
Policy Rule:
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Network/networkSecurityGroups" }, { "count": { "field": "Microsoft.Network/networkSecurityGroups/securityRules[*]", "where": { "allOf": [ { "anyof": [ { "field": "Microsoft.Network/networkSecurityGroups/securityRules[*].sourceAddressPrefix", "notIn": [ "208.114.51.253", "104.104.51.253", "108.104.51.253" ] } ] } ] } }, "greater": 0 } ] }, "then": { "effect": "[parameters('effect')]" } }, "parameters": { "effect": { "type": "String", "metadata": { "displayName": "Effect", "description": "The effect determines what happens when the policy rule is evaluated to match" }, "allowedValues": [ "audit", "deny" ], "defaultValue": "audit" } } }
Policy Assignment
Under policy > definition, go to the newly created policy definition.
Click Assign.
Provide an assignment name and description
Name:
Deny creation of virtual machine without access restricted only from company’s public IP addresses
(on-prem/VPN)
Description (Change the IP address list below):
Deny creation of virtual machine which does not have external company IP addresses restriction in the network
security group.
One or more of the below corporate IP addresses must be specified in the network security group when creating the virtual machine. Otherwise, the validation will fail and the virtual machine will not be created.
Below is the valid public corporate IP addresses list :
208.114.51.253
104.104.51.253
108.104.51.253
Under “Parameters” tab, select “audit” in the Effect dropdown and click “Review+Create”
On the review page, click “Create” .
The policy assignment is created. Please note It takes about 30 minutes to take effect.
Test 1 – Audit mode :
Create virtual machine with RDP allowed from any external IP Address
With the policy in Audit mode, let us create a new virtual machine with RDP open to any external IP address.
When the policy is in the audit mode, the virtual machine creation is successful but Azure policy adds a Microsoft.Authorization/policies/audit/action
operation to the activity log and marks the resource as non-compliant.
Compliance State:
Policy > Compliance
Test 2 – Deny mode
Create virtual machine with RDP allowed from any external IP Address
We need to change the effect mode to “deny” in our policy assignment.
Head over to Policy > Assignments > Click on the policy we created
Click “Parameters” tab. Select “deny” from the dropdown and continue to save the policy assignment.
Attempt to create a virtual machine with the same settings as we did before.
When you proceed to create the virtual machine, the final validation will fail with an error message (left side) which when clicked will show which policy disallowed this action.
Clicking on the policy would show the policy assignment with details showing why the policy disallowed this action.
When the policy is in the deny mode, the virtual machine creation is successful but Azure policy adds a Microsoft.Authorization/policies/deny/action
operation to the activity log and marks the resource as non-compliant.
Under activity logs, you can see the deny action.:
Summary :
Azure policy is an excellent way of enforcing compliance in Azure infrastructure. In this blog post we saw how we can apply Azure policy to deny creation of virtual machines without any IP restriction.
For further readings :
Azure policy docs : https://docs.microsoft.com/en-us/azure/governance/policy/overview
Azure policy Github : https://github.com/Azure/azure-policy