Utilizando o Azure Bastion para Acesso Seguro a Máquinas Virtuais

Utilizando o Azure Bastion para Acesso Seguro a Máquinas Virtuais

01/04/2025

Este artigo técnico e educativo tem como objetivo guiar analistas de segurança, administradores de TI e engenheiros de sistemas na implementação e configuração do Azure Bastion para acesso seguro a máquinas virtuais (VMs) no Azure. Em um ambiente de nuvem, a segurança do acesso a VMs é fundamental para proteger os recursos e dados. Tradicionalmente, o acesso a VMs via RDP (Remote Desktop Protocol) ou SSH (Secure Shell) exigia a exposição de portas públicas na internet, o que aumentava significativamente a superfície de ataque. O Azure Bastion oferece uma solução robusta e segura para eliminar essa exposição, proporcionando acesso seguro e sem a necessidade de VPNs ou IPs públicos [1].

Introdução

A migração de infraestruturas para a nuvem trouxe inúmeros benefícios em termos de escalabilidade e flexibilidade. No entanto, a segurança permanece como uma das principais preocupações. O acesso a máquinas virtuais é um ponto crítico, pois são frequentemente o coração de muitas aplicações e serviços. Expor portas RDP (3389) ou SSH (22) diretamente à internet é uma prática de segurança desaconselhada, pois as torna alvos fáceis para ataques de força bruta e outras explorações [2].

O Azure Bastion é um serviço PaaS (Platform as a Service) totalmente gerenciado que você provisiona em sua rede virtual. Ele permite que você se conecte a máquinas virtuais em sua rede virtual diretamente do portal do Azure, usando RDP e SSH, sem a necessidade de IPs públicos nas VMs, agentes instalados nas VMs ou clientes/configurações especiais em sua máquina local. O Bastion atua como um proxy seguro, roteando o tráfego de RDP/SSH através de uma conexão TLS (Transport Layer Security) segura para o navegador do usuário, protegendo as VMs contra exposições diretas à internet [3].

Este guia prático abordará os pré-requisitos, como provisionar e configurar o Azure Bastion, como conectar-se a VMs Windows e Linux usando RDP e SSH, como gerenciar sessões e como testar e validar o acesso seguro. Serão fornecidas instruções passo a passo, exemplos práticos, e explicações concisas para que o leitor possa implementar, testar e validar esses recursos. Além disso, serão discutidas dicas de segurança, verificação de conformidade e melhores práticas para garantir um acesso remoto seguro e eficiente às suas máquinas virtuais, de forma autônoma, profissional e confiável.

Por que o Azure Bastion é crucial para o acesso a VMs?

  • Segurança Aprimorada: Elimina a necessidade de IPs públicos em VMs, protegendo-as contra ataques diretos da internet. O acesso é feito via TLS através do navegador.
  • Acesso Simplificado: Conecta-se a VMs diretamente do portal do Azure, sem a necessidade de clientes RDP/SSH nativos ou VPNs.
  • Zero Trust: Alinha-se com os princípios do Zero Trust, garantindo que o acesso seja sempre verificado e autorizado, independentemente da localização do usuário.
  • Auditoria e Monitoramento: Permite monitorar e gerenciar sessões, com a opção de gravação de sessão (disponível no SKU Premium) para fins de auditoria e conformidade.
  • Redução de Custo e Complexidade: Como um serviço PaaS totalmente gerenciado, elimina a necessidade de gerenciar seus próprios hosts de salto (jump boxes) ou VPNs complexas.
  • Proteção contra Port Scanning: As VMs não têm IPs públicos, tornando-as invisíveis para scanners de porta e bots maliciosos na internet.

Pré-requisitos

Para implementar o Azure Bastion, você precisará dos seguintes itens:

  1. Assinatura Azure Ativa: Uma assinatura Azure para criar e gerenciar recursos.
  2. Acesso Administrativo: Uma conta com a função de Proprietário ou Colaborador na assinatura ou grupo de recursos onde as VMs estão localizadas.
  3. Rede Virtual Azure (VNet): Uma rede virtual existente que contém as VMs às quais você deseja se conectar.
  4. Sub-rede Dedicada para Azure Bastion: Uma sub-rede dentro da sua VNet com o nome AzureBastionSubnet e um prefixo de pelo menos /27 (ex: 10.0.2.0/27). Esta sub-rede é exclusiva para o Bastion e não pode ser usada para outros recursos [4].
  5. Máquinas Virtuais (VMs): VMs Windows ou Linux existentes na mesma VNet (ou VNets emparelhadas) às quais você deseja se conectar.

Passo a Passo: Configurando o Azure Bastion

Vamos provisionar o Azure Bastion e usá-lo para conectar a uma VM.

1. Criando a Sub-rede AzureBastionSubnet

