Configurazione manuale di dischi importati


Dopo importa manualmente un disco virtuale su Compute Engine, devi ottimizzare queste immagini in modo che possano utilizzare specifiche dell'ambiente Compute Engine.

Sommario

Installa l'ambiente guest di Compute Engine

Devi installare l'ambiente guest prima di poter utilizzare le funzionalità chiave di Compute Engine. Per scoprire quando devi installare manualmente l'ambiente guest, consulta Quando installare o aggiornare manualmente l'ambiente guest.

Installa l'ambiente guest nell'istanza VM in esecuzione che hai creato dopo aver importato manualmente l'immagine esistente. Per eseguire l'installazione, accedi all'istanza VM tramite SSH con un utente creato prima dell'importazione o tramite interagire con la console seriale.

Configura l'immagine importata per Compute Engine

Puoi eseguire l'immagine del disco di avvio in Compute Engine senza modifiche aggiuntive, ma puoi anche ottimizzarla ulteriormente in modo che funzioni in modo ottimale in Compute Engine e abbia accesso a tutte le funzionalità di Compute Engine.

  • Modifica il file ntp.conf in modo da includere solo server metadata.google.internal iburst Voce del server NTP di Google.

  • Imposta il fuso orario su UTC:

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
  • Per garantire una rete ad alte prestazioni, utilizza le seguenti configurazioni di rete consigliate:

    • Utilizza il client DHCP ISC.
    • Imposta la MTU DHCP sull'MTU della rete. Il server DHCP di Compute Engine fornisce questo parametro come opzione interface-mtu, rispettata dalla maggior parte dei client. Per ulteriori informazioni sulle MTU di rete, consulta Panoramica massima dell'unità di trasmissione.
    • Se non prevedi di configurare IPv6 indirizzi IP, disattiva IPv6.
    • Rimuovi le regole di rete permanenti per impedire all'istanza di ricordare gli indirizzi MAC. Ad esempio:

      rm -f /etc/udev/rules.d/70-persistent-net.rules
    • Disattiva il firewall del sistema operativo, a meno che tu non abbia non supportati dalle regole firewall di Compute Engine. Compute Engine fornisce un firewall traffico in entrata e in uscita. Per ulteriori informazioni sui firewall, consulta Panoramica delle regole firewall.

  • Per garantire funzionalità di rete e disco ad alte prestazioni, disattiva o rimuovi il daemon irqbalance. Questo daemon non bilancia correttamente le richieste IRQ per i sistemi operativi guest sulle istanze di macchine virtuali (VM). Utilizza invece gli script che fanno parte dell'ambiente guest per bilanciare correttamente le impostazioni IRQ per le CPU virtuali.

  • Configura l'accesso SSH all'immagine di base:

    • Disabilita l'accesso root SSH.
    • Disattiva autenticazione password.
    • Disabilita l'autenticazione basata su host.
    • Attiva il controllo rigoroso delle chiavi host.
    • Usa ServerAliveInterval per mantenere aperte le connessioni.
    • Rimuovi le chiavi SSH dall'immagine in modo che altri utenti non possano accedere alle chiavi pubbliche o private al suo interno. Usa invece Compute Engine gestire l'accesso alle istanze.

    • Modifica il file /etc/ssh/ssh_config per utilizzare la seguente configurazione:

      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
      
    • Modifica il file /etc/ssh/sshd_config per utilizzare la seguente configurazione:

      # 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
      

Dopo aver configurato e ottimizzato il disco di avvio su Compute Engine, creare un'immagine dal disco di avvio in modo da poter creare istanze una versione completamente ottimizzata dell'immagine, anziché dover configurare ogni volta che la crei.

Configura le best practice per la sicurezza

Dovresti sempre fornire un ambiente del sistema operativo sicuro, ma in questo caso sia difficile trovare un equilibrio tra ambiente sicuro e accessibile. Le macchine virtuali vulnerabili agli attacchi possono essere costose Google Cloud. Google consiglia vivamente che le immagini siano conformi alle best practice per la sicurezza.

  • Riduci al minimo la quantità di software installato per impostazione predefinita (ad esempio, esegui un'installazione minima del sistema operativo).
  • Attiva gli aggiornamenti automatici.
  • Per impostazione predefinita, vengono disattivati tutti i servizi di rete, ad eccezione di SSH, DHCP e NTPD. Puoi consentire l'esecuzione di un server di posta, come Postfix, se che accetta connessioni da localhost.
  • Non consentire porte in ascolto dall'esterno, ad eccezione di sshd.
  • Installa denyhosts per impedire i tentativi di accesso di forza bruta SSH.
  • Rimuovi dall'installazione predefinita tutti gli account non utente non necessari.
  • In /etc/passwd, imposta la shell di tutti gli account non utente su /sbin/nologin oppure /usr/sbin/nologin (a seconda di dove è installato il sistema operativo, nologin).
  • Configura il sistema operativo in modo che utilizzi SHA512 con il sale per le password in /etc/shadow.
  • Configura pam_cracklib per le password complesse.
  • Imposta e configura pam_tally in blocca gli account per 5 minuti dopo 3 errori.
  • In /etc/shadow, configura l'account root in modo che venga bloccato per impostazione predefinita. Corsa il seguente comando per bloccare l'account root:

    usermod -L root
  • Rifiuta la radice in /etc/ssh/sshd_config aggiungendo la seguente riga:

    PermitRootLogin no
  • Crea AppArmor o SELinux profili per tutti i servizi predefiniti in esecuzione rivolti alla rete.

  • Se possibile, utilizza funzionalità del file system per eliminare la necessità dell'S*ID e per fornire un controllo più granulare.

  • Attiva le mitigazioni degli exploit del compilatore e del runtime durante la compilazione del software rivolto alla rete. Ad esempio, ecco alcune delle mitigazioni offerte dalla GNU Compiler Collection (GCC) e come attivarle:

    • Protezione contro lo stack: attiva questa opzione con -fstack-protector. Per impostazione predefinita, questa opzione protegge le funzioni con un buffer allocato nello stack più lungo di otto byte. Per aumentare la protezione coprendo le funzioni con buffer di almeno quattro byte, aggiungi --param=ssp-buffer-size=4.
    • Casualizzazione dello spazio degli indirizzi (ASLR): attiva questa opzione creando un file eseguibile indipendente dalla posizione con -fPIC -pie.
    • Protezioni Glibc: attiva queste protezioni con -D_FORTIFY_SOURCE=2.
    • Protezione della tabella di offset globale (GOT): attiva questa funzionalità del caricatore di runtime con -Wl,-z,relro,-z,now.
    • Errori di compilazione per stringhe di formato mancanti: -Wformat -Wformat-security -Werror=format-security
  • Disattiva CAP_SYS_MODULE, il che consente il caricamento e l'unload dei moduli del kernel. Per disattivare questa funzionalità, modifica il file /etc/sysctl.conf e includi la seguente impostazione:

    kernel.modules_disabled = 1
  • Rimuovi la tabella dei simboli del kernel:

    sudo rm /boot/System.map

Passaggi successivi