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:
- Assinatura Azure Ativa: Uma assinatura Azure para criar e gerenciar recursos.
- Acesso Administrativo: Uma conta com a função de
ProprietárioouColaboradorna assinatura ou grupo de recursos onde as VMs estão localizadas. - Rede Virtual Azure (VNet): Uma rede virtual existente que contém as VMs às quais você deseja se conectar.
- Sub-rede Dedicada para Azure Bastion: Uma sub-rede dentro da sua VNet com o nome
AzureBastionSubnete 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]. - 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.
- Abra seu navegador e navegue até o portal do Azure:
https://portal.azure.com. - Faça login com uma conta que tenha as permissões necessárias.
- No campo de pesquisa superior, digite
Redes virtuaise selecione-o nos resultados. - Selecione a rede virtual onde suas VMs estão localizadas.
- No painel de navegação esquerdo, em
Configurações, selecione Sub-redes. -
Clique em
+ Sub-rede. -
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.
- Nome: Digite
-
Clique em Salvar.
- Explicação: A
AzureBastionSubneté onde o serviço Azure Bastion será implantado. É crucial que o nome seja exatamenteAzureBastionSubnetpara que o serviço possa ser provisionado corretamente.
- Explicação: A
2. Provisionando o Azure Bastion
Agora que a sub-rede está pronta, podemos implantar o serviço Bastion.
- No portal do Azure, no campo de pesquisa superior, digite
Bastione selecione-o nos resultados. -
Clique em
+ Criar. -
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) ouStandard(para recursos adicionais como gravação de sessão, compartilhamento de link, etc.). Para este guia, usaremosBásico.
-
Rede virtual:
- Rede virtual: Selecione a VNet onde você criou a
AzureBastionSubnet. - Sub-rede: A
AzureBastionSubnetserá 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.
- Rede virtual: Selecione a VNet onde você criou a
-
Clique em
Revisar + criare 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.
- No portal do Azure, navegue até sua VM Windows.
- No painel de navegação esquerdo, selecione Conectar.
- Selecione Bastion.
- Insira as credenciais de usuário e senha da sua VM Windows.
-
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.
- No portal do Azure, navegue até sua VM Linux.
- No painel de navegação esquerdo, selecione Conectar.
- Selecione Bastion.
- Escolha o
Tipo de autenticação:Nome de usuário e senhaouChave 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 (.pemou.ppk).
- Se
-
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
- Cenário: Tente acessar suas VMs Windows e Linux usando o Azure Bastion, conforme os passos 3 e 4 acima.
- Ação Esperada: As conexões RDP e SSH devem ser estabelecidas com sucesso através do navegador.
- 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
- 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).
- Ação Esperada: As tentativas de conexão direta devem falhar, pois as portas RDP/SSH não devem estar expostas publicamente.
- 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
AnyouInternet. - Idealmente, as VMs acessadas via Bastion não devem ter IPs públicos associados.
- 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
3. Monitoramento de Sessões do Bastion (SKU Standard)
Se você provisionou o Bastion com o SKU Standard, pode monitorar as sessões ativas.
- No portal do Azure, navegue até seu recurso Azure Bastion (
myBastionHost). - No painel de navegação esquerdo, em
Monitoramento, selecione Sessões. - 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
AzureBastionSubnetestejam 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
AzureBastionSubnetexiste e tem o prefixo de endereço correto (/27ou maior). - Verifique se o Bastion está no estado
Em execuçãono 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