Antes de implantar o Bastion, você precisa criar uma sub-rede dedicada.

  1. Abra seu navegador e navegue até o portal do Azure: https://portal.azure.com.
  2. Faça login com uma conta que tenha as permissões necessárias.
  3. No campo de pesquisa superior, digite Redes virtuais e selecione-o nos resultados.
  4. Selecione a rede virtual onde suas VMs estão localizadas.
  5. No painel de navegação esquerdo, em Configurações, selecione Sub-redes.
  6. Clique em + Sub-rede.

  7. Adicionar sub-rede:

    • Nome: Digite AzureBastionSubnet (este nome é obrigatório).
    • Intervalo de endereços da sub-rede: Forneça um intervalo de endereços com um prefixo de pelo menos /27 (ex: 10.0.2.0/27).
    • Deixe as outras configurações como padrão.
  8. Clique em Salvar.

    • Explicação: A AzureBastionSubnet é onde o serviço Azure Bastion será implantado. É crucial que o nome seja exatamente AzureBastionSubnet para que o serviço possa ser provisionado corretamente.

2. Provisionando o Azure Bastion

Agora que a sub-rede está pronta, podemos implantar o serviço Bastion.

  1. No portal do Azure, no campo de pesquisa superior, digite Bastion e selecione-o nos resultados.
  2. Clique em + Criar.

  3. Noções básicas:

    • Assinatura: Selecione sua assinatura.
    • Grupo de recursos: Selecione o mesmo grupo de recursos da sua VNet.
    • Nome: Dê um nome para sua instância do Bastion (ex: myBastionHost).
    • Região: Selecione a mesma região da sua VNet.
    • Camada: Selecione Básico (para RDP/SSH básico) ou Standard (para recursos adicionais como gravação de sessão, compartilhamento de link, etc.). Para este guia, usaremos Básico.
  4. Rede virtual:

    • Rede virtual: Selecione a VNet onde você criou a AzureBastionSubnet.
    • Sub-rede: A AzureBastionSubnet será selecionada automaticamente.
    • Endereço IP público: Clique em Criar novo. Dê um nome para o IP público (ex: myBastionPublicIP). Este IP público é para o serviço Bastion e não é exposto às suas VMs.
  5. Clique em Revisar + criar e depois em Criar.

    • Explicação: O provisionamento do Azure Bastion pode levar de 5 a 10 minutos. Uma vez implantado, ele estará pronto para ser usado para acessar suas VMs.

3. Conectando-se a uma VM Windows via RDP

Vamos conectar a uma VM Windows sem expor sua porta RDP.

  1. No portal do Azure, navegue até sua VM Windows.
  2. No painel de navegação esquerdo, selecione Conectar.
  3. Selecione Bastion.
  4. Insira as credenciais de usuário e senha da sua VM Windows.
  5. Clique em Conectar.

    • Ação Esperada: Uma nova aba do navegador será aberta, e você verá a área de trabalho da sua VM Windows. A conexão é totalmente baseada em HTML5 no navegador.

4. Conectando-se a uma VM Linux via SSH

Vamos conectar a uma VM Linux sem expor sua porta SSH.

  1. No portal do Azure, navegue até sua VM Linux.
  2. No painel de navegação esquerdo, selecione Conectar.
  3. Selecione Bastion.
  4. Escolha o Tipo de autenticação: Nome de usuário e senha ou Chave privada SSH.
    • Se Nome de usuário e senha, insira as credenciais da sua VM Linux.
    • Se Chave privada SSH, carregue seu arquivo de chave privada (.pem ou .ppk).
  5. Clique em Conectar.

    • Ação Esperada: Uma nova aba do navegador será aberta, e você verá o terminal da sua VM Linux, permitindo que você execute comandos SSH.

Validação e Teste

É crucial validar que o acesso via Azure Bastion está funcionando conforme o esperado e que as VMs não estão acessíveis de outras formas.

1. Verificando a Conectividade do Bastion

  1. Cenário: Tente acessar suas VMs Windows e Linux usando o Azure Bastion, conforme os passos 3 e 4 acima.
  2. Ação Esperada: As conexões RDP e SSH devem ser estabelecidas com sucesso através do navegador.
  3. Verificação:
    • Confirme que você pode interagir com a área de trabalho da VM Windows e executar comandos no terminal da VM Linux.

2. Verificando a Inacessibilidade Direta das VMs

  1. Cenário: Tente acessar suas VMs diretamente da internet usando um cliente RDP ou SSH, apontando para o IP público da VM (se houver) ou para o IP privado (se você estiver fora da VNet).
  2. Ação Esperada: As tentativas de conexão direta devem falhar, pois as portas RDP/SSH não devem estar expostas publicamente.
  3. Verificação:
    • Se suas VMs tiverem IPs públicos, verifique as Regras de Grupo de Segurança de Rede (NSG) associadas à interface de rede da VM ou à sub-rede da VM. Certifique-se de que as portas 3389 (RDP) e 22 (SSH) não estão abertas para Any ou Internet.
    • Idealmente, as VMs acessadas via Bastion não devem ter IPs públicos associados.

3. Monitoramento de Sessões do Bastion (SKU Standard)

