Bastion Host konfigurieren

Auf dieser Seite wird beschrieben, wie Sie einen Bastion-Host in Ihrer mit Google Distributed Cloud verbundenen Bereitstellung konfigurieren, damit Google-Techniker über Secure Shell (SSH) auf die Knoten in Ihrer mit Distributed Cloud verbundenen Zone zugreifen und Fehler beheben können.

Google stellt den vollständigen Quellcode zur Verfügung, mit dem Sie eine benutzerdefinierte Bastion Host-VM erstellen können, die Ihren geschäftlichen Anforderungen entspricht.

Vorbereitung

In diesem Abschnitt werden die Voraussetzungen für die Bereitstellung der Lösung für den verbundenen Bastion Host von Distributed Cloud aufgeführt.

Zugriffsgenehmigung aktivieren

Für die Bastion Host-Funktion wird die Funktion „Zugriffsgenehmigung“ von Access Transparency verwendet, damit Google Zugriff auf Ihre Daten anfordern kann. Sie müssen Access Transparency und Access Approval für Ihr Google Cloud -Projekt aktivieren, bevor Sie Bastion Host-VMs bereitstellen. Weitere Informationen finden Sie auf den folgenden Seiten:

Spezifikationen für virtuelle Maschinen

Für die Lösung mit dem verbundenen Bastion-Host von Distributed Cloud ist eine OpenStack-Bereitstellung mit small-Größe und den folgenden Spezifikationen erforderlich:

  • CPU: 1 vCPU
  • RAM: 2 GB
  • Speicherplatz: 20 GB

Google empfiehlt, N+1 Bastion Host-VMs pro Google Cloud Region bereitzustellen, um die Zuverlässigkeit zu erhöhen.

Netzwerkanforderungen

Für die Lösung mit verbundenem Bastion-Host für Distributed Cloud müssen Sie die folgenden Netzwerk-Peering-Sitzungen für jede Bastion-Host-VM konfigurieren:

  • Northbound: Verbindet die Bastion Host-VM mit dem Internet. Erfordert Internetzugriff und muss Verbindungen über Port 22 von bestimmten IP-Adressen zulassen, die Google als Teil des Datenträger-Image und Quellcode-Pakets für die Bastion-Host-Lösung bereitstellt.
  • Richtung Süden Verbindet die Bastion Host-VM über Port 22 mit den entsprechenden verbundenen Zonen von Distributed Cloud in einer einzelnen Google Cloud Region.
  • Verwaltung: Verbindet die Bastion Host-VM mit Ihrem lokalen Netzwerk für Betriebs- und Wartungszwecke. Konfigurieren Sie diese Peering-Sitzung gemäß der Sicherheitsrichtlinie Ihrer Organisation.

Best Practices für Sicherheit

Google empfiehlt dringend, dass Sie bei der Konfiguration einer Bastion Host-Lösung für Ihre mit Distributed Cloud verbundene Bereitstellung zusätzlich zu den Sicherheitsrichtlinien Ihrer Organisation die in diesem Abschnitt beschriebenen Best Practices für die Sicherheit befolgen:

  • Halten Sie sich an den Grundsatz der geringsten Berechtigung und sorgen Sie für eine klare Aufgabentrennung für Nutzer.
  • Verwenden Sie für alle Nutzerkonten außer dem Administrator nur die zertifikatbasierte Authentifizierung. Deaktivieren Sie die passwortbasierte Authentifizierung und den Root-Zugriff auf die Bastion-Host-VMs.
  • Zugriff von allen IPs in der Northbound-Peering-Sitzung ablehnen, die nicht Teil der von Google bereitgestellten Support-IP-Adressliste sind.
  • Schließen Sie alle Ports in der Downstream-Peering-Sitzung mit Ausnahme von Port 22 (SSH) und lassen Sie sie nur für IP-Adressen in der von Google bereitgestellten Support-IP-Adressliste zu.
  • Halten Sie alle Bastion Host-VMs auf dem neuesten Stand. Google stellt mit jedem Sicherheitspatch und jeder Versionsaktualisierung ein neues Quellcodepaket bereit.
  • Konfigurieren Sie eine Benachrichtigungs- und eine Überprüfungslösung, die beide den Sicherheitsrichtlinien Ihrer Organisation entsprechen.

Bastion Host-Unterstützung aktivieren

