Acessar instâncias remotas de forma segura com um host bastion

Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.

Este tutorial o orienta na implantação de um host bastion para acessar com segurança instâncias remotas em uma nuvem privada virtual (VPC). Um host bastion é uma instância que é provisionada com um endereço IP público e pode ser acessada por meio de SSH. Depois de configurado, o host do bastion atua como um servidor de salto, permitindo a conexão segura com instâncias provisionadas sem um endereço IP público.

Para reduzir a exposição dos servidores na VPC, você criará e usará um host bastião. As tarefas administrativas nos servidores individuais serão executadas usando SSH, com proxy por meio do bastion. O acesso aos servidores e o acesso regular à Internet por meio dos servidores, por exemplo, para a instalação de software, serão permitidos somente com um grupo de segurança de manutenção especial conectado a esses servidores.

Objetivos

  • Aprenda como configurar um host bastion e grupos de segurança com regras
  • Gerenciar servidores de forma segura por meio do host bastion

Arquitetura*Diagrama de
do

  1. Depois de configurar a infraestrutura necessária (sub-redes, grupos de segurança com regras, instâncias de servidores virtuais) na nuvem, o administrador DevOps ) se conecta (SSH) ao host do bastião usando a chave SSH privada.
  2. O administrador designa a um grupo de segurança de manutenção as regras de saída adequadas.
  3. O administrador se conecta (SSH) de forma segura ao endereço IP privado da instância por meio do host bastion para instalar ou atualizar qualquer software necessário, por exemplo, um servidor da web
  4. O usuário da Internet faz uma solicitação de HTTP/HTTPS para o servidor da web.

Antes de Iniciar

  • Verifique as permissões do usuário. Certifique-se de que sua conta do usuário tenha permissões suficientes para criar e gerenciar recursos VPC. Consulte a lista de permissões necessárias para a VPC.
  • Você precisa de uma chave SSH para se conectar aos servidores virtuais. Se você não tiver uma chave SSH, consulte as instruções para criar uma chave para a VPC.
  • O tutorial assume que você está incluindo o host bastion em uma nuvem privada virtual existente. Se você não tiver um VPC em sua conta, o criar uma VPC antes de continuar com as próximas etapas

Criar um host bastion

Nesta seção, você criará e configurará um host bastion juntamente com um grupo de segurança em uma sub-rede separada.

Criar uma sub-rede

  1. Clique em Sub-redes em Rede na área de janela esquerda e, em seguida, clique em Criar.

    1. Em Local, selecione uma geografia, região e zona.
    2. Insira vpc-secure-bastion-subnet como o nome e, em seguida, selecione a Virtual Private Cloud que você criou.
    3. Selecione o mesmo grupo de recursos da sua VPC.
    4. Deixe o prefixo do endereço como está e selecione o Total de endereços IP como 256.
  2. Alterne o Gateway público para Conectado.

    Anexe um gateway público à sub-rede para permitir que todos os recursos anexados se comuniquem com a Internet pública.

  3. Clique em Criar sub-rede para provisioná-la.

Criar e configurar o grupo de segurança de bastion

Vamos criar um grupo de segurança e configurar regras de entrada para sua VSI (instância de servidor virtual) do bastion.

  1. Selecione Grupos de segurança em Rede e, em seguida, clique em Criar.

  2. Insira vpc-secure-bastion-sg como nome e selecione o VPC que você criou anteriormente.

  3. Selecione o mesmo grupo de recursos da sua VPC.

  4. Agora, crie as regras de entrada a seguir clicando em Incluir na seção de entrada. Elas permitem acesso SSH e Ping (ICMP). Os valores são mostrados na tabela abaixo.

    Bastion: regras de entrada
    Protocolo Porta / Valor Tipo de origem
    TCP Intervalo de porta: 22-22 Qualquer
    ICMP Tipo: 8, Código: Deixar vazio Qualquer

    Para aprimorar ainda mais a segurança, o tráfego de entrada pode ser restrito à rede da empresa ou a uma rede doméstica típica. Você pode executar curl ipecho.net/plain ; echo para obter o endereço IP externo da sua rede e usá-lo.

  5. Clique em Criar grupo de segurança para criá-lo.

Criar uma instância de bastion

