GCP - Compute Instances

Support HackTricks

Basic Information

Google Cloud Compute Instances son máquinas virtuales personalizables en la infraestructura de nube de Google, que ofrecen potencia de computación escalable y bajo demanda para una amplia gama de aplicaciones. Proporcionan características como despliegue global, almacenamiento persistente, opciones flexibles de SO e integraciones sólidas de red y seguridad, lo que las convierte en una opción versátil para alojar sitios web, procesar datos y ejecutar aplicaciones de manera eficiente en la nube.

Confidential VM

Las VMs confidenciales utilizan características de seguridad basadas en hardware ofrecidas por la última generación de procesadores AMD EPYC, que incluyen cifrado de memoria y virtualización cifrada segura. Estas características permiten que la VM proteja los datos procesados y almacenados dentro de ella, incluso del sistema operativo host y del hipervisor.

Para ejecutar una VM confidencial puede ser necesario cambiar cosas como el tipo de la máquina, la interfaz de red, la imagen del disco de arranque.

Disk & Disk Encryption

Es posible seleccionar el disco a utilizar o crear uno nuevo. Si seleccionas uno nuevo puedes:

  • Seleccionar el tamaño del disco

  • Seleccionar el SO

  • Indicar si deseas eliminar el disco cuando se elimine la instancia

  • Cifrado: Por defecto se utilizará una clave gestionada por Google, pero también puedes seleccionar una clave de KMS o indicar clave en bruto a utilizar.

Deploy Container

Es posible desplegar un contenedor dentro de la máquina virtual. Es posible configurar la imagen a utilizar, establecer el comando a ejecutar dentro, argumentos, montar un volumen y variables de entorno (¿información sensible?) y configurar varias opciones para este contenedor como ejecutar como privilegiado, stdin y pseudo TTY.

Service Account

Por defecto, se utilizará la cuenta de servicio predeterminada de Compute Engine. El correo electrónico de esta SA es como: <proj-num>-compute@developer.gserviceaccount.com Esta cuenta de servicio tiene rol de Editor sobre todo el proyecto (altos privilegios).

Y los alcances de acceso predeterminados son los siguientes:

  • https://www.googleapis.com/auth/devstorage.read_only -- Acceso de lectura a los buckets :)

  • 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

Sin embargo, es posible otorgarle cloud-platform con un clic o especificar personalizados.

Firewall

Es posible permitir tráfico HTTP y HTTPS.

Networking

  • IP Forwarding: Es posible habilitar el reenvío de IP desde la creación de la instancia.

  • Hostname: Es posible darle a la instancia un nombre de host permanente.

  • Interface: Es posible agregar una interfaz de red.

Extra Security

Estas opciones aumentarán la seguridad de la VM y se recomiendan:

  • Secure boot: Secure boot ayuda a proteger tus instancias de VM contra malware y rootkits a nivel de arranque y de kernel.

  • Enable vTPM: El Módulo de Plataforma de Confianza Virtual (vTPM) valida la integridad de arranque y pre-arranque de tu VM invitada, y ofrece generación y protección de claves.

  • Integrity supervision: La supervisión de integridad te permite monitorear y verificar la integridad de arranque en tiempo de ejecución de tus instancias de VM protegidas utilizando informes de Stackdriver. Requiere que vTPM esté habilitado.

VM Access

La forma común de habilitar el acceso a la VM es permitiendo ciertas claves públicas SSH para acceder a la VM. Sin embargo, también es posible habilitar el acceso a la VM a través del servicio os-config utilizando IAM. Además, es posible habilitar 2FA para acceder a la VM utilizando este servicio. Cuando este servicio está habilitado, el acceso a través de claves SSH está deshabilitado.

Metadata

Es posible definir automatización (userdata en AWS) que son comandos de shell que se ejecutarán cada vez que la máquina se encienda o reinicie.

También es posible agregar valores clave-valor de metadatos adicionales que serán accesibles desde el punto final de metadatos. Esta información se utiliza comúnmente para variables de entorno y scripts de inicio/apagado. Esto se puede obtener utilizando el método describe de un comando en la sección de enumeración, pero también podría recuperarse desde dentro de la instancia accediendo al punto final de metadatos.

# 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"

Además, el token de autenticación para la cuenta de servicio adjunta y información general sobre la instancia, la red y el proyecto también estarán disponibles desde el punto final de metadatos. Para más información, consulta:

Cifrado

Se utiliza por defecto una clave de cifrado gestionada por Google, pero se puede configurar una clave de cifrado gestionada por el cliente (CMEK). También puedes configurar qué hacer cuando se revoque la CMEK utilizada: Notificar o apagar la VM.

Support HackTricks

Last updated