Guía de integración de GnuPG

Resumen

El sensor CBOM Secure Discover_PGP realiza un descubrimiento de solo lectura del material de clave OpenPGP en los archivos de llavero GnuPG en un host, inventariando únicamente los metadatos:

  • Metadatos de la clave pública: ID de la clave, huella digital, algoritmo, tamaño de la clave, fechas de creación/caducidad y UID.
  • Claves secretas: presencia de material secreto, agarre de llave y subclaves.
  • Relaciones de subclaves: huellas digitales, algoritmos, indicadores de uso y períodos de validez

El material de clave privada, las frases de contraseña y los bytes de clave sin procesar nunca se leen, transmiten ni almacenan.

Requisitos previos

  • GnuPG instalado (se recomienda la versión 2.1 o superior; la versión 1.x admite solo lectura para llaveros .gpg).
  • El agente CBOM instalado en el host (o una ruta montada al directorio principal de GPG).
  • El usuario del sistema operativo del agente tiene permiso de lectura en ~/.gnupg/ o $GNUPGHOME.
  • Python 3.8 o superior para el entorno de ejecución del agente CBOM.

Guía paso por paso

Paso 1: Identificar el directorio principal de GnuPG

gpg --version echo "GNUPGHOME=${GNUPGHOME:-~/.gnupg}" ls -lh "${GNUPGHOME:-$HOME/.gnupg}/"

GnuPG 2.1+ moderno usa pubring.kbx (más private-keys-v1.d/); la versión anterior usa pubring.gpg / secring.gpg.

Paso 2: Verificar el acceso de lectura y listar las claves.

Como usuario del sistema operativo del agente CBOM, confirme que los metadatos del llavero son legibles (el sensor utiliza –batch –no-tty):

gpg --homedir "${GNUPGHOME:-$HOME/.gnupg}" \ --list-keys --with-fingerprint --with-keygrip --batch --no-tty gpg --homedir "${GNUPGHOME:-$HOME/.gnupg}" \ --list-secret-keys --with-fingerprint --with-keygrip --batch --no-tty

Nota: Un # después de sec/ssb (por ejemplo, sec#) significa que la clave privada es un stub (no está presente localmente). El sensor solo registra metadatos.

Paso 3: Otorgar permiso de lectura (si es necesario)

sudo usermod -aG agente-cbom chmod 750 /home/appuser/.gnupg chmod 640 /home/appuser/.gnupg/pubring.kbx

No hagas que el archivo .gnupg sea legible para todos los usuarios, ya que esto expone los datos de confianza a todos los usuarios locales.

Paso 4: Configurar el sensor de seguridad CBOM

sensores: - nombre: Discover_PGP habilitado: verdadero programación: "0 2 * * *" configuración: gpg_home: "/home/appuser/.gnupg" gpg_binary: "gpg" discover_secret_key_stubs: verdadero discover_subkeys: verdadero stale_key_threshold_days: 365 etiquetas: ["gnupg", "pgp", "env:production"] cbom_api_endpoint: "https://cbom.example.com/api/v1" cbom_api_token: "${CBOM_API_TOKEN}"
sudo systemctl reiniciar cbom-agent

Paso 5: Validar

sudo journalctl -u cbom-agent -n 100 --no-pager | grep -i "Discover_PGP" cbom-agent run-sensor --name Discover_PGP --once

Confirme que las claves públicas y los fragmentos de clave secreta estén listados y que el número de claves coincida con el resultado de un comando manual gpg –list-keys. Verifique las huellas digitales, los algoritmos, los tamaños y las fechas en Activos → Claves PGP, sin que haya material privado presente.

Errores comunes

Permiso denegado para abrir el archivo del llavero.

Causa: El usuario del sistema operativo del agente no puede leer el archivo de llavero.

Solución: cambie los permisos del llavero a 640, establezca la propiedad del grupo a un grupo compartido y agréguele cbom-agent.

Permisos inseguros en el directorio de inicio (gpg se interrumpe)

Causa: GnuPG rechaza un directorio de inicio con permisos de escritura para el grupo o para todos los usuarios (por ejemplo, 777/775).

Solución: cambiar los permisos del directorio .gnupg a 700 y los de pubring.kbx/trustdb.gpg a 600.

La plataforma CBOM rechaza el informe (HTTP 401).

Causa: El token de la API no se encuentra disponible, ha caducado o la variable no se ha inyectado.

Solución: Configure CBOM_API_TOKEN en la unidad systemd, recargue/reinicie y rote el token si ha caducado.

Recomendaciones de seguridad

  • Conceda al usuario del sistema operativo del agente acceso de solo lectura al directorio principal de GPG; nunca lo ejecute como propietario del llavero o como usuario root.
  • Nunca hagas que .gnupg sea más ancho que 750.
  • Inyecte el token de la API a través de un archivo de entorno systemd (chmod 600), no mediante el archivo YAML.
  • Alerta sobre claves próximas a caducar mediante stale_key_threshold_days.
  • Utilice auditd en el directorio .gnupg para detectar accesos fuera de las ventanas de escaneo.

Conclusión

El sensor Discover_PGP ofrece un descubrimiento automatizado y de solo lectura de los metadatos de las claves OpenPGP procedentes de los llaveros de claves GnuPG, lo que proporciona una visibilidad continua del ciclo de vida, los algoritmos y la caducidad de las claves PGP sin necesidad de leer nunca material privado.