GCP - Compute Instances

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Instancje obliczeniowe Google Cloud to dostosowywalne wirtualne maszyny w infrastrukturze chmurowej Google, oferujące skalowalną i na żądanie moc obliczeniową dla szerokiego zakresu zastosowań. Zapewniają funkcje takie jak globalne wdrożenie, trwałe przechowywanie, elastyczny wybór systemów operacyjnych oraz silne integracje z siecią i zabezpieczeniami, co czyni je wszechstronnym wyborem do hostowania stron internetowych, przetwarzania danych i efektywnego uruchamiania aplikacji w chmurze.

VM Poufne

VM poufne wykorzystują funkcje bezpieczeństwa oparte na sprzęcie oferowane przez najnowszą generację procesorów AMD EPYC, które obejmują szyfrowanie pamięci i bezpieczną zaszyfrowaną wirtualizację. Te funkcje umożliwiają VM ochronę danych przetwarzanych i przechowywanych w niej nawet przed systemem operacyjnym hosta i hipernadzorcą.

Aby uruchomić VM poufne, może być konieczne zmienić takie rzeczy jak typ maszyny, interfejs sieciowy, obraz dysku rozruchowego.

Dysk i Szyfrowanie Dysku

Możliwe jest wybranie dysku do użycia lub utworzenie nowego. Jeśli wybierzesz nowy, możesz:

  • Wybrać rozmiar dysku

  • Wybrać system operacyjny

  • Wskazać, czy chcesz, aby dysk został usunięty po usunięciu instancji

  • Szyfrowanie: Domyślnie używany jest klucz zarządzany przez Google, ale można również wybrać klucz z KMS lub wskazać klucz do użycia.

Wdrożenie Kontenera

Możliwe jest wdrożenie kontenera wewnątrz maszyny wirtualnej. Można skonfigurować obraz do użycia, ustawić polecenie do uruchomienia wewnątrz, argumenty, zamontować wolumin oraz zmienne środowiskowe (informacje poufne?) i skonfigurować kilka opcji dla tego kontenera, takich jak uruchamianie jako uprzywilejowany, stdin i pseudo TTY.

Konto Usługi

Domyślnie będzie używane domyślne konto usługi Compute Engine. E-mail tego konta usługi wygląda tak: <proj-num>-compute@developer.gserviceaccount.com To konto usługi ma uprawnienia Edytora w całym projekcie (wysokie uprawnienia).

Domyślne zakresy dostępu to:

  • https://www.googleapis.com/auth/devstorage.read_only -- Dostęp do odczytu z kubełków :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

Jednakże możliwe jest udzielenie mu cloud-platform jednym kliknięciem lub określenie niestandardowych.

Zapora

Możliwe jest zezwolenie na ruch HTTP i HTTPS.

Sieci

  • Przekazywanie IP: Możliwe jest włączenie przekazywania IP podczas tworzenia instancji.

  • Nazwa hosta: Możliwe jest nadanie instancji stałej nazwy hosta.

  • Interfejs: Możliwe jest dodanie interfejsu sieciowego.

Dodatkowe Zabezpieczenia

Te opcje zwiększą bezpieczeństwo VM i są zalecane:

  • Bezpieczny rozruch: Bezpieczny rozruch pomaga chronić twoje instancje VM przed złośliwym oprogramowaniem na poziomie rozruchu i jądra.

  • Włącz vTPM: Wirtualny moduł platformy zaufanej (vTPM) sprawdza integralność pre-boot i bootowania twojego gościa VM oraz oferuje generowanie i ochronę kluczy.

  • Nadzór integralności: Monitorowanie integralności pozwala monitorować i weryfikować integralność uruchomienia twoich instancji VM zabezpieczonych za pomocą raportów Stackdriver. Wymaga włączonego vTPM.

Dostęp do VM

Powszechnym sposobem umożliwienia dostępu do VM jest zezwolenie na dostęp do VM za pomocą określonych kluczy publicznych SSH. Jednakże możliwe jest również włączenie dostępu do VM za pomocą usługi os-config przy użyciu IAM. Ponadto możliwe jest włączenie uwierzytelniania dwuskładnikowego do dostępu do VM za pomocą tej usługi. Gdy ta usługa jest włączona, dostęp za pomocą kluczy SSH jest wyłączony.

Metadane

Możliwe jest zdefiniowanie automatyzacji (userdata w AWS), czyli polecenia powłoki, które będą wykonywane za każdym razem, gdy maszyna zostanie włączona lub zrestartowana.

Możliwe jest również dodanie dodatkowych metadanych w postaci klucz-wartość, które będą dostępne z punktu końcowego metadanych. Te informacje są zazwyczaj używane do zmiennych środowiskowych oraz skryptów uruchamiania/zamykania. Można to uzyskać za pomocą metody describe z polecenia w sekcji wyliczania, ale można je również pobrać z wnętrza instancji, uzyskując dostęp do punktu końcowego metadanych.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Ponadto token uwierzytelniający dla przypisanego konta usługi oraz ogólne informacje o instancji, sieci i projekcie będą również dostępne z punktu końcowego metadanych. Aby uzyskać więcej informacji, sprawdź:

Szyfrowanie

Domyślnie używany jest klucz szyfrowania zarządzany przez Google, ale można skonfigurować zarządzany przez klienta klucz szyfrowania (CMEK). Można również skonfigurować, co zrobić, gdy używany CMEF zostanie wycofany: Nic albo wyłączyć maszynę wirtualną.

Last updated