Allowing access to your Azure VM
You created your VM, you installed and configured all services, and your firewalld
/iptables
is set correctly. Your nmap
tests are even working between systems.
But, you can't access your services external to Azure?
You probably didn't enable access in Azure. You need to allow specific ports in your Azure Network Security Group.
In terms of your Azure objects, your VM uses a NIC, your NIC uses an NSG.
Using PowerShell
Using PowerShell, you can do something like this:
$rg = 'hosting01' $nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $rg -Name "$rg-nsg-alpha" $maximum = ($nsg.SecurityRules | measure -Property priority -Maximum).Maximum + 100 $httpRule = New-AzureRmNetworkSecurityRuleConfig -Name "http" -Protocol Tcp -SourceAddressPrefix * -DestinationAddressPrefix * -SourcePortRange * -DestinationPortRange 80 -Priority $maximum -Description "HTTP" -Direction Inbound -Access Allow $nsg.SecurityRules.Add($httpRule) $maximum = ($nsg.SecurityRules | measure -Property priority -Maximum).Maximum + 100 $httpsRule = New-AzureRmNetworkSecurityRuleConfig -Name "https" -Protocol Tcp -SourceAddressPrefix * -DestinationAddressPrefix * -SourcePortRange * -DestinationPortRange 443 -Priority $maximum -Description "SSL" -Direction Inbound -Access Allow $nsg.SecurityRules.Add($httpsRule) Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $nsg
Use an ARM Template
Or you can just fix your initial ARM template by adding the resource:
See the https://linux.azure.david.betz.space/_/python-uwsgi-nginx on https://linux.azure.david.betz.space for a fuller example.
{ "comments": "", "type": "Microsoft.Network/networkSecurityGroups", "name": "nsg-alpha", "apiVersion": "2017-03-01", "location": "[resourceGroup().location]", "properties": { "securityRules": [ { "name": "default-allow-ssh", "properties": { "protocol": "Tcp", "sourcePortRange": "*", "destinationPortRange": "22", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*", "access": "Allow", "priority": 1000, "direction": "Inbound" } }, { "name": "http", "properties": { "protocol": "Tcp", "sourcePortRange": "*", "destinationPortRange": "80", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*", "access": "Allow", "priority": 1100, "direction": "Inbound" } }, { "name": "https", "properties": { "protocol": "Tcp", "sourcePortRange": "*", "destinationPortRange": "443", "sourceAddressPrefix": "*", "destinationAddressPrefix": "*", "access": "Allow", "priority": 1200, "direction": "Inbound" } } ] }, "resources": [], "dependsOn": [] }
Add this to your NICs (Microsoft.Network/networkInterfaces
) properties
:
"type": "Microsoft.Network/networkInterfaces", "properties": { "networkSecurityGroup": { "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat(variables('nsg-prefix'), variables('names')[0]))]" } }
...and dependsOn
section:
"dependsOn": [ "[resourceId('Microsoft.Network/networkSecurityGroups', concat(variables('nsg-prefix'), variables('names')[0]))]" ]