GCP - Compute Instances

Support HackTricks

Basic Information

Google Cloud Compute Instances to dostosowywalne maszyny wirtualne w infrastrukturze chmurowej Google, oferujące skalowalną moc obliczeniową na żądanie dla szerokiego zakresu aplikacji. Oferują funkcje takie jak globalne wdrożenie, trwałe przechowywanie, elastyczny wybór systemu operacyjnego oraz silne integracje sieciowe i bezpieczeństwa, co czyni je wszechstronnym wyborem do hostowania stron internetowych, przetwarzania danych i efektywnego uruchamiania aplikacji w chmurze.

Confidential VM

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

Aby uruchomić Confidential VM, może być konieczne zmiana takich rzeczy jak typ maszyny, interfejs sieciowy, obraz dysku rozruchowego.

Disk & Disk Encryption

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 usunąć dysk, gdy instancja zostanie usunięta

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

Deploy Container

Możliwe jest wdrożenie kontenera wewnątrz maszyny wirtualnej. Możliwe jest skonfigurowanie obrazu do użycia, ustawienie komendy do uruchomienia wewnątrz, argumentów, zamontowanie wolumenu oraz zmiennych środowiskowych (informacje wrażliwe?) i skonfigurowanie kilku opcji dla tego kontenera, takich jak uruchamianie jako uprzywilejowany, stdin i pseudo TTY.

Service Account

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

A domyślne zakresy dostępu to:

  • https://www.googleapis.com/auth/devstorage.read_only -- Dostęp do odczytu do koszykó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 możliwe jest przyznanie mu cloud-platform jednym kliknięciem lub określenie niestandardowych.

Firewall

Możliwe jest zezwolenie na ruch HTTP i HTTPS.

Networking

  • IP Forwarding: Możliwe jest włączenie przekazywania IP od momentu utworzenia instancji.

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

  • Interface: Możliwe jest dodanie interfejsu sieciowego.

Extra Security

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

  • Secure boot: Secure boot pomaga chronić twoje instancje VM przed złośliwym oprogramowaniem na poziomie rozruchu i jądra oraz rootkitami.

  • Enable vTPM: Wirtualny moduł zaufanej platformy (vTPM) weryfikuje integralność rozruchu i pre-boot twojej gościnnej VM oraz oferuje generację i ochronę kluczy.

  • Integrity supervision: Monitorowanie integralności pozwala monitorować i weryfikować integralność rozruchu runtime twoich chronionych instancji VM za pomocą raportów Stackdriver. Wymaga włączenia vTPM.

VM Access

Typowy sposób na umożliwienie dostępu do VM to zezwolenie na dostęp za pomocą określonych kluczy publicznych SSH. Jednak możliwe jest również włączenie dostępu do VM za pomocą usługi os-config przy użyciu IAM. Co więcej, możliwe jest włączenie 2FA do uzyskania 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.

Metadata

Możliwe jest zdefiniowanie automatyzacji (userdata w AWS), które są komendami powłoki, które będą wykonywane za każdym razem, gdy maszyna się uruchamia lub restartuje.

Możliwe jest również dodanie dodatkowych wartości klucz-wartość metadanych, które będą dostępne z punktu końcowego metadanych. Informacje te są powszechnie używane do zmiennych środowiskowych oraz skryptów uruchamiania/zamykania. Można je uzyskać za pomocą metody describe z polecenia w sekcji enumeracji, 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 autoryzacyjny dla dołączonego konta usługi oraz ogólne informacje o instancji, sieci i projekcie będą 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ć klucz szyfrowania zarządzany przez klienta (CMEK). Możesz również skonfigurować, co zrobić, gdy używany CMEK zostanie unieważniony: nic lub wyłączyć VM.

Wsparcie dla HackTricks

Last updated