GCP - Add Custom SSH Metadata
GCP - Agregar Metadatos SSH Personalizados
Modificando los metadatos
La modificación de metadatos en una instancia podría llevar a riesgos de seguridad significativos si un atacante obtiene los permisos necesarios.
Incorporación de Claves SSH en Metadatos Personalizados
En GCP, los sistemas Linux a menudo ejecutan scripts desde el Entorno de Invitado de Python para Google Compute Engine. Un componente crítico de esto es el demonio de cuentas, que está diseñado para verificar regularmente el punto final de metadatos de la instancia en busca de actualizaciones a las claves públicas SSH autorizadas.
Por lo tanto, si un atacante puede modificar los metadatos personalizados, podría hacer que el demonio encuentre una nueva clave pública, que será procesada e integrada en el sistema local. La clave se añadirá al archivo ~/.ssh/authorized_keys
de un usuario existente o potencialmente creando un nuevo usuario con privilegios sudo
, dependiendo del formato de la clave. Y el atacante podrá comprometer el host.
Agregar clave SSH a un usuario privilegiado existente
Examinar Claves SSH Existentes en la Instancia:
Ejecuta el comando para describir la instancia y sus metadatos para localizar las claves SSH existentes. La sección relevante en la salida estará bajo
metadata
, específicamente la clavessh-keys
.
Presta atención al formato de las claves SSH: el nombre de usuario precede a la clave, separado por dos puntos.
Preparar un Archivo de Texto para Metadatos de Clave SSH:
Guarda los detalles de los nombres de usuario y sus correspondientes claves SSH en un archivo de texto llamado
meta.txt
. Esto es esencial para preservar las claves existentes mientras se añaden nuevas.
Generar una Nueva Clave SSH para el Usuario Objetivo (
alice
en este ejemplo):
Usa el comando
ssh-keygen
para generar una nueva clave SSH, asegurándote de que el campo de comentario (-C
) coincida con el nombre de usuario objetivo.
Añade la nueva clave pública a
meta.txt
, imitando el formato encontrado en los metadatos de la instancia.
Actualizar los Metadatos de Clave SSH de la Instancia:
Aplica los metadatos de clave SSH actualizados a la instancia usando el comando
gcloud compute instances add-metadata
.
Acceder a la Instancia Usando la Nueva Clave SSH:
Conéctate a la instancia con SSH usando la nueva clave, accediendo a la shell en el contexto del usuario objetivo (
alice
en este ejemplo).
Crear un nuevo usuario privilegiado y agregar una clave SSH
Si no se encuentra un usuario interesante, es posible crear uno nuevo que se le otorgarán privilegios sudo
:
Claves SSH a nivel de proyecto
Es posible ampliar el alcance del acceso SSH a múltiples Máquinas Virtuales (VMs) en un entorno de nube al aplicar claves SSH a nivel de proyecto. Este enfoque permite el acceso SSH a cualquier instancia dentro del proyecto que no haya bloqueado explícitamente las claves SSH a nivel de proyecto. Aquí hay una guía resumida:
Aplicar Claves SSH a Nivel de Proyecto:
Utiliza el comando
gcloud compute project-info add-metadata
para agregar claves SSH desdemeta.txt
a los metadatos del proyecto. Esta acción asegura que las claves SSH sean reconocidas en todas las VMs del proyecto, a menos que una VM tenga habilitada la opción "Bloquear claves SSH a nivel de proyecto".
SSH en Instancias Usando Claves a Nivel de Proyecto:
Con las claves SSH a nivel de proyecto en su lugar, puedes SSH en cualquier instancia dentro del proyecto. Las instancias que no bloquean las claves a nivel de proyecto aceptarán la clave SSH, otorgando acceso.
Un método directo para SSH en una instancia es usar el comando
gcloud compute ssh [INSTANCE]
. Este comando utiliza tu nombre de usuario actual y las claves SSH establecidas a nivel de proyecto para intentar el acceso.
Referencias
Last updated