Importierte Laufwerke manuell konfigurieren


Nachdem Sie ein virtuelles Laufwerk manuell in Compute Engine importiert haben, müssen Sie diese Images optimieren, damit sie die spezifischen Funktionen der Compute Engine-Umgebung verwenden können.

Inhalt

Compute Engine-Gastumgebung installieren

Sie müssen die Gastumgebung installieren, um die wichtigsten Features von Compute Engine verwenden zu können. Informationen dazu, wann Sie die Gastumgebung manuell installieren müssen, finden Sie unter Zeitpunkt zur manuellen Installation oder Aktualisierung der Gastumgebung.

Installieren Sie die Gastumgebung auf der ausgeführten VM-Instanz, die Sie nach dem manuellen Import Ihres vorhandenen Images erstellt haben. Greifen Sie zum Durchführen der Installation mit einem Nutzerkonto, das Sie vor dem Import erstellt haben, über SSH oder durch Interaktion mit der seriellen Konsole auf die VM-Instanz zu.

Importierte Images für Compute Engine konfigurieren

Sie können das Bootlaufwerk-Image zwar ohne zusätzliche Änderungen in Compute Engine ausführen, aber das Image lässt sich auch weiter optimieren, damit es optimal auf Compute Engine läuft und Zugriff auf alle Compute Engine-Features hat.

  • Bearbeiten Sie die Datei ntp.conf so, dass sie nur den Google NTP-Server-Eintrag server metadata.google.internal iburst enthält.

  • Legen Sie als Zeitzone UTC fest:

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
  • Damit Sie eine leistungsstarke Netzwerkkapazität gewährleisten können, verwenden Sie die folgenden empfohlenen Netzwerkkonfigurationen:

    • Verwenden Sie den ISC DHCP-Client.
    • Legen Sie als DHCP-MTU die Netzwerk-MTU fest. Der Compute Engine DHCP-Server gibt diesen Parameter als die Option interface-mtu aus, die die meisten Clients berücksichtigen. Weitere Informationen zu Netzwerk-MTUs finden Sie unter Maximale Übertragungseinheit – Übersicht.
    • Wenn Sie nicht vorhaben, IPv6-Adressen zu konfigurieren, deaktivieren Sie IPv6.
    • Entfernen Sie persistierende Netzwerkregeln, um zu verhindern, dass die Instanz MAC-Adressen speichert. Beispiel:

      rm -f /etc/udev/rules.d/70-persistent-net.rules
    • Deaktivieren Sie die Firewall des Betriebssystems, es sei denn, Sie haben spezielle Anforderungen, die von Compute Engine-Firewallregeln nicht unterstützt werden. Compute Engine bietet eine Firewall für ein- und ausgehenden Traffic. Weitere Informationen zu Firewalls finden Sie unter Übersicht über Firewallregeln.

  • Deaktivieren oder entfernen Sie den Daemon irqbalance, um für eine leistungsstarke Netzwerk- und Laufwerkskapazität zu sorgen. Dieser Daemon kann die IRQ-Anfragen für die Gastbetriebssysteme auf Instanzen virtueller Maschinen nicht richtig ausbalancieren. Verwenden Sie stattdessen die Skripts, die Teil der Gastumgebung sind, um die IRQ-Einstellungen für virtuelle CPUs richtig auszubalancieren.

  • Konfigurieren Sie den SSH-Zugriff auf das Basis-Image:

    • Entfernen Sie den SSH-Root-Login.
    • Deaktivieren Sie die Passwortauthentifizierung.
    • Deaktivieren Sie die Host-basierte Authentifizierung.
    • Aktivieren Sie die strenge Host-Schlüsselprüfung.
    • Verwenden Sie ServerAliveInterval, um Verbindungen offen zu halten.
    • Entfernen Sie SSH-Schlüssel aus dem Image, damit niemand auf die öffentlichen oder privaten Schlüssel in Ihrem Image zugreifen kann. Verwenden Sie stattdessen Compute Engine, um den Zugriff auf Instanzen zu verwalten.

    • Bearbeiten Sie die Datei /etc/ssh/ssh_config so, dass sie die folgende Konfiguration verwendet:

      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
      
    • Bearbeiten Sie die Datei /etc/ssh/sshd_config so, dass sie die folgende Konfiguration verwendet:

      # 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
      

Nachdem Sie Ihr Bootlaufwerk auf Compute Engine konfiguriert und optimiert haben, erstellen Sie ein Image von diesem Bootlaufwerk, damit Sie Instanzen von einer vollständig optimierten Version des Images erzeugen können, statt jede Instanz beim Erstellen neu konfigurieren zu müssen.

