Bastion Host | Jumb Box
- Bastion Host | Jumb Box
Um Bastion Host na AWS (Amazon Web Services) é uma instância (servidor) de EC2 configurada para permitir o acesso seguro às instâncias em uma VPC (Virtual Private Cloud) que estão em sub-redes privadas. Ele atua como um ponto de entrada seguro para administradores, que podem se conectar a outras instâncias que não possuem acesso direto à Internet.
Por que usar um Bastion Host?
Em uma arquitetura de rede bem projetada, as instâncias em sub-redes privadas (por exemplo, servidores de banco de dados, servidores de aplicação) não devem ser diretamente acessíveis pela Internet por questões de segurança. No entanto, os administradores ainda precisam gerenciar essas instâncias para realizar manutenção, atualizações, ou qualquer tipo de operação necessária. Para evitar expor essas instâncias diretamente, você usa um Bastion Host.
Características de um Bastion Host:
-
Acesso controlado à sub-rede privada: O Bastion Host é o único ponto de acesso para as sub-redes privadas. Administradores se conectam ao Bastion, e, de lá, acessam as instâncias privadas.
-
Acesso limitado pela Internet: O Bastion Host reside em uma sub-rede pública, o que significa que ele tem um endereço IP público e está conectado a um Internet Gateway, permitindo que administradores externos se conectem a ele. No entanto, o acesso é restrito a portas específicas (geralmente SSH na porta 22 para Linux ou RDP na porta 3389 para Windows) e apenas de endereços IP confiáveis.
-
Segurança: Um Bastion Host deve ser altamente seguro, incluindo:
- Usar um firewall ou Security Group para limitar o acesso a ele.
- Configurar a autenticação via chaves SSH (para Linux) ou credenciais RDP (para Windows).
- Monitorar e registrar todo o acesso ao Bastion, configurando logs e alertas.
-
Sem persistência de dados: Como um Bastion Host é usado apenas para acesso temporário às instâncias privadas, ele geralmente não precisa armazenar dados ou executar aplicativos. Muitas vezes, ele é configurado de forma mínima, com o propósito único de ser uma ponte de acesso.
Arquitetura Básica de um Bastion Host
Aqui está uma visão geral de como um Bastion Host é posicionado dentro de uma arquitetura AWS:
-
Sub-rede Pública:
- O Bastion Host reside nesta sub-rede.
- Possui um endereço IP público para que possa ser acessado pela Internet.
- Está associado a uma route table que inclui uma rota para o Internet Gateway, permitindo que ele se comunique com a Internet.
-
Sub-rede Privada:
- As instâncias privadas (servidores de banco de dados, servidores de aplicação, etc.) residem nesta sub-rede.
- Essas instâncias não têm acesso direto à Internet, exceto, possivelmente, via um NAT Gateway (para fazer atualizações ou baixar pacotes) ou via VPN.
-
Acesso via Bastion Host:
- Administradores se conectam ao Bastion Host pela Internet via SSH (para Linux) ou RDP (para Windows).
- A partir do Bastion Host, eles podem fazer SSH ou RDP em instâncias na sub-rede privada, pois o Bastion pode se comunicar diretamente com essas instâncias.
Configuração de um Bastion Host
-
Criar o Bastion Host:
- Crie uma instância EC2 em uma sub-rede pública.
- Atribua um endereço IP público a esta instância.
- Certifique-se de que a instância tenha acesso à Internet, associando-a a uma tabela de rotas com uma rota para o Internet Gateway.
-
Configurar Security Groups:
- O Security Group do Bastion Host deve permitir conexões SSH (porta 22) ou RDP (porta 3389) apenas de endereços IP específicos (como os IPs de administradores).
- O Bastion Host deve ter permissões para acessar as instâncias na sub-rede privada (normalmente, isso envolve permitir conexões SSH ou RDP nas instâncias privadas provenientes do Bastion).
-
Acesso às Instâncias Privadas:
- As instâncias na sub-rede privada devem ter um Security Group que permite conexões SSH ou RDP vindas do Bastion Host (via o Security Group ou IP do Bastion).
-
Gerenciamento de Chaves SSH ou Senhas RDP:
- Para conectar-se ao Bastion Host, use chaves SSH (para Linux) ou credenciais RDP (para Windows).
- Uma vez no Bastion Host, você pode iniciar uma sessão SSH para as instâncias privadas dentro da VPC.
Exemplo de Uso:
Imagine que você tem um servidor de banco de dados em uma sub-rede privada (10.0.1.0/24) e um servidor de aplicação em outra sub-rede privada (10.0.2.0/24), ambos sem acesso direto à Internet. No entanto, você precisa de acesso a esses servidores para realizar manutenções e atualizações.
Aqui está como você usaria um Bastion Host:
- Crie o Bastion Host em uma sub-rede pública (
10.0.0.0/24) com um IP público, permitindo conexões de administradores. - Conecte-se ao Bastion Host usando SSH (se for Linux) ou RDP (se for Windows).
- A partir do Bastion Host, use SSH para se conectar ao servidor de aplicação ou ao servidor de banco de dados dentro da sub-rede privada.
- Isso garante que as instâncias privadas nunca sejam expostas diretamente à Internet, mantendo a segurança da rede.
Boas Práticas ao Usar um Bastion Host:
-
Use Multi-Factor Authentication (MFA): Para aumentar a segurança, configure MFA para qualquer conexão ao Bastion Host.
-
Automatize o Acesso com AWS Systems Manager Session Manager: Uma alternativa ao Bastion Host tradicional é usar o AWS Systems Manager (SSM) com o Session Manager, que permite acessar instâncias privadas sem a necessidade de expor o Bastion Host à Internet. Ele também remove a necessidade de manter chaves SSH diretamente.
-
Auditoria e Monitoramento: Habilite o monitoramento detalhado e o registro de eventos de conexão para saber quem está acessando o Bastion Host e as instâncias privadas.
-
Bloqueie portas desnecessárias: Permita o acesso apenas nas portas e protocolos essenciais (SSH ou RDP). Feche todas as outras portas.
-
Use o modelo de "jump box" temporário: Algumas empresas configuram Bastion Hosts temporários, que são ativados apenas quando um administrador precisa de acesso e depois desligados, minimizando a janela de exposição.
Conclusão
O Bastion Host é uma prática comum para habilitar acesso seguro a recursos em sub-redes privadas na AWS. Ele serve como uma "ponte" segura que permite a administração remota de instâncias privadas sem expor esses servidores diretamente à Internet. Ele desempenha um papel fundamental na proteção de redes, garantindo que apenas o tráfego necessário e autorizado possa passar.