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.