Wenn Sie die Unterstützung von Bastion-Hosts in Ihrer mit Distributed Cloud verbundenen Bereitstellung aktivieren möchten, stellen Sie einen Antrag.

Sie müssen die Unterstützung von Bastion-Hosts für jede Ihrer mit Distributed Cloud verbundenen Zonen einzeln aktivieren und konfigurieren. So können Sie für jede mit Distributed Cloud verbundene Zone unterschiedliche Zugriffs- und Netzwerkkonfigurationen bereitstellen, die am besten zu den geschäftlichen Anforderungen Ihrer Organisation passen.

Bastion Host-Software abrufen

Das Softwarepaket für den Bastion-Host wird Ihnen zugesendet, nachdem Google-Support das Bastion-Host-Feature für Ihre mit Distributed Cloud verbundene Bereitstellung aktiviert hat. Das Paket enthält Folgendes:

  • Quellcode: Sie können eigene Bastion Host-VM-Images erstellen und an Ihre geschäftlichen Anforderungen anpassen.
  • Dokumentation Zusätzliche Dokumentation für Aufgaben wie das Konfigurieren von Zertifikaten.

Bastion-Host-VM-Image erstellen

In diesem Abschnitt finden Sie eine Übersicht über die Schritte, die zum Erstellen eines VM-Images für einen Bastion Host aus dem von Google bereitgestellten Quellcode erforderlich sind. Eine vollständige Anleitung finden Sie in der Datei README, die mit dem Quellcode geliefert wird.

Vorbereitung

Sie benötigen die folgenden Elemente, um ein VM-Image für einen Bastion Host zu erstellen:

  • Eine Maschine, auf der Debian 11 ausgeführt wird.
  • Das aktuelle Debian-Cloud-Server-Image.
  • Die Software qemu-img, qemu-system-x86_x64 und GNU mtools ist auf dem Computer installiert.
  • Eine Datei mit dem Namen host-user-key.pub, die einen öffentlichen SSH-Schlüssel für die Anmeldung bei der Bastion Host-Instanz und das Starten einer host-user-Sitzung enthält. Dieser Schlüssel kann für die direkte Authentifizierung oder als Signaturschlüssel der Zertifizierungsstelle verwendet werden. Die Bastion Host-Instanz muss dieser Zertifizierungsstelle vertrauen.
  • Eine Datei mit dem Namen admin-user-key.pub, die einen öffentlichen SSH-Schlüssel für die Ausführung von Verwaltungsaufgaben auf der Zielinstanz des Bastion Hosts enthält. Dieser Schlüssel kann für die direkte Authentifizierung oder als Signaturschlüssel der Zertifizierungsstelle verwendet werden. Die Bastion Host-Instanz muss dieser Zertifizierungsstelle vertrauen.
  • Eine Datei mit dem Namen guest-user-key.pub, die einen von Google bereitgestellten öffentlichen Signaturschlüssel der SSH-Zertifizierungsstelle enthält, mit dem sich der Google-Support bei der Verbindung mit der Bastion Host-Instanz als guest-user authentifizieren kann.

VM-Image erstellen

Folgen Sie der Anleitung in der Datei README, die mit dem Quellcode geliefert wird, um das VM-Image für den Bastion-Host aus dem von Google bereitgestellten Quellcode zu erstellen. In den Beispielen in diesem Leitfaden wird die resultierende Bilddatei als bastion-host.img bezeichnet.

HIBA-Paket erstellen

Erstellen Sie das Debian-Installationspaket für die HIBA-Authentifizierungsebene (Host Identity-Based Authorization for SSH) so:

  1. Installieren Sie die erforderlichen Abhängigkeiten mit dem folgenden Befehl:

    sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
  2. Erstellen Sie das Installationspaket mit dem folgenden Befehl:

    ./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir

Das Installationspaket wird im Verzeichnis /tmp/hiba-build-workdir abgelegt und heißt hiba_x.y-z_amd64.deb, wobei x, y und z für die HIBA-Versionsnummer stehen.

cloud-init-Konfigurationen generieren

