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 entradaserver 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
.
- Proteção contra destruição de pilha: ative com
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
- Crie uma versão final da imagem personalizada depois que ela estiver pronta para produção e a inclua em uma família de imagens. Assim, é possível gerenciar com facilidade as versões atualizadas dela.
- Aprenda a iniciar uma instância a partir de uma imagem.