Configurar manualmente os discos importados


Depois de importar manualmente um disco virtual para o Compute Engine, você precisa otimizar essas imagens para que possam usar recursos específicos do ambiente do Compute Engine.

Conteúdo

Instalar o ambiente convidado do Compute Engine

Você precisa instalar o ambiente convidado antes de poder usar os principais recursos do Compute Engine. Para saber quando é necessário instalar manualmente o ambiente convidado, consulte quando instalar ou atualizar manualmente o ambiente convidado .

Instale o ambiente convidado na instância de VM em execução que você criou após importar manualmente a imagem existente . Para realizar a instalação, acesse a instância da VM via SSH com uma conta de usuário que você criou antes de importá-la ou interagindo com o Serial Console .

Configure sua imagem importada para o Compute Engine

Você pode executar a imagem do disco de inicialização no Compute Engine sem alterações adicionais, mas também pode otimizar ainda mais a imagem para que ela seja executada de maneira ideal no Compute Engine e tenha acesso a todos os recursos do Compute Engine.

  • Edite o arquivo ntp.conf para incluir apenas a entrada server metadata.google.internal iburst Google NTP server.

  • Defina o fuso horário para UTC:

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
  • Para garantir capacidade de rede de alto desempenho, use as seguintes configurações de rede recomendadas:

    • Use o cliente ISC DHCP .
    • Defina o MTU do DHCP para o MTU da rede. O servidor DHCP do Compute Engine utiliza esse parâmetro como a opção interface-mtu , que a maioria dos clientes respeita. Para obter mais informações sobre MTUs de rede, consulte a visão geral da unidade de transmissão máxima .
    • Se você não planeja configurar endereços IPv6 , desative o IPv6.
    • Remova regras de rede persistentes para evitar que a instância se lembre de endereços MAC. Por exemplo:

      rm -f /etc/udev/rules.d/70-persistent-net.rules
    • Desative o firewall do sistema operacional, a menos que você tenha requisitos específicos não compatíveis com as regras de firewall do Compute Engine. O Compute Engine fornece um firewall para tráfego de entrada e saída. Para obter mais informações sobre firewalls, consulte Visão geral das regras de firewall .

  • Para garantir capacidade de rede e disco de alto desempenho, desative ou remova o daemon irqbalance . Este daemon não equilibra corretamente as solicitações de IRQ para os sistemas operacionais convidados em instâncias de máquinas virtuais (VM). Em vez disso, use os scripts que fazem parte do ambiente convidado para equilibrar corretamente as configurações de IRQ para CPUs virtuais.

  • Configure o acesso SSH à imagem base:

    • Desative o login ssh raiz.
    • Desative a autenticação por senha.
    • Desative a autenticação baseada em host.
    • Habilite a verificação rigorosa da chave do host.
    • Use ServerAliveInterval para manter as conexões abertas.
    • Remova as chaves SSH da sua imagem para que outras pessoas não possam acessar as chaves públicas ou privadas da sua imagem. Em vez disso, use o Compute Engine para gerenciar o acesso às instâncias .

    • Edite o arquivo /etc/ssh/ssh_config para usar a seguinte configuração:

      Host *
      Protocol 2
      ForwardAgent no
      ForwardX11 no
      HostbasedAuthentication no
      StrictHostKeyChecking no
      Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
      Tunnel no
      
      # Compute Engine times out connections after 10 minutes of inactivity.
      # Keep alive ssh connections by sending a packet every 7 minutes.
      ServerAliveInterval 420
      
    • Edite o arquivo /etc/ssh/sshd_config para usar a seguinte configuração:

      # Disable PasswordAuthentication because ssh keys are more secure.
      PasswordAuthentication no
      
      # Disable root login. Using sudo provides better auditing.
      PermitRootLogin no
      
      PermitTunnel no
      AllowTcpForwarding yes
      X11Forwarding no
      
      # Compute Engine times out connections after 10 minutes of inactivity.
      # Keep alive ssh connections by sending a packet every 7 minutes.
      ClientAliveInterval 420
      

Depois de configurar e otimizar seu disco de inicialização no Compute Engine, crie uma imagem desse disco de inicialização para poder criar instâncias a partir de uma versão totalmente otimizada da imagem, em vez de ter que configurar cada instância sempre que criá-la.

Configurar práticas recomendadas de segurança

Você deve sempre fornecer um ambiente de sistema operacional seguro, mas pode ser difícil encontrar um equilíbrio entre um ambiente seguro e um ambiente acessível. Máquinas virtuais vulneráveis ​​a ataques podem consumir recursos caros. O Google recomenda enfaticamente que suas imagens obedeçam às seguintes práticas recomendadas de segurança:

  • Minimize a quantidade de software instalado por padrão (por exemplo, execute uma instalação mínima do sistema operacional).
  • Habilite atualizações automáticas.
  • Por padrão, desative todos os serviços de rede, exceto SSH, DHCP e NTPD. Você pode permitir que um servidor de e-mail, como o Postfix, seja executado se estiver aceitando apenas conexões do host local.
  • Não permita portas de escuta externa, exceto sshd.
  • Instale o pacote denyhosts para ajudar a evitar tentativas de login de força bruta SSH.
  • Remova todas as contas desnecessárias de não usuários da instalação padrão.
  • Em /etc/passwd , defina o shell de todas as contas que não são de usuário para /sbin/nologin ou /usr/sbin/nologin (dependendo de onde seu sistema operacional instalou o nologin).
  • Configure seu sistema operacional para usar SHA512 salgado para senhas em /etc/shadow .
  • Configure e configure pam_cracklib para senhas fortes.
  • Configure e configure pam_tally para bloquear contas por 5 minutos após 3 falhas.
  • Em /etc/shadow , configure a conta root para ser bloqueada por padrão. Execute o seguinte comando para bloquear a conta root:

    usermod -L root
  • Negue root em /etc/ssh/sshd_config adicionando a seguinte linha:

    PermitRootLogin no
  • Crie perfis AppArmor ou SELinux para todos os serviços padrão em execução voltados para a rede.

  • Use os recursos do sistema de arquivos sempre que possível para eliminar a necessidade do bit S*ID e fornecer um controle mais granular.

  • Habilite mitigações de exploração do compilador e do tempo de execução ao compilar software voltado para a rede. Por exemplo, aqui estão algumas das mitigações que o GNU Compiler Collection (GCC) oferece e como ativá-las:

    • Proteção contra quebra de pilha: habilite isso com -fstack-protector . Por padrão, esta opção protege funções com um buffer alocado na pilha com mais de oito bytes. Para aumentar a proteção cobrindo funções com buffers de pelo menos quatro bytes, adicione --param=ssp-buffer-size=4 .
    • Randomização de layout de espaço de endereço (ASLR): habilite isso construindo um executável independente de posição com -fPIC -pie .
    • Proteções Glibc: Habilite essas proteções com -D_FORTIFY_SOURCE=2 .
    • Proteção Global Offset Table (GOT): habilite esse recurso do carregador de tempo de execução com -Wl,-z,relro,-z,now .
    • Erros em tempo de compilação para strings de formato ausentes: -Wformat -Wformat-security -Werror=format-security
  • Desative CAP_SYS_MODULE , que permite carregar e descarregar módulos do kernel. Para desativar esse recurso, edite o arquivo /etc/sysctl.conf e inclua a seguinte configuração:

    kernel.modules_disabled = 1
  • Remova a tabela de símbolos do kernel :

    sudo rm /boot/System.map

O que vem a seguir