Verwenden Sie das Skript generate-cloud-init.py, um die erforderlichen cloud-init-Konfigurationen zu generieren. Sie können diese Konfigurationen auch mit Ihren eigenen Tools generieren. Diese Konfigurationen haben folgende Auswirkungen:

  • Erstellen Sie die erforderlichen Nutzerkonten im VM-Image des Bastion-Hosts und konfigurieren Sie diese Konten mit den oben beschriebenen SSH-Schlüsseln.
  • Fügen Sie ein Skript hinzu, das die Berechtigungen des guest-user-Kontos auf das Beitreten einer bestehenden Terminal-Multiplexer-Sitzung beschränkt.
  • Fügen Sie Skripts hinzu, mit denen eine Terminal-Multiplexer-Sitzung erstellt und verwaltet wird.
  • HIBA-Konfigurationsdateien vorbereiten

Für das generate-cloud-init.py-Skript sind das zuvor erstellte HIBA-Paket und die drei Dateien mit den erforderlichen SSH-Schlüsseln erforderlich. Führen Sie das Skript so aus:

./generate-cloud-init.py \
    --hiba-package="${WORK_DIR}/hiba_1.0-1_amd64.deb" \
    --host-user-key="HOST_USER_KEY_FILE" \
    --manager-user-key="ADMIN_USER_KEY_FILE" \
    --guest-user-ca="GUEST_USER_KEY_FILE" \
    "${WORK_DIR}/cloud-init/"

Ersetzen Sie Folgendes:

  • HOST_USER_KEY_FILE: der vollständige Pfad und Name der Datei host-user-key.pub.
  • ADMIN_USER_KEY_FILE: der vollständige Pfad und Name der Datei admin-user-key.pub.
  • GUEST_USER_KEY_FILE: der vollständige Pfad und Name der Datei guest-user-key.pub.

Das Script legt die Datei cloud-init.img im Verzeichnis cloud-init in Ihrem lokalen Arbeitsverzeichnis ab.

cloud-init-Konfigurationen auf das VM-Image des Bastion Hosts anwenden

Verwenden Sie das qemu-system-x86_64-Tool, um die zuvor generierten cloud-init-Konfigurationen auf die VM-Image-Datei Ihres Bastion Hosts anzuwenden:

qemu-system-x86_64 \
      -nographic \
      -enable-kvm \
      -smp 1 \
      -m 1g \
      -drive format=qcow2,index=0,file=${WORK_DIR}/bastion-host.img \
      -drive format=raw,index=1,file=${WORK_DIR}/cloud-init/cloud-init.img \
      -nic user,hostfwd=tcp::10022-:22

Wenn dieser Befehl einen Fehler zurückgibt, müssen Sie möglicherweise die Größe des Laufwerks im VM-Image des Bastion-Hosts ändern.

Sie können prüfen, ob die Konfigurationen erfolgreich angewendet wurden, sobald Sie die VM starten. In den auditd-Logs wird eine Ausgabe wie die folgende angezeigt:

