Use the Conformity Knowledge Base AI to help improve your Cloud Posture

Check for Unrestricted MongoDB Access

Trend Micro Cloud One™ – Conformity is a continuous assurance tool that provides peace of mind for your cloud infrastructure, delivering over 750 automated best practice checks.

Risk Level: High (not acceptable risk)
Rule ID: Network-021

Ensure that Microsoft Azure network security groups (NSGs) do not allow unrestricted access on TCP ports 27017, 27018 or 27019 in order to protect against attackers that use brute force methods to gain access to Azure virtual machines associated with these NSGs. MongoDB Database is a free and open-source cross-platform document-oriented NoSQL database.

This rule resolution is part of the Conformity Security & Compliance tool for Azure.

Security

Allowing unrestricted access to your Azure virtual machines (VMs) via network security groups (NSGs) can increase opportunities for malicious activities such as hacking, denial-of-service (DoS) attacks and loss of data.


Audit

To determine if your Azure network security groups allow unrestricted access on TCP ports 27017, 27018 or 27019, perform the following actions:

Using Azure Console

01 Sign in to Azure Management Console.

02 Navigate to All resources blade at https://portal.azure.com/#blade/HubsExtension/BrowseAll to access all your Microsoft Azure resources.

03 From the Subscription filter box, select the Azure account subscription that you want to examine.

04 From the Type filter box, select Network security group to list only the security groups available in the selected Azure subscription.

05 Click on the name of the network security group that you want to examine.

06 In the navigation panel, under Settings, select Inbound security rules to access the list with the inbound rules defined for the selected security group.

07 On the Inbound security rules page, verify the value available in the SOURCE column for any inbound rule with the PORT set to 27017, 27018 or 27019 and the PROTOCOL set to TCP. If one or more rules have the SOURCE set to Any (i.e. 0.0.0.0/0), the selected network security group allows unrestricted traffic on TCP port 27017, 27018 or 27019, therefore the inbound access to the associated Microsoft Azure virtual machine(s) is not secured.

08 Repeat steps no. 5 – 7 for each network security group available in the selected subscription.

09 Repeat steps no. 3 – 8 for each subscription created in your Microsoft Azure cloud account.

Using Azure CLI

01 Run network nsg list command (Windows/macOS/Linux) using custom query filters to list the names of all network security groups (and the name of their associated resource groups) available in the current Azure subscription:

az network nsg list
    --output table
    --query '[*].{name:name, resourceGroup:resourceGroup}'

02 The command output should return a table with requested resource information:

Name                        ResourceGroup
------------------------    ------------------------------
cc-production-server-nsg    cloud-shell-storage-westeurope
cc-staging-app-server-nsg   cloud-shell-storage-westeurope

03 Run network nsg rule list command (Windows/macOS/Linux) using the name of the Azure network security group (NSG) that you want to examine and its associated resource group as identifier parameters to describe the MongoDB inbound rule defined for the selected network security group using custom query filtering:

az network nsg rule list
  --nsg-name cc-production-server-nsg
  --resource-group cloud-shell-storage-westeurope
  --query "[?direction=='Inbound' && access=='Allow' && protocol=='TCP' && (destinationPortRange=='27017' || destinationPortRange=='27018'|| destinationPortRange=='27019')]"

04 The command output should return the requested security group rule metadata or an empty array, i.e. [], if there are no MongoDB rules created for TCP port 27017, 27018 or 27019:

[
  {
    "access": "Allow",
    "description": null,
    "destinationAddressPrefix": "*",
    "destinationAddressPrefixes": [],
    "destinationApplicationSecurityGroups": null,
    "destinationPortRange": "27017",
    "destinationPortRanges": [],
    "direction": "Inbound",
    "etag": "W/\"abcdabcd-abcd-abcd-abcd-abcdabcdabcd\"",
    "id": "/subscriptions/abcd1234-abcd-1234-abcd-1234abcd1234/resourceGroups/cloud-shell-storage-westeurope/providers/Microsoft.Network/networkSecurityGroups/cc-production-server-nsg/securityRules/selectedPort",
    "name": "MongoDB",
    "priority": 100,
    "protocol": "TCP",
    "provisioningState": "Succeeded",
    "resourceGroup": "cloud-shell-storage-westeurope",
    "sourceAddressPrefix": "*",
    "sourceAddressPrefixes": [],
    "sourceApplicationSecurityGroups": null,
    "sourcePortRange": "*",
    "sourcePortRanges": [],
    "type": "Microsoft.Network/networkSecurityGroups/securityRules"
  }
]

