Configurar manualmente discos importados


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

Índice

Instalar o ambiente convidado do Compute Engine

Você precisa instalar o ambiente convidado antes de usar os principais recursos do Compute Engine. Para descobrir quando você precisa 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 depois de importar manualmente sua imagem atual. Para executar a instalação, acesse a instância de VM usando o SSH com uma conta de usuário que você criou antes de importá-la ou interagindo com o console serial.

Configurar sua imagem importada para o Compute Engine

É possível executar a imagem do disco de inicialização no Compute Engine sem outras alterações. No entanto, você também pode otimizá-la para o Compute Engine e ter acesso a todos os recursos dele.

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

  • Defina o fuso horário como UTC:

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

    • Use o cliente ISC DHCP.
    • Defina a MTU DHCP como a MTU da rede. O servidor DHCP do Compute Engine atende a esse parâmetro como a opção interface-mtu, que é seguida pela maioria dos clientes. Para 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 as regras de rede permanentes para evitar que a instância se lembre dos endereços MAC. Exemplo:

      rm -f /etc/udev/rules.d/70-persistent-net.rules
    • Desative o firewall do sistema operacional, a não ser 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 mais informações sobre firewalls, consulte Visão geral sobre regras de firewall.

  • Para garantir alto desempenho de rede e capacidade de disco, desative ou remova o daemon irqbalance. Ele não faz o balanceamento correto das solicitações IRQ para os sistemas operacionais convidados nas instâncias de máquina virtual. Em vez dele, use os scripts que compõem o ambiente convidado para fazer o balanceamento correto das configurações de IRQ para CPUs virtuais.

  • Configure o acesso SSH para a imagem de base:

    • Desative o login raiz de ssh.
    • Desative a autenticação por senha.
    • Desative a autenticação baseada em host.
    • Ative a verificação exata de chave de host.
    • Use ServerAliveInterval para manter as conexões abertas.
    • Remova as chaves SSH da imagem para que outros usuários não consigam acessar as chaves públicas ou privadas na 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 configuração a seguir:

      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 configuração a seguir:

      # 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 o disco de inicialização no Compute Engine, crie uma imagem desse disco para criar instâncias a partir de uma versão totalmente otimizada, em vez de precisar configurar cada nova instância.

Configurar práticas recomendadas de segurança

É necessário sempre proporcionar um ambiente de sistema operacional seguro, mas pode ser difícil encontrar um equilíbrio entre segurança e acessibilidade. Máquinas virtuais vulneráveis a ataques podem consumir recursos caros. O Google recomenda que suas imagens atendam a estas práticas recomendadas de segurança:

  • Minimize a quantidade de softwares instalados por padrão (por exemplo, instale o mínimo de recursos do sistema operacional).
  • Ative as atualizações automáticas.
  • Por padrão, desative todos os serviços de rede, exceto SSH, DHCP e NTPD. Se apenas conexões do localhost forem aceitas, será possível permitir a execução de um servidor de e-mail, como o Postfix.
  • Não permita a escuta externa de portas, exceto sshd.
  • Instale o pacote denyhosts para impedir as tentativas de login forçado de SSH.
  • Remova todas as contas que não são de usuário desnecessárias da instalação padrão.
  • Em /etc/passwd, defina o shell de todas as contas que não são de usuário como /sbin/nologin ou /usr/sbin/nologin (dependendo de onde seu sistema operacional estiver instalado).
  • Configure o sistema operacional para usar senhas SHA512 com sal em /etc/shadow.
  • Configure e ajuste o pam_cracklib (em inglês) para senhas fortes.
  • Configure e ajuste o pam_tally para bloquear contas por cinco minutos após três falhas.
  • Em /etc/shadow, configure a conta raiz a ser bloqueada por padrão. Execute o comando a seguir para bloquear a conta raiz:

    usermod -L root
  • Adicione a linha a seguir para negar a raiz em /etc/ssh/sshd_config:

    PermitRootLogin no
  • Crie os perfis AppArmor ou SELinux (links em inglês) para todos os serviços padrão em execução usados pela rede.

  • Use os recursos do sistema de arquivos, quando possível, para acabar com a necessidade do bit S*ID e oferecer um controle mais granular.

  • Ative as mitigações de exploração do compilador e de ambiente de execução ao compilar um software usado pela rede. Por exemplo, veja a seguir algumas das mitigações que o GNU Compiler Collection (GCC) oferece e como ativá-las:

    • Proteção contra destruição de pilha: ative com -fstack-protector. Por padrão, essa opção protege as funções com um buffer alocado em pilha maior que oito bytes. Para aumentar a proteção cobrindo funções com buffers de pelo menos quatro bytes, adicione --param=ssp-buffer-size=4.
    • Address Space Layout Randomization (ASLR): para ativá-la, compile um executável independente de posição com -fPIC -pie.
    • Proteções da glibc: ative essas proteções com -D_FORTIFY_SOURCE=2.
    • Proteção Global Offset Table (GOT): ative esse recurso do carregador de ambiente de execução com -Wl,-z,relro,-z,now.
    • Erros de tempo de compilação para strings ausentes de formato: -Wformat -Wformat-security -Werror=format-security.
  • Desative o CAP_SYS_MODULE, que possibilita o carregamento e o descarregamento de 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

A seguir