GnuPG-Integrationsleitfaden
Übersicht
Der CBOM Secure Discover_PGP-Sensor führt eine schreibgeschützte Ermittlung von OpenPGP-Schlüsselmaterial in GnuPG-Schlüsselringdateien auf einem Host durch und erfasst dabei nur Metadaten:
- Metadaten des öffentlichen Schlüssels: Schlüssel-ID, Fingerabdruck, Algorithmus, Schlüssellänge, Erstellungs-/Ablaufdatum und UIDs
- Geheime Tastenstümpfe: Vorhandensein von geheimem Material, Tastengriff und Untertasten
- Unterschlüsselbeziehungen: Fingerabdrücke, Algorithmen, Nutzungskennzeichen und Gültigkeitszeiträume
Private Schlüsseldaten, Passphrasen und Rohdaten des Schlüssels werden niemals gelesen, übertragen oder gespeichert.
Voraussetzungen:
- GnuPG installiert (Version 2.1+ empfohlen; Version 1.x unterstützte nur Lesezugriff für .gpg-Schlüsselringe).
- Der CBOM-Agent ist auf dem Host installiert (oder es wird ein eingebundener Pfad zum GPG-Home-Verzeichnis angegeben).
- Der Agent-OS-Benutzer hat Leseberechtigung für ~/.gnupg/ oder $GNUPGHOME.
- Python 3.8+ für die CBOM-Agent-Laufzeitumgebung.
Schritt-für-Schritt-Anleitung
Schritt 1: GnuPG-Basisverzeichnis ermitteln
gpg --version echo "GNUPGHOME=${GNUPGHOME:-~/.gnupg}" ls -lh "${GNUPGHOME:-$HOME/.gnupg}/"
Modernes GnuPG 2.1+ verwendet pubring.kbx (plus private-keys-v1.d/); ältere Versionen verwenden pubring.gpg / secring.gpg.
Schritt 2: Lesezugriff überprüfen und Schlüssel auflisten
Als Benutzer des CBOM-Agenten-Betriebssystems bestätigen Sie, dass die Metadaten des Schlüsselrings lesbar sind (der Sensor verwendet –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
Hinweis: Ein # nach sec/ssb (z. B. sec#) bedeutet, dass der private Schlüssel ein Stub ist (nicht lokal vorhanden). Der Sensor zeichnet nur Metadaten auf.
Schritt 3: Leseberechtigung erteilen (falls erforderlich)
sudo usermod -aG cbom-agent chmod 750 /home/appuser/.gnupg chmod 640 /home/appuser/.gnupg/pubring.kbx
Machen Sie die Datei .gnupg nicht für alle Benutzer lesbar – dadurch werden Vertrauensdaten für alle lokalen Benutzer offengelegt.
Schritt 4: Konfigurieren Sie den CBOM-Sicherheitssensor
Sensoren: - Name: Discover_PGP aktiviert: true Zeitplan: "0 2 * * *" Konfiguration: gpg_home: "/home/appuser/.gnupg" gpg_binary: "gpg" discover_secret_key_stubs: true discover_subkeys: true stale_key_threshold_days: 365 Tags: ["gnupg", "pgp", "env:production"] cbom_api_endpoint: "https://cbom.example.com/api/v1" cbom_api_token: "${CBOM_API_TOKEN}"
sudo systemctl cbom-agent neu starten
Schritt 5: Validieren
sudo journalctl -u cbom-agent -n 100 --no-pager | grep -i "Discover_PGP" cbom-agent run-sensor --name Discover_PGP --once
Prüfen Sie, ob öffentliche Schlüssel und zugehörige geheime Schlüssel aufgelistet sind und die Schlüsselanzahl mit der manuellen Liste der gpg --list-keys übereinstimmt. Überprüfen Sie Fingerabdrücke, Algorithmen, Größen und Datumsangaben unter „Assets → PGP Keys“. Achten Sie darauf, dass keine privaten Daten vorhanden sind.
Häufige Fehler
Zugriff verweigert beim Öffnen der Schlüsselbunddatei
Ursache: Der Agenten-Betriebssystembenutzer kann die Schlüsselringdatei nicht lesen.
Lösung: chmod 640 für den Schlüsselring, Gruppenbesitz auf eine gemeinsame Gruppe festlegen und cbom-agent hinzufügen.
Unsichere Berechtigungen für das Homeverzeichnis (GPG bricht ab)
Ursache: GnuPG lehnt ein für die Gruppe/alle Benutzer beschreibbares Home-Verzeichnis ab (z. B. 777/775).
Lösung: chmod 700 für das Verzeichnis .gnupg und 600 für pubring.kbx / trustdb.gpg.
CBOM-Plattform lehnt Bericht ab (HTTP 401)
Ursache: Das API-Token fehlt/ist abgelaufen oder die Variable wurde nicht eingefügt.
Lösung: CBOM_API_TOKEN in der systemd-Unit setzen, neu laden/starten und das Token gegebenenfalls rotieren.
Sicherheitsempfehlungen
- Gewähren Sie dem Agenten-Betriebssystembenutzer Lesezugriff auf das GPG-Verzeichnis; führen Sie es niemals als Besitzer des Schlüsselbundes oder als Root aus.
- Die Datei .gnupg darf niemals breiter als 750 Zeichen sein.
- Das API-Token wird über eine systemd EnvironmentFile (chmod 600) und nicht über die YAML-Datei eingefügt.
- Warnung bei Schlüsseln, deren Ablaufdatum sich nähert, über stale_key_threshold_days.
- Verwenden Sie auditd im Verzeichnis .gnupg, um Zugriffe außerhalb der Scanfenster zu erkennen.
Fazit
Der Discover_PGP-Sensor ermöglicht die automatisierte, schreibgeschützte Ermittlung von OpenPGP-Schlüsselmetadaten aus GnuPG-Schlüsselringen – und bietet so kontinuierliche Einblicke in den Lebenszyklus, die Algorithmen und das Ablaufdatum von PGP-Schlüsseln, ohne jemals private Daten lesen zu müssen.