Com a sub-rede e o grupo de segurança já em vigor, em seguida, crie a instância de servidor virtual de bastion.

  1. Em Sub-redes na área de janela esquerda, selecione vpc-secure-bastion-subnet.
  2. Clique em Recursos anexados e, em Instâncias anexadas, clique em Criar para provisionar um novo servidor virtual chamado vpc-secure-bastion-vsi no mesmo grupo de recursos da sua sub-rede.
  3. Escolha um local e certifique-se de usar o mesmo local novamente mais tarde.
  4. Em Imagem clique em Alterar imagem. Use o campo de procura para selecionar Ubuntu Linux como seu Sistema operacional. É possível selecionar qualquer versão da imagem.
  5. Clique em Alterar perfil, selecione Cálculo como categoria e selecione cx2-2x4 (2 vCPUs e 4 GB de RAM) como seu perfil.
  6. Crie uma nova chave SSH, clique em New key (Nova chave)
    1. Insira vpc-ssh-key como o nome da chave.
    2. Selecione o mesmo grupo de recursos do seu VSI.
    3. Deixe a Região no estado em que se encontra.
    4. Copie o conteúdo de sua chave SSH local existente e cole-o em Chave pública.
    5. Clique em Incluir chave SSH.
  7. Role para selecionar a VPC em Rede
  8. Certifique-se de que Interface de rede virtual esteja selecionada e vpc-secure-bastion-subnet esteja listado como sub-rede. Clique no ícone de edição para essa sub-rede
    1. Primeiro, em Conexão de rede e detalhes da Interface de rede virtual, verifique se vpc-secure-bastion-subnet está selecionado. Clique em Avançar.
    2. Para Network na seção Security Groups, desmarque o grupo de segurança padrão e marque vpc-secure-bastion-sg. Clique em Avançar.
    3. No diálogo Configuração de IP, deixe tudo como está e clique em Avançar.
    4. Por último, revise tudo e conclua clicando em Salvar..
  9. Clique em Criar servidor virtual.
  10. Depois que a instância estiver ativa e Executando, clique em vpc-secure-bastion-vsi e reserve um IP flutuante clicando no ícone Editar em Interfaces de rede, em seguida, em Endereço IP flutuante selecionando Reservar um novo IP flutuante. Clique em Salvar para concluir.

Testar seu bastion

Depois que o endereço IP flutuante do bastion estiver ativo, tente se conectar a ele usando ssh:

ssh -i ~/.ssh/<PRIVATE_KEY> root@<BASTION_FLOATING_IP_ADDRESS>

Configurar um grupo de segurança com regras de acesso de manutenção

Com acesso ao bastion funcionando, continue e crie o grupo de segurança para tarefas de manutenção, como instalar e atualizar o software.

  1. Selecione Grupos de segurança em Rede e, em seguida, clique em Criar.

  2. Insira vpc-seguro-manutenção-sg como nome e selecione o VPC que você criou anteriormente.

  3. Selecione o mesmo grupo de recursos da sua VPC.

  4. Em seguida, inclua a regra de entrada mostrada na tabela abaixo. Ela permite acesso SSH por meio do host bastion.

    Manutenção: regras de entrada
    Protocolo Porta / Valor Tipo de origem Fonte
    TCP Portas 22-22 Grupo de segurança vpc-secure-bastion-sg
  5. Em seguida, inclua a regra de saída mostrada na tabela abaixo. Ela permite acesso SSH por meio do host bastion.

    Manutenção: regras de saída
    Protocolo Porta / Valor Tipo de destino
    TCP Portas 80-80 Qualquer
    TCP Portas 443-443 Qualquer
    TCP Portas 53-53 Qualquer
    UDP Portas 53-53 Qualquer

    As solicitações do servidor DNS são endereçadas à porta 53. O DNS usa TCP para a transferência de Zona e UDP para consultas de nome regulares (primárias) ou reversas. As solicitações de HTTP estão na porta 80 e 443.

  6. Clique em Criar grupo de segurança para criá-lo.

  7. Navegue para Grupos de segurança e, em seguida, selecione vpc-secure-bastion-sg.

  8. Finalmente, edite o grupo de segurança e inclua a regra de saída a seguir.

    Bastion: regras de saída
    Protocolo Tipo de destino Destino Porta / Valor
    TCP Grupo de segurança vpc-secure-maintenance-sg Portas 22-22

Usar o host bastion para acessar outras instâncias na VPC

Nesta seção, você criará uma sub-rede com a instância de servidor virtual e um grupo de segurança.

Se você já tiver instâncias de servidor virtual em sua VPC às quais deseja se conectar, ignore as próximas três seções e comece em Incluir instância(s) de servidor virtual no grupo de segurança de manutenção.

Criar uma sub-rede

Para criar uma nova sub-rede,

  1. Clique em Sub-redes em Rede na área de janela esquerda e, em seguida, clique em Criar.
    1. Insira vpc-secure-private-subnet como o nome, em seguida, selecione a VPC que você criou.
    2. Selecione o mesmo grupo de recursos da sua VPC.
    3. Selecione um Local.
    4. Deixe o prefixo do endereço como está e selecione o Total de endereços IP como 256.
  2. Alterne o Gateway público para Conectado.
  3. Clique em Criar sub-rede para provisioná-la.

Criar um grupo de segurança

Para criar um novo grupo de segurança:

  1. Clique em Grupos de segurança em Rede e, em seguida, clique em Criar.
  2. Insira vpc-secure-private-sg como o nome e selecione a VPC que você criou anteriormente.
  3. Clique em Criar grupo de segurança.

Criar uma instância de servidor virtual

Para criar uma instância de servidor virtual na sub-rede recém-criada:

  1. Clique na sub-rede vpc-secure-private-subnet criada anteriormente sob Sub-redes.
  2. Clique em Recursos anexados e, em Instâncias anexadas, clique em Criar.
  3. Para configurar a instância:
    1. Insira um nome exclusivo, vpc-secure-private-vsi e um grupo de recursos como anteriormente.
    2. Selecione a mesma Localização já usada pelo servidor virtual do bastion.
    3. Selecione tipo Público de servidor virtual.
    4. Em Imagem clique em Alterar imagem. Use o campo de procura para selecionar Ubuntu Linux como seu Sistema operacional. É possível selecionar qualquer versão da imagem.
    5. Clique em Alterar perfil, selecione Cálculo como categoria e selecione cx2-2x4 (2 vCPUs e 4 GB de RAM) como seu perfil.
    6. Para Chaves SSH, selecione a chave SSH que você criou anteriormente para o bastion.
  4. Mais abaixo, selecione a VPC criada. Semelhante ao acima, clique no ícone de edição para vpc-secure-private-subnet em Detalhes da conexão de rede e da interface de rede virtual
    1. Em seguida, verifique se vpc-secure-private-subnet está selecionado.. Clique em Avançar.
    2. Para Network na seção Security Groups, desmarque o grupo de segurança padrão e marque vpc-secure-private-sg. Clique em Avançar.
    3. No diálogo Configuração de IP, deixe tudo como está e clique em Avançar.
    4. Por último, revise tudo e conclua clicando em Salvar..
  5. Clique em Criar servidor virtual.

Incluir instâncias de servidor virtual no grupo de segurança de manutenção

Para trabalho administrativo nos servidores, é necessário associar os servidores virtuais específicos ao grupo de segurança de manutenção. A seguir, você ativará a manutenção, efetuará login no servidor privado, atualizará as informações do pacote de software, em seguida, desassociará o grupo de segurança novamente.

Vamos ativar o grupo de segurança de manutenção para o servidor.

  1. Navegue para Grupos de segurança e selecione o grupo de segurança vpc-secure-maintenance-sg.
  2. Clique na guia Recursos anexados e no filtro selecione Interface do servidor virtual.
  3. Clique em Editar interfaces do servidor virtual para ver uma lista de instâncias de servidor virtual. Expanda a lista e marque a seleção ao lado da coluna Interfaces para vpc-secure-private-vsi
  4. Clique em Salvar para que as mudanças sejam aplicadas.

Conectar-se à instância

Para usar SSH em uma instância usando seu IP privado, você usará o host bastion como seu host de salto.

  1. No menu esquerdo, selecione Instâncias de servidor virtual na seção Cálculo. Observe o endereço IP reservado (IP privado) para vpc-secure-private-vsi.

  2. Use o comando ssh com -J para fazer login no servidor com o endereço IP flutuante do bastion que você usou anteriormente e o endereço IP privado do servidor que você acabou de procurar.

    ssh -J root@<BASTION_FLOATING_IP_ADDRESS> root@<PRIVATE_IP_ADDRESS>
    

    O sinalizador -J é suportado no OpenSSH versão 7.3+. Em versões mais antigas, o -J não está disponível. Nesse caso, a maneira mais segura e direta é usar o modo de encaminhamento de stdio do ssh (-W) para "gerar bounce" da conexão por meio de um host bastion, por exemplo, ssh -o ProxyCommand="ssh -W %h:%p root@<BASTION_FLOATING_IP_ADDRESS" root@<PRIVATE_IP_ADDRESS>

Instalar software e executar tarefas de manutenção

Uma vez conectado, é possível instalar o software no servidor virtual ou executar tarefas de manutenção.

  1. Primeiro, atualize as informações do pacote de software:
    apt-get update
    
  2. Instale o software desejado, por exemplo, Nginx ou MySQL ou IBM Db2.

Quando terminar, desconecte-se do servidor com o comando exit.

Para permitir solicitações de HTTP/HTTPS por meio do usuário da Internet, designe um IP flutuante para as portas necessárias de VSI e abertas (80 - HTTP e 443 - HTTPS) por meio das regras de entrada no grupo de segurança da VSI privada.

Desativar o grupo de segurança de manutenção

Depois de terminar de instalar o software ou executar a manutenção, será necessário remover os servidores virtuais do grupo de segurança de manutenção para mantê-los isolados.

  1. Navegue para Grupos de segurança e selecione o grupo de segurança vpc-secure-maintenance-sg.
  2. Clique em Recursos anexados e, em seguida, em Editar interfaces de servidor virtual
  3. Expanda as instâncias do servidor virtual e desmarque a seleção ao lado da coluna Interfaces para vpc-secure-private-vsi.
  4. Clique em Salvar para que as mudanças sejam aplicadas.

É possível repetir o comando ssh de cima com a opção de host de salto. Deve falhar agora.

Remover recursos

  1. Alterne para Instâncias de servidor virtual e clique no respectivo menu de ação de Parar e de Excluir para suas instâncias.
  2. Depois que as VSIs desaparecerem, alterne para Sub-redes e exclua suas sub-redes.
  3. Depois que as sub-redes tiverem sido excluídas, alterne para a guia VPCs e exclua a sua VPC.

Ao usar o console, pode ser necessário atualizar seu navegador para ver informações de status atualizadas depois de excluir um recurso.