Se você provisionou o Bastion com o SKU Standard, pode monitorar as sessões ativas.

  1. No portal do Azure, navegue até seu recurso Azure Bastion (myBastionHost).
  2. No painel de navegação esquerdo, em Monitoramento, selecione Sessões.
  3. Você verá uma lista de sessões RDP e SSH ativas, incluindo o usuário, o IP de origem e a VM de destino.

Dicas de Segurança e Melhores Práticas

  • Remova IPs Públicos das VMs: Após configurar o Azure Bastion, remova quaisquer IPs públicos das suas VMs. Isso é o principal benefício de segurança do Bastion.
  • Configure NSGs Adequadamente: Certifique-se de que os Grupos de Segurança de Rede (NSGs) das sub-redes das suas VMs e da AzureBastionSubnet estejam configurados corretamente para permitir apenas o tráfego necessário. O Bastion precisa de acesso às portas RDP/SSH privadas das VMs, mas as VMs não precisam de acesso de entrada público.
  • Princípio do Privilégio Mínimo: Atribua apenas as permissões necessárias para que os usuários possam se conectar às VMs via Bastion. O RBAC do Azure pode ser usado para controlar quem pode usar o Bastion.
  • Autenticação Forte: Sempre use autenticação forte para as credenciais das suas VMs. Combine com o Azure AD para autenticação e, se possível, Acesso Condicional para exigir MFA para o acesso ao portal do Azure, que por sua vez controla o acesso ao Bastion.
  • Gravação de Sessão (SKU Premium): Para ambientes que exigem conformidade rigorosa e auditoria, considere usar o SKU Premium do Azure Bastion para gravar sessões RDP e SSH. Isso fornece um registro visual do que foi feito nas VMs.
  • Monitoramento de Logs: Monitore os logs de atividade do Azure para o Bastion e os logs de segurança das suas VMs para detectar atividades suspeitas ou tentativas de acesso não autorizado.
  • Atualizações e Patches: Mantenha suas VMs atualizadas com os patches de segurança mais recentes para mitigar vulnerabilidades internas.

Troubleshooting Comum

  • Não consigo ver a opção Bastion ao tentar conectar à VM:
    • Verifique se o Azure Bastion foi provisionado na mesma VNet (ou VNet emparelhada) que a VM.
    • Certifique-se de que a AzureBastionSubnet existe e tem o prefixo de endereço correto (/27 ou maior).
    • Verifique se o Bastion está no estado Em execução no portal do Azure.
  • Erro de conexão RDP/SSH via Bastion:
    • Credenciais inválidas: Verifique se as credenciais de usuário e senha (ou chave SSH) estão corretas para a VM.
    • Problemas de NSG: Confirme se o NSG da sub-rede da VM permite tráfego de entrada nas portas 3389 (RDP) ou 22 (SSH) da AzureBastionSubnet.
    • Firewall da VM: Verifique se o firewall interno da VM não está bloqueando as conexões RDP/SSH.
    • Serviço RDP/SSH não está em execução: Certifique-se de que o serviço RDP (para Windows) ou SSH (para Linux) está em execução na VM.
  • Desempenho lento ou desconexões:
    • Verifique a largura de banda da sua conexão com a internet. O Bastion transmite o vídeo da sessão para o seu navegador.
    • Considere usar o SKU Standard ou Premium do Bastion, que oferecem melhor desempenho e recursos adicionais.
    • Verifique se há alta utilização de CPU ou memória na VM de destino, o que pode afetar o desempenho da sessão.
  • Não consigo acessar recursos internos da VM via Bastion:
    • O Azure Bastion fornece conectividade à VM. Uma vez conectado à VM, o acesso a outros recursos internos da VNet dependerá das configurações de rede da própria VM e das regras de NSG aplicáveis.

Conclusão

O Azure Bastion é um componente essencial para a segurança de ambientes de nuvem, proporcionando um método seguro e simplificado para acessar máquinas virtuais. Ao eliminar a exposição direta de portas RDP/SSH à internet, ele reduz significativamente a superfície de ataque e fortalece a postura de segurança geral. A implementação cuidadosa, a integração com as melhores práticas de segurança e o monitoramento contínuo são fundamentais para maximizar os benefícios do Bastion. Com este guia prático, os profissionais de segurança e administradores de TI estarão bem equipados para configurar, validar e gerenciar o Azure Bastion, garantindo que o acesso às suas máquinas virtuais seja sempre seguro e em conformidade.


Referências:

[1] Microsoft Learn. O que é o Azure Bastion?. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview [2] Microsoft Learn. Considerações de design e planejamento para usar o Azure Bastion para habilitar o acesso remoto seguro a máquinas virtuais no Azure. Disponível em: https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access [3] Microsoft Learn. Conectar a uma VM do Windows usando RDP - Azure Bastion. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4] Microsoft Learn. Configurar um host do Bastion. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5] Microsoft Learn. Conectar-se a uma VM do Linux usando SSH - Azure Bastion. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6] Microsoft Learn. Monitoramento e gerenciamento de sessão do Azure Bastion. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7] Microsoft Learn. Configurar a gravação de sessão do Bastion. Disponível em: https://learn.microsoft.com/pt-br/azure/bastion/session-recording