Exercício – Criar e gerenciar Grupos de Segurança de Rede
Como o arquiteto de soluções da empresa manufatureira, agora, você deseja começar a migrar os servidores de banco de dados e o aplicativo ERP para o Azure. Como primeira etapa, você testará seu plano de segurança de rede usando dois de seus servidores.
Nesta unidade, você configurará um Grupo de Segurança de Rede e regras de segurança para restringir o tráfego de rede a servidores específicos. Você deseja que o servidor de aplicativos consiga se conectar ao servidor de banco de dados via HTTP. Você não deseja que o servidor de banco de dados possa usar o HTTP para se conectar ao servidor de aplicativos.
Criar uma rede virtual e um grupo de segurança de rede
Primeiro, você criará a rede virtual e as sub-redes para os recursos do servidor. Em seguida, você deve criar um grupo de segurança de rede.
No Azure Cloud Shell, execute o seguinte comando para atribuir o grupo de recursos de áreas de acesso à variável
rg
:rg="<rgn>[sandbox resource group name]</rgn>"
Para criar a rede virtual ERP-servers e a sub-rede Aplicativos, execute o seguinte comando no Cloud Shell:
az network vnet create \ --resource-group $rg \ --name ERP-servers \ --address-prefixes 10.0.0.0/16 \ --subnet-name Applications \ --subnet-prefixes 10.0.0.0/24
Para criar a sub-rede Banco de Dados, execute o seguinte comando no Cloud Shell:
az network vnet subnet create \ --resource-group $rg \ --vnet-name ERP-servers \ --address-prefixes 10.0.1.0/24 \ --name Databases
Para criar o grupo de segurança de rede ERP-SERVERS-NSG, execute o seguinte comando no Cloud Shell:
az network nsg create \ --resource-group $rg \ --name ERP-SERVERS-NSG
Criar VMs que executam o Ubuntu
Em seguida, você criará duas VMs chamadas AppServer e DataServer. Você implantará AppServer na sub-rede Aplicativos e DataServer na sub-rede Bancos de Dados. Adicione os adaptadores de rede de VMs ao grupo de segurança de rede ERP-SERVERS-NSG. Em seguida, para testar o grupo de segurança de rede, use essas VMs.
Para criar a VM do AppServer, execute o comando a seguir no Cloud Shell. Para a conta do administrador, substitua
<password>
por uma senha complexa.wget -N https://raw.githubusercontent.com/MicrosoftDocs/mslearn-secure-and-isolate-with-nsg-and-service-endpoints/master/cloud-init.yml && \ az vm create \ --resource-group $rg \ --name AppServer \ --vnet-name ERP-servers \ --subnet Applications \ --nsg ERP-SERVERS-NSG \ --image Ubuntu2204 \ --size Standard_DS1_v2 \ --generate-ssh-keys \ --admin-username azureuser \ --custom-data cloud-init.yml \ --no-wait \ --admin-password <password>
Para criar a VM do DataServer, execute o comando a seguir no Cloud Shell. Para a conta do administrador, substitua
<password>
por uma senha complexa.az vm create \ --resource-group $rg \ --name DataServer \ --vnet-name ERP-servers \ --subnet Databases \ --nsg ERP-SERVERS-NSG \ --size Standard_DS1_v2 \ --image Ubuntu2204 \ --generate-ssh-keys \ --admin-username azureuser \ --custom-data cloud-init.yml \ --no-wait \ --admin-password <password>
Poderá levar vários minutos para as VMs entrarem em um estado de execução. Para confirmar se as VMs estão em execução, execute o seguinte comando no Cloud Shell:
az vm list \ --resource-group $rg \ --show-details \ --query "[*].{Name:name, Provisioned:provisioningState, Power:powerState}" \ --output table
Quando a criação da VM for concluída, você deverá ver a seguinte saída:
Name Provisioned Power ---------- ------------- ---------- AppServer Succeeded VM running DataServer Succeeded VM running
Verificar a conectividade padrão
Agora, você tentará abrir uma sessão do SSH (Secure Shell) para cada uma das VMs. Lembre-se que até o momento você implantou um Grupo de Segurança de Rede com regras padrão.
Para se conectar às VMs, use o SSH diretamente no Cloud Shell. Para fazer isso, você precisará dos endereços IP públicos atribuídos às VMs. A fim de listar os endereços IP que você usará para se conectar às VMs, execute o seguinte comando no Cloud Shell:
az vm list \ --resource-group $rg \ --show-details \ --query "[*].{Name:name, PrivateIP:privateIps, PublicIP:publicIps}" \ --output table
Visando facilitar a conexão com as VMs durante o restante deste exercício, atribua os endereços IP públicos a variáveis. Para salvar o endereço IP público de AppServer e DataServer em uma variável, execute o seguinte comando no Cloud Shell:
APPSERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name AppServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" DATASERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name DataServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Para verificar se você pode se conectar à VM AppServer, execute o seguinte comando no Cloud Shell:
ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
Você receberá uma mensagem
Connection timed out
.Para verificar se você pode se conectar à VM DataServer, execute o seguinte comando no Cloud Shell:
ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
Você receberá a mesma mensagem de falha de conexão.
Lembre-se de que as regras padrão negam todo o tráfego de entrada em uma rede virtual, a menos que esse tráfego seja proveniente da mesma rede virtual. A regra Negar Todas as Entradas bloqueou as conexões SSH de entrada que você acabou de tentar.
Entrada
Nome | Prioridade | IP de origem | IP de destino | Acesso |
---|---|---|---|---|
Permitir a Entrada da VNET | 65000 | VIRTUAL_NETWORK | VIRTUAL_NETWORK | Permitir |
Negar Todas as Entradas | 65500 | * | * | Negar |
Criar uma regra de segurança para o SSH
Como você acabou de ver, as regras padrão do Grupo de Segurança de Rede ERP-SERVERS-NSG incluem uma regra Negar Todas as Entradas. Agora você adicionará uma regra para usar o SSH e se conectar a AppServer e DataServer.
Para criar uma regra de segurança de entrada a fim de habilitar o acesso ao SSH, execute o seguinte comando no Cloud Shell:
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name AllowSSHRule \ --direction Inbound \ --priority 100 \ --source-address-prefixes '*' \ --source-port-ranges '*' \ --destination-address-prefixes '*' \ --destination-port-ranges 22 \ --access Allow \ --protocol Tcp \ --description "Allow inbound SSH"
Para verificar se você pode se conectar à VM AppServer, execute o seguinte comando no Cloud Shell:
ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
A regra do Grupo de Segurança de Rede pode levar um ou dois minutos para entrar em vigor. Se você receber uma mensagem de falha de conexão, aguarde um momento e tente novamente.
Agora você deverá conseguir se conectar. Após a mensagem
Are you sure you want to continue connecting (yes/no)?
, insirayes
.Insira a senha que você definiu quando criou a VM.
Para fechar a sessão de AppServer, insira
exit
.Para verificar se você pode se conectar à VM DataServer, execute o seguinte comando no Cloud Shell:
ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
Agora você deverá conseguir se conectar. Após a mensagem
Are you sure you want to continue connecting (yes/no)?
, insirayes
.Insira a senha que você definiu quando criou a VM.
Para fechar a sessão de DataServer, insira
exit
.
Criar uma regra de segurança para impedir o acesso via Web
Agora, adicione uma regra para que AppServer possa se comunicar com DataServer via HTTP, mas que DataServer não possa se comunicar com AppServer via HTTP. Estes são os endereços IP internos para esses servidores:
Nome do servidor | Endereço IP |
---|---|
AppServer | 10.0.0.4 |
DataServer | 10.0.1.4 |
Para criar uma regra de segurança de entrada a fim de negar o acesso HTTP pela porta 80, execute o seguinte comando no Cloud Shell:
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name httpRule \ --direction Inbound \ --priority 150 \ --source-address-prefixes 10.0.1.4 \ --source-port-ranges '*' \ --destination-address-prefixes 10.0.0.4 \ --destination-port-ranges 80 \ --access Deny \ --protocol Tcp \ --description "Deny from DataServer to AppServer on port 80"
Testar a conectividade HTTP entre máquinas virtuais
Aqui, você verificará se a nova regra funciona. AppServer deve conseguir se comunicar com DataServer via HTTP. DataServer não deve conseguir se comunicar com AppServer via HTTP.
Para se conectar à VM AppServer, execute o comando a seguir no Cloud Shell. Verifique se AppServer pode se comunicar com DataServer via HTTP.
ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
Insira a senha que você definiu quando criou a VM.
A resposta deverá incluir uma mensagem
200 OK
.Para se conectar à VM DataServer, execute o comando a seguir no Cloud Shell. Verifique se DataServer pode se comunicar com AppServer via HTTP.
ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
Insira a senha que você definiu quando criou a VM.
Isso não deve ter êxito, pois você bloqueou o acesso pela porta 80. Após alguns minutos, você deverá receber uma mensagem
Connection timed out
. Para interromper o comando antes do tempo limite, selecione Ctrl+C.
Implantar um grupo de segurança do aplicativo
Em seguida, crie um grupo de segurança do aplicativo para servidores de banco de dados, de modo que todos os servidores desse grupo possam receber as mesmas configurações. Você pretende implantar mais servidores de banco de dados e deseja impedir que esses servidores acessem servidores de aplicativos via HTTP. Atribuindo origens no grupo de segurança do aplicativo, você não precisa manter manualmente uma lista de endereços IP no grupo de segurança de rede. Em vez disso, você atribuirá os adaptadores de rede das VMs que deseja gerenciar ao grupo de segurança do aplicativo.
Para criar um grupo de segurança do aplicativo chamado ERP-DB-SERVERS-ASG, execute o seguinte comando no Cloud Shell:
az network asg create \ --resource-group $rg \ --name ERP-DB-SERVERS-ASG
Para associar DataServer ao grupo de segurança do aplicativo, execute o seguinte comando no Cloud Shell:
az network nic ip-config update \ --resource-group $rg \ --application-security-groups ERP-DB-SERVERS-ASG \ --name ipconfigDataServer \ --nic-name DataServerVMNic \ --vnet-name ERP-servers \ --subnet Databases
Para atualizar a regra HTTP no grupo de segurança de rede ERP-SERVERS-NSG, execute o comando a seguir no Cloud Shell. Ele deverá referenciar o grupo de segurança do aplicativo ERP-DB-Servers.
az network nsg rule update \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name httpRule \ --direction Inbound \ --priority 150 \ --source-address-prefixes "" \ --source-port-ranges '*' \ --source-asgs ERP-DB-SERVERS-ASG \ --destination-address-prefixes 10.0.0.4 \ --destination-port-ranges 80 \ --access Deny \ --protocol Tcp \ --description "Deny from DataServer to AppServer on port 80 using application security group"
Testar a regra de segurança HTTP atualizada
Para se conectar à VM AppServer, execute o comando a seguir no Cloud Shell. Verifique se AppServer pode se comunicar com DataServer via HTTP.
ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
Insira a senha que você definiu quando criou a VM.
Como antes, a resposta deverá incluir uma mensagem
200 OK
. As configurações do grupo de segurança do aplicativo podem levar um ou dois minutos para entrarem em vigor. Se você não receber inicialmente a mensagem200 OK
, aguarde um minuto e tente novamente.Para se conectar ao seu DataServer, execute o comando a seguir no Cloud Shell. Verifique se DataServer pode se comunicar com AppServer via HTTP.
ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
Insira a senha que você definiu quando criou a VM.
Assim como antes, isso não deve ter êxito, pois você bloqueou o acesso pela porta 80. Após alguns minutos, você deverá receber uma mensagem
Connection timed out
. Para interromper o comando antes do tempo limite, selecione Ctrl+C.
Agora você confirmou que a regra do grupo de segurança de rede funciona usando um grupo de segurança de aplicativo da mesma forma que quando você usou um endereço IP de origem. Se adicionarmos servidores de dados adicionais, poderemos garantir facilmente que eles tenham a segurança de rede adequada adicionando os novos servidores ao ERP-DB-SERVERS-ASG.