É possível usar um grupo de segurança de rede para filtrar o tráfego de rede de entrada e saída dos recursos do Azure em uma rede virtual do Azure.
Grupos de segurança de rede contêm regras de segurança que filtram o tráfego por endereço IP, porta e protocolo. Quando um grupo de segurança de rede é associado a uma sub-rede, as regras de segurança são aplicadas aos recursos implantados nessa sub-rede.
Neste tutorial, você aprenderá como:
- Criar um grupo de segurança de rede e regras de segurança
- Criar grupos de segurança de aplicativos
- Criar uma rede virtual e associar um grupo de segurança de rede a uma sub-rede
- Implantar máquinas virtuais e associar as respectivas interfaces de rede com os grupos de segurança de aplicativos
Pré-requisitos
Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
| Opção |
Exemplo/Link |
| Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. |
|
| Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. |
|
| Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
|
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.
Selecione Enter para executar o código ou o comando.
Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az para localizar a versão instalada. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount para criar uma conexão com o Azure.
Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este artigo exige a versão 2.0.28 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.
O procedimento a seguir cria uma rede virtual com uma sub-rede de recursos.
No portal do Azure, pesquise e selecione Redes virtuais.
Na página Redes virtuais, selecione + Criar.
Na guia Informações Básicas em Criar rede virtual, insira ou selecione as informações a seguir:
| Configuração |
Valor |
|
Detalhes do projeto |
|
| Subscrição |
Selecione sua assinatura. |
| Grupo de recursos |
Selecione Criar novo.
Insira test-rg no Nome.
Selecione OK. |
|
Detalhes da instância |
|
| Nome |
Insira vnet-1. |
| Região |
Selecione Leste dos EUA 2. |
Selecione Avançar para prosseguir para a guia Segurança.
Selecione Avançar para prosseguir para a guia Endereços de IP.
Na caixa de espaço de endereço em Sub-redes, selecione a sub-rede padrão.
No painel Editar sub-rede, insira ou selecione as seguintes informações:
| Configuração |
Valor |
|
Detalhes da sub-rede |
|
| Modelo de sub-rede |
Mantenha o padrão como Padrão. |
| Nome |
Insira sub-rede-1. |
| Endereço inicial |
Deixe o padrão de 10.0.0.0. |
| Tamanho da sub-rede |
Deixe o padrão /24(256 endereços). |
Selecione Salvar.
Escolha Revisar + criar na parte inferior da tela. Depois da aprovação na validação, selecione Criar.
Primeiro, crie um grupo de recursos para todos os recursos criados neste artigo com New-AzResourceGroup. O seguinte exemplo cria um grupo de recursos na localização westus2:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Crie uma rede virtual com New-AzVirtualNetwork. O exemplo a seguir cria um virtual chamado vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Crie uma configuração de sub-rede com New-AzVirtualNetworkSubnetConfig e grave a configuração de sub-rede na rede virtual com Set-AzVirtualNetwork. O exemplo a seguir adiciona uma sub-rede chamada subnet-1 à rede virtual e associa o grupo de segurança de rede nsg-1 a ela:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Primeiro, crie um grupo de recursos para todos os recursos criados neste artigo com az group create. O seguinte exemplo cria um grupo de recursos na localização westus2:
az group create \
--name test-rg \
--location westus2
Crie a rede virtual com az network vnet create. O exemplo a seguir cria um virtual chamado vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Crie uma rede virtual com uma sub-rede com az network vnet subnet create. O exemplo a seguir adiciona uma sub-rede chamada subnet-1 à rede virtual e associa o grupo de segurança de rede nsg-1 a ela:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
Criar grupos de segurança de aplicativos
Um ASG (grupo de segurança do aplicativo) permite agrupar servidores com funções semelhantes, como servidores Web.
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de aplicativo. Selecione Grupos de segurança do aplicativo nos resultados da pesquisa.
Selecione + Criar.
Na guia Básico em Criar um grupo de segurança de aplicativos, insira ou selecione estas informações:
| Configuração |
Valor |
|
Detalhes do projeto |
|
| Subscrição |
Selecione sua assinatura. |
| Grupo de recursos |
Selecione test-rg. |
|
Detalhes da instância |
|
| Nome |
Insira asg-web. |
| Região |
Selecione Leste dos EUA 2. |
Selecione Examinar + criar.
Selecione + Criar.
Repita as etapas anteriores especificando os valores a seguir:
| Configuração |
Valor |
|
Detalhes do projeto |
|
| Subscrição |
Selecione sua assinatura. |
| Grupo de recursos |
Selecione test-rg. |
|
Detalhes da instância |
|
| Nome |
Insira asg-mgmt. |
| Região |
Selecione Leste dos EUA 2. |
Selecione Examinar + criar.
Selecione Criar.
Crie um grupo de segurança de aplicativo com New-AzureRmApplicationSecurityGroup. Um grupo de segurança de aplicativos permite agrupar servidores com requisitos de filtragem de porta semelhantes. O exemplo a seguir cria dois grupos de segurança de aplicativos.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
Crie um grupo de segurança de rede com az network nsg create. Um grupo de segurança de aplicativos permite agrupar servidores com requisitos de filtragem de porta semelhantes. O exemplo a seguir cria dois grupos de segurança de aplicativos.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
Criar um grupo de segurança de rede
Um NSG (grupo de segurança de rede) protege o tráfego de rede na sua rede virtual.
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de rede. Selecione Grupos de segurança de rede nos resultados da pesquisa.
Observação
Nos resultados da pesquisa para Grupos de segurança de rede, você poderá ver os Grupos de segurança de rede (clássico). Selecione Grupos de segurança de rede.
Selecione + Criar.
Na guia Básico em Criar grupo de segurança de rede, insira ou selecione estas informações:
| Configuração |
Valor |
|
Detalhes do projeto |
|
| Subscrição |
Selecione sua assinatura. |
| Grupo de recursos |
Selecione test-rg. |
|
Detalhes da instância |
|
| Nome |
Insira nsg-1. |
| Localização |
Selecione Leste dos EUA 2. |
Selecione Examinar + criar.
Selecione Criar.
Crie um grupo de segurança de rede com New-AzNetworkSecurityGroup. O exemplo a seguir cria um grupo de segurança de rede chamado nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Crie um grupo de segurança de rede com az network nsg create. O exemplo a seguir cria um grupo de segurança de rede chamado nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Associar o grupo de segurança de rede à sub-rede
Nesta seção, você associará o grupo de segurança de rede à sub-rede da rede virtual criada anteriormente.
Na caixa de pesquisa na parte superior do portal, digite Grupo de segurança de rede. Selecione Grupos de segurança de rede nos resultados da pesquisa.
Selecione nsg-1.
Selecione Sub-redes na seção Configurações da nsg-1.
Na página Sub-redes, selecione +Associar:
Em Associar sub-rede, selecione vnet-1 (test-rg) para Rede virtual.
Selecione sub-rede-1 para Sub-rede e, em seguida, selecione OK.
Use Get-AzVirtualNetwork para recuperar o objeto de rede virtual e, em seguida, use Set-AzVirtualNetworkSubnetConfig para associar o grupo de segurança de rede à sub-rede. O exemplo a seguir recupera o objeto de rede virtual e atualiza a configuração de sub-rede para associar o grupo de segurança de rede:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Use az network vnet subnet update para associar o grupo de segurança de rede à sub-rede. O exemplo a seguir associa o grupo de segurança de rede nsg-1 à sub-rede subnet-1:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Criar regras de segurança
Selecione Regras de segurança de entrada na seção Configurações do nsg-1.
Na página Regras de segurança de entrada, selecione + Adicionar.
Crie uma regra de segurança que permita o acesso das portas 80 e 443 ao grupo de segurança de aplicativos asg-web. Na página Adicionar regra de segurança de entrada, insira ou selecione as informações a seguir:
| Configuração |
Valor |
| Fonte |
Mantenha o padrão de Any. |
| Intervalos de portas de origem |
Mantenha o padrão de (*). |
| Destino |
Selecione Grupo de segurança do aplicativo. |
| Grupo de segurança do aplicativo de destino |
Selecione asg-web. |
| Serviço |
Mantenha o padrão de Custom. |
| Intervalos de portas de destino |
Insira 80,443. |
| Protocolo |
selecione TCP. |
| Ação |
Mantenha o padrão de Allow. |
| Prioridade |
Mantenha o padrão de 100. |
| Nome |
Insira allow-web-all. |
Selecione Adicionar.
Conclua as etapas anteriores com as informações a seguir:
| Configuração |
Valor |
| Fonte |
Mantenha o padrão de Any. |
| Intervalos de portas de origem |
Mantenha o padrão de (*). |
| Destino |
Selecione Grupo de segurança do aplicativo. |
| Grupo de segurança do aplicativo de destino |
Selecione asg-mgmt. |
| Serviço |
Selecione RDP. |
| Ação |
Mantenha o padrão de Allow. |
| Prioridade |
Mantenha o padrão de 110. |
| Nome |
Insira allow-rdp-all. |
Selecione Adicionar.
Cuidado
Neste artigo, o RDP (porta 3389) é exposto à Internet para a VM atribuída ao grupo de segurança de aplicativos asg-mgmt.
Para ambientes de produção, em vez de expor a porta 3389 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, conexão de rede privada ou Azure Bastion.
Para obter mais informações sobre o Azure Bastion, confira O que é o Azure Bastion?.
Crie uma regra de segurança com New-AzNetworkSecurityRuleConfig. O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web nas portas 80 e 443:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-Web-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80,443
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-mgmt na porta 3389:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-RDP-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 3389
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
Use Get-AzNetworkSecurityGroup para recuperar o grupo de segurança de rede existente e, em seguida, adicione as novas regras com o operador +=. Por fim, atualize o grupo de segurança de rede com Set-AzNetworkSecurityGroup:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Cuidado
Neste artigo, o RDP (porta 3389) é exposto à Internet para a VM atribuída ao grupo de segurança de aplicativos asg-mgmt.
Para ambientes de produção, em vez de expor a porta 3389 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, conexão de rede privada ou Azure Bastion.
Para obter mais informações sobre o Azure Bastion, confira O que é o Azure Bastion?.
Crie uma regra de segurança com az network nsg rule create. O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web nas portas 80 e 443:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80 443
O exemplo a seguir cria uma regra que permite o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-mgmt na porta 22:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 22
Cuidado
Neste artigo, o SSH (porta 22) é exposto à Internet para a VM atribuída ao grupo de segurança do aplicativo asg-mgmt.
Para ambientes de produção, em vez de expor a porta 22 à Internet, é recomendável conectar-se aos recursos do Azure que você quer gerenciar usando uma VPN, uma conexão de rede privada ou o Azure Bastion.
Para obter mais informações sobre o Azure Bastion, confira O que é o Azure Bastion?.
Criar máquinas virtuais
Crie duas VMs (máquinas virtuais) na rede virtual.
No portal, pesquise e selecione Máquinas virtuais.
Em Máquinas virtuais, selecione + Criar e, em seguida, Máquina virtual do Azure.
Em Criar máquina virtual, insira ou selecione estas informações na guia Básico:
| Configuração |
Valor |
|
Detalhes do projeto |
|
| Subscrição |
Selecione sua assinatura. |
| Grupo de recursos |
Selecione test-rg. |
|
Detalhes da instância |
|
| Nome da máquina virtual |
Insira vm-web. |
| Região |
Selecione (EUA) Leste dos EUA 2. |
| Opções de disponibilidade |
Deixe o padrão Nenhuma redundância de infraestrutura necessária. |
| Tipo de segurança |
Selecione Padrão. |
| Imagem |
Selecione Windows Server 2022 Datacenter – x64 Gen2. |
| Instância do Azure Spot |
Deixe o padrão de desmarcado. |
| Tamanho |
Selecione um tamanho. |
|
Conta de administrador |
|
| Nome de Usuário |
Digite um nome de usuário. |
| Senha |
Digite uma senha. |
| Confirmar senha |
Reinsira a senha. |
|
Regras de porta de entrada |
|
| Selecione as portas de entrada |
Selecione Nenhum. |
Selecione Avançar: Discos e Avançar: Rede.
Na guia Rede, insira ou selecione as seguintes informações:
| Configuração |
Valor |
|
Interface de rede |
|
| Rede virtual |
Selecione vnet-1. |
| Sub-rede |
Selecione sub-rede-1 (10.0.0.0/24). |
| IP público |
Deixe o padrão de um novo IP. |
| Grupo de segurança de rede da NIC |
Selecione Nenhum. |
Selecione a guia Examinar + criar ou clique no botão azul Examinar + criar na parte inferior da página.
Selecione Criar. A VM pode levar alguns minutos para ser implantada.
Repita as etapas anteriores para criar uma segunda máquina virtual chamada vm-mgmt.
Antes de criar as VMs, recupere o objeto de rede virtual com a sub-rede com Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Crie um endereço IP público para cada VM com New-AzPublicIpAddress:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
Crie dois adaptadores de rede com New-AzNetworkInterface e atribua um endereço IP público aos adaptadores de rede. O exemplo a seguir cria um adaptador de rede e associa a ele o endereço IP público public-ip-vm-web.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
O exemplo a seguir cria um adaptador de rede e associa a ele o endereço IP público public-ip-vm-mgmt.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Crie duas VMs na rede virtual para poder validar a filtragem de tráfego em uma etapa posterior.
Crie uma configuração de VM com New-AzVMConfig e crie a VM com New-AzVM. O exemplo a seguir cria uma VM que funciona como um servidor Web. A opção -AsJob cria a VM em segundo plano, para que você possa prosseguir para a próxima etapa:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-web"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $webNic.Id
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
Crie uma VM para servir como um servidor de gerenciamento:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-mgmt"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $mgmtNic.Id
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
A criação da máquina virtual demora alguns minutos. Não prossiga para a próxima etapa até que o Azure tenha concluído a criação da VM.
Crie duas VMs na rede virtual para poder validar a filtragem de tráfego em uma etapa posterior.
Crie uma VM com az vm create. O exemplo a seguir cria uma VM que funciona como um servidor Web. A opção --nsg "" é especificada para impedir que o Azure crie um grupo de segurança de rede padrão para a interface de rede que ele cria quando cria a VM. O comando solicita que você crie uma senha para a VM. As chaves SSH não são usadas neste exemplo para facilitar as etapas posteriores deste artigo. Em um ambiente de produção, use chaves SSH para segurança.
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--authentication-type password \
--assign-identity
A VM demora alguns minutos para criar. Depois que a VM é criada, é retornada uma saída semelhante ao exemplo a seguir:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Crie uma VM com az vm create. O exemplo a seguir cria uma VM que serve como um servidor de gerenciamento.
O exemplo a seguir cria uma VM e adiciona uma conta de usuário. O parâmetro --generate-ssh-keys faz com que a CLI procure uma chave ssh disponível em ~/.ssh. Se for encontrada, essa chave será usada. Caso contrário, uma será gerada e armazenada em ~/.ssh. Por fim, implantamos a imagem Ubuntu 22.04 mais recente.
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity
A VM demora alguns minutos para criar. Não prossiga para a próxima etapa até que o Azure tenha concluído a criação da VM.
Associar adaptadores de rede a um ASG
Quando você criou as VMs, o Azure criou a interface de rede para cada VM e anexou à VM.
Adicione a interface de rede de cada VM para um dos grupos de segurança de aplicativos criados anteriormente:
Na caixa de pesquisa na parte superior do portal insira Máquina virtual. Selecione Máquinas virtuais nos resultados da pesquisa e, em seguida, selecione vm-web.
Selecione Grupos de segurança de aplicativos na seção Rede da vm-web.
Selecione Adicionar grupos de segurança de aplicativos e, na guia Adicionar grupos de segurança do aplicativo, selecione asg-web. Por fim, selecione Adicionar.
Repita as etapas anteriores para vm-mgmt, selecionando asg-mgmt na guia Adicionar grupos de segurança de aplicativos.
Use Get-AzNetworkInterface para recuperar o adaptador de rede da máquina virtual e, em seguida, use Get-AzApplicationSecurityGroup para recuperar o grupo de segurança do aplicativo. Por fim, use Set-AzNetworkInterface para associar o grupo de segurança de aplicativos ao adaptador de rede. O exemplo a seguir associa o grupo de segurança de aplicativos asg-web ao adaptador de rede vm-web-nic:
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Repita o comando para associar o grupo de segurança do aplicativo asg-mgmt ao adaptador de rede vm-mgmt-nic.
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Use az network nic update para associar ao adaptador de rede ao grupo de segurança do aplicativo. O exemplo a seguir associa o grupo de segurança de aplicativos asg-web ao adaptador de rede vm-web-nic:
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
Repita o comando para associar o grupo de segurança do aplicativo asg-mgmt ao adaptador de rede vm-mgmt-nic.
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Testar filtros de tráfego
Na caixa de pesquisa na parte superior do portal insira Máquina virtual. Selecione Máquinas virtuais nos resultados da pesquisa.
Selecione vm-mgmt.
Na página Visão geral, selecione o botão Conectar e, em seguida, RDP nativo.
Selecione Baixar Arquivo RDP.
Abra o arquivo RDP baixado e selecione Conectar. Insira o nome de usuário e a senha que você especificou ao criar a VM.
Selecione OK.
Você pode receber um aviso de certificado durante o processo de conexão. Caso receba o aviso, clique em Sim ou Continuar para prosseguir com a conexão.
A conexão foi bem-sucedida, pois o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-mgmt é permitido pela porta 3389.
O adaptador de rede do vm-mgmt está associado ao grupo de segurança de aplicativos asg-mgmt e permite a conexão.
Abra uma sessão do PowerShell em vm-mgmt. Conecte-se à vm-web usando o seguinte:
mstsc /v:vm-web
A conexão RDP de vm-mgmt com a vm-web foi realizada com sucesso porque as máquinas virtuais na mesma rede podem se comunicar entre si por qualquer porta por padrão.
Não é possível criar uma conexão RDP com a máquina virtual vm-web a partir da Internet. A regra de segurança para asg-web impede conexões com a porta 3389 de entrada da Internet. O tráfego de entrada por meio da Internet é negado a todos os recursos por padrão.
Para instalar o IIS da Microsoft na máquina virtual vm-web, insira o seguinte comando em uma sessão do PowerShell na máquina virtual vm-web:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
Após a conclusão da instalação do IIS, desconecte-se da máquina virtual vm-web, o que direcionará você para a conexão de área de trabalho remota da máquina virtual vm-mgmt.
Desconecte-se da VM vm-mgmt.
Pesquise vm-web na caixa de pesquisa do portal.
Na página Visão Geral da vm-web, anote o endereço IP público de sua VM. O endereço mostrado no exemplo a seguir é 203.0.113.103. Seu endereço é diferente:
Para confirmar se é possível acessar o servidor Web vm-web pela Internet, abra um navegador da Internet no seu computador e navegue até http://<public-ip-address-from-previous-step>.
Você vê a página padrão do IIS, pois o tráfego de entrada da Internet para o grupo de segurança de aplicativos asg-web é permitido pela porta 80.
O adaptador de rede anexado à vm-web está associado ao grupo de segurança do aplicativo asg-web e permite a conexão.
Use Get-AzPublicIpAddress para retornar o endereço IP público de uma VM. O exemplo a seguir retorna o endereço IP público da VM vm-mgmt:
$params = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$publicIP = Get-AzPublicIpAddress @params | Select IpAddress
Use o seguinte comando para criar uma sessão de área de trabalho remota com a VM vm-mgmt em seu computador local.
mstsc /v:$publicIP
Insira o nome de usuário e a senha especificados ao criar a VM (talvez seja necessário selecionar Mais opções e, em seguida, Usar uma conta diferente para especificar as credenciais inseridas ao criar a VM) e, em seguida, selecione OK. Você pode receber um aviso de certificado durante o processo de entrada. Selecione Sim para prosseguir com a conexão.
A conexão foi bem-sucedida. A porta 3389 tem permissão de entrada a partir da Internet para o grupo de segurança do aplicativo asg-mgmt. O adaptador de rede anexado à VM vm-mgmt está nesse grupo.
Use o seguinte comando para criar uma conexão de área de trabalho remota com a VM vm-web, a partir da VM vm-mgmt, com o seguinte comando do PowerShell:
mstsc /v:vm-web
É uma conexão com êxito porque uma regra de segurança padrão dentro de cada grupo de segurança de rede permite o tráfego em todas as portas entre todos os endereços IP em uma rede virtual. Não é possível criar uma conexão de área de trabalho remota com a VM vm-web a partir da Internet porque a regra de segurança do asg-web não permite a entrada da porta 3389 a partir da Internet.
Use o seguinte comando para instalar o IIS da Microsoft na VM vm-web a partir do PowerShell:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
Após a conclusão da instalação do IIS, desconecte-se da VM vm-web, o que direcionará você para a conexão de área de trabalho remota da VM vm-mgmt. Para exibir a tela de boas-vindas dos Serviços de Informações da Internet, abra um navegador da Internet e navegue até http://vm-web.
Desconecte-se da VM vm-mgmt.
Em seu computador, insira o seguinte comando do PowerShell para recuperar o endereço IP público do servidor vm-web:
$params = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
Get-AzPublicIpAddress @params | Select IpAddress
Para confirmar se é possível acessar o servidor Web vm-web de fora do Azure, abra um navegador da Internet no seu computador e navegue até http://<public-ip-address-from-previous-step>. A conexão foi bem-sucedida. A porta 80 tem permissão de entrada a partir da Internet para o grupo de segurança de aplicativos asg-web. O adaptador de rede anexado à VM vm-web está nesse grupo.
Usando um cliente SSH de sua escolha, conecte-se às máquinas virtuais criadas anteriormente. Por exemplo, o seguinte comando pode ser usado a partir de uma interface de linha de comando, como o Subsistema do Windows para Linux, para criar uma sessão SSH com a VM vm-mgmt. Você pode entrar nas máquinas virtuais usando suas credenciais do Microsoft Entra ID ou usar a chave SSH usada para criar as VMs. No exemplo a seguir, usamos a chave SSH para entrar na VM de gerenciamento e, em seguida, conectar na VM Web a partir da VM de gerenciamento usando uma senha.
Para obter mais informações sobre como fazer SSH em uma VM Linux e entrar com o Microsoft Entra ID, consulte Entrar em uma máquina virtual Linux no Azure usando Microsoft Entra ID e OpenSSH.
Armazenar o endereço IP da VM para SSH
Execute o seguinte comando para armazenar o endereço IP da VM como uma variável de ambiente:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
A conexão foi bem-sucedida porque o adaptador de rede anexado à VM vm-mgmt está no grupo de segurança do aplicativo asg-mgmt, que permite a entrada da porta 22 da Internet.
Use o seguinte comando para se conectar via SSH à VM vm-web a partir da VM vm-mgmt:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
É uma conexão com êxito porque uma regra de segurança padrão dentro de cada grupo de segurança de rede permite o tráfego em todas as portas entre todos os endereços IP em uma rede virtual. Você não pode fazer SSH na VM vm-web a partir da Internet porque a regra de segurança do asg-web não permite a entrada da porta 22 a partir da Internet.
Use os seguintes comandos para instalar o servidor Web nginx na VM vm-web:
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
A VM vm-web tem permissão para tráfego de saída para a Internet para recuperar o nginx porque uma regra de segurança padrão permite todo o tráfego de saída para a Internet. Saia da sessão SSH do vm-web, o que deixará você no prompt username@vm-mgmt:~$ da VM vm-mgmt. Para recuperar a tela de boas-vindas do nginx na VM vm-web insira o seguinte comando:
curl vm-web
Saia da VM vm-mgmt. Para confirmar que você pode acessar o servidor Web vm-web de fora do Azure, insira curl <publicIpAddress> do seu próprio computador. A conexão foi bem-sucedida porque o grupo de segurança do aplicativo asg-web, no qual se encontra o adaptador de rede conectado à VM vm-web, permite a entrada da porta 80 da Internet.
Quando terminar de usar os recursos que criou, você poderá excluir o grupo de recursos e todos os seus recursos.
No portal do Azure, procure por Grupos de recursos e selecione essa opção.
Na página Grupos de recursos, selecione o grupo de recursos test-rg.
Na página test-rg, selecione Excluir grupo de recursos .
Insira test-rg em Inserir o nome do grupo de recursos para confirmar a exclusão e, em seguida, selecione Excluir.
Quando não for mais necessário, você poderá usar Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos que ele contém:
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Quando não for mais necessário, use az group delete para remover o grupo de recursos e todos os recursos que ele contém.
az group delete \
--name test-rg \
--yes \
--no-wait
Próximas etapas
Neste tutorial, você:
- Foi criado um grupo de segurança de rede e ele foi associado a uma sub-rede de rede virtual.
- Foram criados grupos de segurança do aplicativo para Web e gerenciamento.
- Criou duas máquinas virtuais e associou as respectivas interfaces de rede com os grupos de segurança de aplicativos.
- A filtragem de rede do grupo de segurança do aplicativo foi testada.
Para saber mais sobre grupos de segurança de rede, consulte Visão geral do grupo de segurança de rede e Gerenciar um grupo de segurança de rede.
O Azure roteia o tráfego entre sub-redes por padrão. Em vez disso, é possível optar por rotear o tráfego entre sub-redes por meio de uma VM, servindo como um firewall, por exemplo.
Para saber mais sobre como criar uma tabela de rotas, avance para o próximo tutorial.