[   52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.

Sie können die Nutzerkonten und die sshd-Konfiguration auch manuell prüfen.

Bastion-Host-VM-Image importieren

Bevor Sie das vollständig konfigurierte Bastion Host-VM-Image in Ihre Bereitstellungsinfrastruktur importieren, müssen Sie es mit dem Tool qemu-img so snapshotten:

qemu-img snapshot -c installed bastion-image.img

Folgen Sie den von Ihrer Organisation festgelegten Prozessen, um das VM-Image des Bastion-Hosts in Ihre Bereitstellungsinfrastruktur zu importieren.

Bastion Host-VM konfigurieren

Führen Sie die Schritte in diesem Abschnitt aus, um eine Bastion Host-VM zu konfigurieren.

Erforderliche Nutzerkonten konfigurieren

Für die Bastion Host-Funktion von Distributed Cloud Connected sind ein oder mehrere Nutzerkonten in jeder der folgenden Kategorien erforderlich:

  • Verwaltung Dies ist das Administratorkonto für die Bastion Host-VM. Es hat Root-Zugriff.
  • Hostnutzer. Dies ist das Konto des Operations Engineer. Es kann Terminal-Multiplexer-Sitzungen für den Google-Support starten und verwalten, aber keine Befehle in diese Sitzungen eingeben.
  • Gastnutzer: Dies ist das Konto des Google-Supporttechnikers. Es kann eine SSH-Verbindung innerhalb einer Terminal-Multiplexer-Sitzung herstellen, die mit Ihrem Betriebsingenieur auf einer Bastion Host-VM geteilt wird. Er hat keine weiteren Berechtigungen.
  • Gemeinsamer Nutzer Mit diesem Konto wird die Terminal-Multiplexer-Sitzung auf der Bastion Host-VM eingerichtet. Ihr Einsatztechniker und ein Google-Supporttechniker stellen gemeinsam eine Verbindung zu dieser Sitzung her.

Zertifikate konfigurieren

Sie müssen Zertifikate konfigurieren, die den im vorherigen Abschnitt beschriebenen Konten den Zugriff auf die Bastion Host-VM ermöglichen. Das Bastion-Host-Softwarepaket enthält ein Skript namens generate-cloud-init.py, das die erforderliche cloud-init-Konfiguration mit den erforderlichen Konten, SSH-Schlüsseln und Zertifikaten für jedes Konto generiert.

Eine Anleitung finden Sie unter cloud-init-Konfigurationen generieren.

Logging konfigurieren

Bastion-Host-Logs sind in Echtzeit und auf Anfrage über den audit-Daemon verfügbar. Sie können Ihre Logging-Konfiguration über die Datei auditd.conf verwalten. Sie sind dafür verantwortlich, Protokolle von Bastion Host-VMs entsprechend Ihren geschäftlichen Anforderungen zu rotieren und zu exportieren. Außerdem muss genügend Speicherplatz auf der virtuellen Maschine vorhanden sein, um sie zu speichern.

Konfiguration testen

Führen Sie die Schritte in diesem Abschnitt aus, um die Bereitstellung der Bastion Host-VM zu testen, einschließlich der Konnektivität von beiden Enden und der richtigen Zugriffssteuerung für die erforderlichen Nutzerkonten. Wir empfehlen Ihnen außerdem, mit dem Google-Support zusammenzuarbeiten, um Live-Tests durchzuführen.

Bereitstellung lokal testen

  1. Prüfen Sie, ob Sie eine SSH-Sitzung als host-user mit Ihrer Bastion Host-VM herstellen können. Wenn das nicht funktioniert, prüfen Sie Ihre SSH-Schlüssel und ‑Zertifikate.

  2. Prüfen Sie, ob Sie eine Terminal-Multiplexer-Sitzung mit dem folgenden Befehl starten können:

    ./opt/create-shared-tmux-session
  3. Prüfen Sie mit dem folgenden Befehl, ob Ihr mit Distributed Cloud verbundenes Deployment von der Bastion Host-VM aus erreichbar ist:

    ssh -vv bastion-user@TARGET_ADDRESS

    Ersetzen Sie TARGET_ADDRESS durch die IP-Adresse des Zielcomputers oder ToR-Switches von Distributed Cloud.

    Die Anfrage wird von der SSH-Authentifizierung abgelehnt, aber die SSH-Transport- und Authentifizierungsanfragen müssen Ihre mit Distributed Cloud verbundene Bereitstellung trotzdem erreichen. Wenn dies fehlschlägt, prüfen Sie Ihre Firewallkonfiguration.

  4. Prüfen Sie, ob sowohl Access Transparency als auch Access Approval für Ihre Google Cloud Organisation und Ihr Zielprojekt aktiviert wurden, wie weiter oben in diesem Leitfaden beschrieben.

Bereitstellung mit dem Google-Support testen

Nachdem Sie die Bereitstellung des Bastion-Hosts lokal getestet haben, wenden Sie sich an den Google-Support, um eine Live-Testsitzung zu vereinbaren. Vor der Sitzung sendet Ihnen der Google-Support eine Anfrage zur Zugriffsgenehmigung. Während des Livetests werden Sie und Google Folgendes durchgehen:

  • Erstellung und Genehmigung von Anfragen für die Zugriffsgenehmigung.
  • End-to-End-Zugriffsworkflow für die Bereitstellung Ihres Bastion Hosts.
  • Access Approval- und Access Transparency-Logs
  • So beheben Sie Fehler in den folgenden Szenarien:
    • Google versucht, eine Verbindung zu einer Bastion Host-Instanz herzustellen, die nicht in einer Zugriffsgenehmigungsanfrage angegeben ist.
    • Google versucht, eine Verbindung zu einer Bastion Host-Instanz herzustellen, wenn Sie keine Terminal-Multiplexer-Sitzung gestartet haben.
    • Google versucht, eine Verbindung zu einer Bastion Host-Instanz herzustellen, nachdem die entsprechende Anfrage für die Zugriffsbestätigung abgelehnt oder widerrufen wurde.
    • Sie die Verbindung zum Terminal-Multiplexer trennen oder die Sitzung beenden.

Nächste Schritte