Como configurar imagens importadas

Depois de importar uma imagem existente para o Compute Engine, otimize-a para usar recursos específicos do ambiente do Compute Engine.

Conteúdo

Instalar o ambiente convidado Linux no Compute Engine

É necessário instalar o ambiente convidado Linux para usar os recursos principais do Compute Engine.

Instale o ambiente convidado Linux na instância de VM em execução que você criou depois de importar a imagem atual. Acesse a instância de VM por SSH com uma conta de usuário que você criou antes de importá-la ou pelo Console serial interativo para executar a instalação.

Configurar sua imagem importada para o Compute Engine

É possível executar a imagem do disco de inicialização no Compute Engine sem alterações adicionais, mas também tem a opção de otimizar a imagem para ser executada da forma mais eficiente dentro do Compute Engine e ter acesso a todos os recursos do Compute Engine.

  • 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 1460. O servidor DHCP do Compute Engine atende a esse parâmetro pela opção interface-mtu, que a maioria dos clientes respeita.
    • Desative o IPv6, que não é aceito pelo Compute Engine.
    • 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, leia a documentação de Firewalls.

  • 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 Linux para fazerem 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 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
      
      # Google 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 as ssh keys are more secure.
      PasswordAuthentication no
      
      # Disable root login, using sudo provides better auditing.
      PermitRootLogin no
      
      PermitTunnel no
      AllowTcpForwarding yes
      X11Forwarding no
      
      # Compute 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 nova imagem a partir desse disco de inicialização para permitir a criação de instâncias novas a partir de uma versão totalmente otimizada da imagem, em vez de configurar cada instância toda vez que você criar uma.

Configurar práticas recomendadas de segurança

Você deve sempre proporcionar um ambiente de sistema operacional seguro, mas pode ser difícil encontrar um equilíbrio entre segurança e acessibilidade. As máquinas virtuais inseguras são vulneráveis a ataques e podem consumir recursos caros. O Google recomenda que suas imagens atendam a estas práticas recomendadas de segurança:

  • Minimize a quantidade de software instalado por padrão (isto é, instalação mínima do SO).
  • Ative as atualizações automáticas.
  • Por padrão, todos os serviços de rede são desativados, 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.
  • 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 SO instalou "nologin") em /etc/passwd.
  • Configure seu SO para usar SHA512 com sal para senhas em /etc/shadow.
  • Configure e ajuste o pam_cracklib para senhas fortes.
  • Configure e ajuste o pam_tally para bloquear contas por cinco minutos após três falhas.
  • Configure a conta raiz para ser bloqueada por padrão em /etc/shadow. Execute o seguinte comando para bloquear a conta raiz:

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

    PermitRootLogin no
    
  • Crie os perfis AppArmor ou SELinux 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. Esse recurso está obsoleto no kernel do Linux. Para desativá-lo:

    echo 1 > /proc/sys/kernel/modules_disabled
    
  • Remova a tabela de símbolos do kernel:

    sudo rm /boot/System.map
    

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine