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 entradaserver 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
- Proteção contra quebra de pilha: habilite isso com
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
- Depois que sua imagem estiver pronta para produção, crie uma versão final dessa imagem personalizada e inclua-a em uma família de imagens para que você possa gerenciar facilmente versões atualizadas da imagem personalizada.
- Aprenda como iniciar uma instância a partir de uma imagem .