Exercício – Criar e gerenciar Grupos de Segurança de Rede

Concluído

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.

Diagram of exercise scenario network security groups.

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.

  1. 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>"
    
  2. 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
    
  3. 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
    
  4. 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.

  1. 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>
    
  2. 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>
    
  3. 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.

  1. 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
    
  2. 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)"
    
  3. 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.

  4. 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.

  1. 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"
    
  2. 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.

  3. Agora você deverá conseguir se conectar. Após a mensagem Are you sure you want to continue connecting (yes/no)?, insira yes.

  4. Insira a senha que você definiu quando criou a VM.

  5. Para fechar a sessão de AppServer, insira exit.

  6. Para verificar se você pode se conectar à VM DataServer, execute o seguinte comando no Cloud Shell:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    
  7. Agora você deverá conseguir se conectar. Após a mensagem Are you sure you want to continue connecting (yes/no)?, insira yes.

  8. Insira a senha que você definiu quando criou a VM.

  9. 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
  1. 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.

  1. 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'
    
  2. Insira a senha que você definiu quando criou a VM.

  3. A resposta deverá incluir uma mensagem 200 OK.

  4. 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'
    
  5. Insira a senha que você definiu quando criou a VM.

  6. 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, pressione 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.

Diagram of exercise scenario app security groups.

  1. 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
    
  2. 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
    
  3. 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

  1. 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'
    
  2. Insira a senha que você definiu quando criou a VM.

  3. 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 mensagem 200 OK, aguarde um minuto e tente novamente.

  4. 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'
    
  5. Insira a senha que você definiu quando criou a VM.

  6. 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, pressione 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.