Bewährte Sicherheitsmethoden konfigurieren

Sie sollten immer eine sichere Betriebssystemumgebung zur Verfügung stellen. Es kann jedoch schwierig sein, ein optimales Gleichgewicht zwischen einer sicheren und einer zugänglichen Umgebung zu wahren. Virtuelle Maschinen, die anfällig für Angriffe sind, können teure Ressourcen belegen. Google empfiehlt dringend, dass Sie bei Ihren Images die folgenden bewährten Sicherheitsmethoden beachten:

  • Begrenzen Sie die standardmäßig installierte Software auf ein Mindestmaß (führen Sie beispielsweise eine minimale Installation des Betriebssystems aus).
  • Aktivieren Sie automatische Updates.
  • Standardmäßig werden alle Netzwerkdienste mit Ausnahme von SSH, DHCP und NTPD deaktiviert. Sie können den Betrieb eines Mail-Servers wie Postfix zulassen, wenn dieser nur Verbindungen vom localhost akzeptiert.
  • Lassen Sie das Abhören von Schnittstellen von außen nur über SSHD zu.
  • Installieren Sie das Paket denyhosts, um SSH-Brute-Force-Anmeldeversuche zu unterbinden.
  • Entfernen Sie alle überflüssigen Nicht-Nutzerkonten aus der Standardinstallation.
  • Legen Sie in /etc/passwd die Shell für alle Nicht-Nutzerkonten auf /sbin/nologin oder /usr/sbin/nologin fest (je nachdem, wo Ihr Betriebssystem nologin installiert hat).
  • Konfigurieren Sie Ihr Betriebssystem so, dass es SHA512 mit Salt für Passwörter in /etc/shadow verwendet.
  • Richten Sie pam_cracklib ein und konfigurieren Sie es für starke Passwörter.
  • Richten Sie pam_tally ein und konfigurieren Sie es, um Konten nach 3 fehlgeschlagenen Anmeldeversuchen für 5 Minuten zu sperren.
  • Konfigurieren Sie das Root-Konto in /etc/shadow so, dass es standardmäßig gesperrt ist. Führen Sie den folgenden Befehl aus, um das Root-Konto zu sperren:

    usermod -L root
  • Verweigern Sie den Root-Zugriff in /etc/ssh/sshd_config durch Einfügen der folgenden Zeile:

    PermitRootLogin no
  • Erstellen Sie AppArmor- oder SELinux-Profile für alle standardmäßig ausgeführten netzwerkseitigen Dienste.

  • Verwenden Sie nach Möglichkeit Dateisystemfunktionen, damit auf das S*ID-Bit verzichtet werden kann und eine ausführlichere Kontrolle möglich ist.

  • Aktivieren Sie beim Kompilieren netzwerkseitiger Software Schutzmaßnahmen gegen Compiler- und Laufzeit-Exploits. Es folgen einige der Schutzmaßnahmen, die in der GNU Compiler Collection (GCC) enthalten sind, und die Schritte zu ihrer Aktivierung:

    • Stack-Smashing-Schutz: Verwenden Sie -fstack-protector zum Aktivieren. Standardmäßig schützt diese Option Funktionen mit einem Stack-basierten Puffer, der länger als acht Byte ist. Fügen Sie --param=ssp-buffer-size=4 hinzu, um den Schutz durch Einbeziehen von Funktionen mit Puffern von mindestens vier Byte zu verbessern.
    • Address Space Layout Randomization (ASLR): Zum Aktivieren dieser Maßnahme müssen Sie mit -fPIC -pie eine positionsunabhängige ausführbare Datei erstellen.
    • Glibc-Schutz: Aktivieren Sie diesen Schutz mit -D_FORTIFY_SOURCE=2.
    • GOT-Schutz (Global Offset Table): Aktivieren Sie dieses Laufzeitladefeature mit -Wl,-z,relro,-z,now.
    • Kompilierungszeitfehler aufgrund fehlender Formatstrings: -Wformat -Wformat-security -Werror=format-security.
  • Deaktivieren Sie CAP_SYS_MODULE, damit Kernelmodule geladen und entladen werden. Wenn Sie dieses Feature deaktivieren möchten, bearbeiten Sie die Datei /etc/sysctl.conf und fügen Sie die folgende Einstellung hinzu:

    kernel.modules_disabled = 1
  • Entfernen Sie die Kernelsymboltabelle:

    sudo rm /boot/System.map

Weitere Informationen