Configure manualmente os discos importados


Depois de importar manualmente um disco virtual para o Compute Engine, tem de otimizar essas imagens para que possam usar funcionalidades específicas do ambiente do Compute Engine.

Índice

Instale o ambiente de convidado do Compute Engine

Tem de instalar o ambiente convidado antes de poder usar as principais funcionalidades do Compute Engine. Para saber quando tem de instalar manualmente o ambiente convidado, consulte quando instalar ou atualizar manualmente o ambiente convidado.

Instale o ambiente de convidado na instância de VM em execução que criou depois de importar manualmente a sua imagem existente. Para realizar a instalação, aceda à instância de VM através do SSH com uma conta de utilizador que criou antes de a importar ou interagindo com a consola série.

Configure a imagem importada para o Compute Engine

Pode executar a imagem de disco de arranque no Compute Engine sem alterações adicionais, mas também pode otimizar ainda mais a imagem para que seja executada de forma ideal no Compute Engine e tenha acesso a todas as funcionalidades do Compute Engine.

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

  • Defina o fuso horário como UTC:

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

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

      rm -f /etc/udev/rules.d/70-persistent-net.rules
    • Desative a firewall do sistema operativo, a menos que tenha requisitos específicos não suportados pelas regras de firewall do Compute Engine. O Compute Engine fornece uma firewall para tráfego de entrada e saída. Para mais informações sobre firewalls, consulte o artigo Vista geral das regras de firewall.

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

  • Configure o acesso SSH à imagem base:

    • Desative o início de sessão SSH de raiz.
    • Desative a autenticação por palavra-passe.
    • Desative a autenticação baseada no anfitrião.
    • Ative a verificação rigorosa da chave do anfitrião.
    • Use ServerAliveInterval para manter as ligações abertas.
    • Remova as chaves SSH da sua imagem para que outras pessoas não possam aceder às chaves públicas nem privadas na sua imagem. Em alternativa, use o Compute Engine para gerir o acesso às instâncias.

    • Edite o ficheiro /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 ficheiro /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 o disco de arranque no Compute Engine, crie uma imagem a partir desse disco de arranque para poder criar instâncias a partir de uma versão totalmente otimizada da imagem, em vez de ter de configurar cada instância sempre que a cria.

Configurar práticas recomendadas de segurança

Deve fornecer sempre um ambiente de sistema operativo seguro, mas pode ser difícil encontrar um equilíbrio entre um ambiente seguro e um ambiente acessível. As máquinas virtuais vulneráveis a ataques podem consumir recursos dispendiosos. A Google recomenda vivamente que as suas imagens estejam em conformidade com as seguintes práticas recomendadas de segurança:

  • Minimize a quantidade de software instalado por predefinição (por exemplo, faça uma instalação mínima do SO).
  • Ative as atualizações automáticas.
  • Por predefinição, desative todos os serviços de rede, exceto SSH, DHCP e NTPD. Pode permitir que um servidor de correio, como o Postfix, seja executado se apenas aceitar ligações do anfitrião local.
  • Não permitir portas de audição externas, exceto para sshd.
  • Instale o pacote denyhosts para ajudar a evitar tentativas de início de sessão de força bruta de SSH.
  • Remova todas as contas não pertencentes a utilizadores desnecessárias da instalação predefinida.
  • Em /etc/passwd, defina a shell de todas as contas que não sejam de utilizadores como /sbin/nologin ou /usr/sbin/nologin (consoante o local onde o SO instalou o nologin).
  • Configure o seu SO para usar SHA512 com sal para palavras-passe no /etc/shadow.
  • Configure o pam_cracklib para palavras-passe fortes.
  • Configure o pam_tally para bloquear contas durante 5 minutos após 3 falhas.
  • Em /etc/shadow, configure a conta principal para estar bloqueada por predefinição. Execute o seguinte comando para bloquear a conta de raiz:

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

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

  • Use as capacidades do sistema de ficheiros sempre que possível para remover a necessidade do bit S*ID e fornecer um controlo mais detalhado.

  • Ative as mitigações de explorações de tempo de execução e de compilador ao compilar software orientado para a rede. Por exemplo, seguem-se algumas das mitigações que a GNU Compiler Collection (GCC) oferece e como ativá-las:

    • Proteção contra stack smash: ative esta opção com -fstack-protector. Por predefinição, esta opção protege as funções com um buffer alocado na pilha com mais de oito bytes. Para aumentar a proteção ao cobrir funções com buffers de, pelo menos, quatro bytes, adicione --param=ssp-buffer-size=4.
    • Aleatorização do esquema do espaço de endereços (ASLR): ative esta opção criando um executável independente da posição com -fPIC -pie.
    • Proteções da glibc: ative estas proteções com -D_FORTIFY_SOURCE=2.
    • Proteção da tabela de desvio global (GOT): ative esta funcionalidade do carregador de tempo de execução com -Wl,-z,relro,-z,now.
    • Erros de tempo de compilação para strings de formato em falta: -Wformat -Wformat-security -Werror=format-security
  • Desative o CAP_SYS_MODULE, o que permite o carregamento e o descarregamento de módulos do kernel. Para desativar esta funcionalidade, edite o ficheiro /etc/sysctl.conf e inclua a seguinte definição:

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

    sudo rm /boot/System.map

O que se segue?