If the "sourceAddressPrefix" attribute value is set to "*", "internet" or "any", the selected network security group (NSG) allows unrestricted traffic on TCP port 27017, 27018 or 27019, therefore the MongoDB inbound access to the associated Microsoft Azure virtual machine(s) is not secured.

05 Repeat step no. 3 and 4 for each Azure network security group created within the selected subscription.

06 Repeat steps no. 1 – 5 for each subscription available in your Microsoft Azure cloud account.

Remediation / Resolution

To update your Azure NSG rule(s) configuration in order to restrict MongoDB access to trusted entities only, such as admin IP addresses or IP ranges, perform the following actions:

Using Azure Console

01 Sign in to Azure Management Console.

02 Navigate to All resources blade at https://portal.azure.com/#blade/HubsExtension/BrowseAll to access all your Microsoft Azure resources.

03 From the Subscription filter box, select the Azure account subscription that you want to access.

04 From the Type filter box, select Network security group to list only the security groups available in the selected Azure subscription.

05 Click on the name of the network security group that you want to reconfigure.

06 In the navigation panel, under Settings, select Inbound security rules to access the list with the inbound rules defined for the selected security group.

07 On the Inbound security rules page, click on the name of the non-compliant security group rule(s) that you want to reconfigure.

08 On the selected security group rule configuration panel, perform the following:

  1. Select IP Addresses from the Source dropdown list to allow inbound traffic on TCP port 27017, 27018 or 27019 from trusted IP addresses only.
  2. For Source IP addresses/CIDR ranges, provide the source IP address, IP addresses or IP address ranges that will be allowed to access the virtual machines associated with the selected network security group (NSG). You can specify a single value or comma-separated list of multiple values. An example of multiple values is 192.168.1.5/32, 10.0.0.3/32.
  3. Make sure that Action is set to Allow and leave the rest of the NSG configuration settings unchanged.
  4. Click Save to apply the changes.

09 Repeat steps no. 5 – 8 for each network security group that allows unrestricted inbound access on TCP ports 27017, 27018 or 27019 (MongoDB), available in the selected Azure subscription.

10 Repeat steps no. 3 – 9 for each subscription created in your Microsoft Azure cloud account.

Using Azure CLI

01 Run network nsg rule update command (Windows/macOS/Linux) using the name of the network security group rule that you want to reconfigure as the identifier parameter to restrict MongoDB access on TCP port 27017, 27018 or 27019 to trusted IP address(es) only by setting the --source-address-prefixes parameter to the IP address, IP addresses or IP address ranges that are allowed to access the virtual machines associated with the selected network security group. You can specify a single value or a space-separated list of multiple values, as shown in the example below:

az network nsg rule update
  --name MongoDB
  --nsg-name cc-production-server-nsg
  --resource-group cloud-shell-storage-westeurope
  --source-address-prefixes 192.168.10.51/32 192.168.10.52/32

02 The command output should return the metadata for the reconfigured Azure NSG rule:

{
  "access": "Allow",
  "description": null,
  "destinationAddressPrefix": "*",
  "destinationAddressPrefixes": [],
  "destinationApplicationSecurityGroups": null,
  "destinationPortRange": "27017",
  "destinationPortRanges": [],
  "direction": "Inbound",

  ...

  "name": "MongoDB",
  "priority": 110,
  "protocol": "TCP",
  "provisioningState": "Succeeded",
  "resourceGroup": "cloud-shell-storage-westeurope",
  "sourceAddressPrefix": "",
  "sourceAddressPrefixes": [
    "192.168.10.51/32",
    "192.168.10.52/32"
  ],
  "sourcePortRange": "*",
  "sourcePortRanges": [],
  "type": "Microsoft.Network/networkSecurityGroups/securityRules"
}

03 Repeat step no. 1 and 2 for each network security group (NSG) that allows unrestricted inbound access on TCP port 27017, 27018 or 27019, available in the current subscription.

04 Repeat steps no. 1 – 3 for each subscription created within your Microsoft Azure cloud account.

References

Publication date Mar 17, 2022

Unlock the Remediation Steps


Free 30-day Trial

Automatically audit your configurations with Conformity
and gain access to our cloud security platform.

Confirmity Cloud Platform

No thanks, back to article

You are auditing:

Check for Unrestricted MongoDB Access

Risk Level: High