Benachrichtigungen

certmon meldet Befunde über Kanäle (E-Mail per SMTP oder Microsoft 365, Microsoft Teams, Webhook). Regeln legen fest, welche Befunde an welchen Kanal gehen. Einrichtung unter Einstellungen > Benachrichtigungen (Administratoren). Die Lizenz muss Benachrichtigungen enthalten (Testversion und Standard).

Filter einer Regel nach Tag und Verantwortlichem verwenden die wirksamen Werte eines Befunds: die Tags der Quelle plus die des Geräts oder Servers, und dessen Verantwortlichen, sonst den der Quelle. Beides pflegen Administratoren auf der Detailseite des Geräts oder Servers („Tags und Verantwortung“); dort und je Tag (Einstellungen > Überwachung) lassen sich auch eigene Ablauf-Schwellwerte setzen. Sie wirken ab dem nächsten Lauf.

Alarm-Logik

  • Zustandswechsel: neuer Befund, schlechter, besser, erledigt. Jede Regel merkt sich, was sie zuletzt gemeldet hat; dieselbe Lage wird nicht erneut gemeldet (kein Dauerfeuer, auch nicht nach einem Neustart).
  • Erinnerungen vor dem Ablauf in Stufen (Standard 30/14/7/3/1 Tage) und täglich, solange ein Befund kritisch ist. Bestätigte Befunde werden nicht erinnert, bis sie schlimmer werden.
  • Eskalation: eine Regel mit „Eskalieren nach X Stunden“ meldet nur Befunde, die in dieser Zeit niemand bestätigt, stummgeschaltet oder ignoriert hat (z. B. an die Teamleitung).
  • Zusammenfassung täglich oder wöchentlich (Uhrzeit und Wochentag in den allgemeinen Einstellungen).
  • Wartungsfenster (für alle oder eine Quelle) und Ruhezeiten (z. B. 20:00–07:00) halten Alarme zurück; was danach noch zutrifft, wird gemeldet. Kritische Alarme kommen in Ruhezeiten auf Wunsch trotzdem.
  • Bestätigen oder stummschalten per Link: Mit eingetragener Dashboard-Adresse enthält jede Meldung einen signierten Einmal-Link (7 Tage gültig). Der Link öffnet nur das Dashboard; die Aktion verlangt die Anmeldung eines Operators und wird im Audit-Log festgehalten.
  • Zustellung mit bis zu 5 Versuchen (nach 1, 5, 15 und 60 Minuten). Endgültig fehlgeschlagene Nachrichten: Ereignis 1600, Hinweis auf der Übersicht, Verlauf unter Alarme > Nachrichten.

E-Mail per SMTP

SMTP-Server mit STARTTLS (Port 587 oder 25) und einem Zertifikat, dem der certmon-Server vertraut (z. B. aus der eigenen PKI). Implizites TLS (Port 465) wird nicht unterstützt. Bietet der Server kein STARTTLS an, bricht certmon ab, bevor ein Passwort gesendet wird. Anmeldung optional (leerer Benutzername = internes Relay ohne Anmeldung).

Ohne Verschlüsselung (Ausnahme): Für interne Relays, die kein STARTTLS können, gibt es den ausdrücklichen Schalter „Ohne STARTTLS senden“. Er ist nur ohne Anmeldung möglich (Benutzername und Passwort werden abgelehnt und nie gesendet). Die Nachrichten gehen dann lesbar durchs Netz (Servernamen, Befunde, Links); die Links verlangen trotzdem die Anmeldung im Dashboard. Der Kanal ist in der Liste als „unverschlüsselt“ gekennzeichnet, die Wahl steht im Audit-Log. Besser: Relay mit STARTTLS oder Microsoft 365 (Graph).

Für Exchange Online statt SMTP besser Microsoft Graph nutzen (Basic Auth für SMTP wird abgebaut).

E-Mail per Microsoft Graph (Microsoft 365)

  1. App registrieren: Entra Admin Center > Anwendungen > App-Registrierungen > Neue Registrierung (nur dieses Verzeichnis, ohne Umleitungs-URI). Anwendungs-ID und Verzeichnis-ID (Mandant) notieren.

  2. Anmeldung, bevorzugt mit Zertifikat: Zertifikat mit privatem Schlüssel im Computerspeicher des certmon-Servers (LocalMachine\My), z. B. aus der eigenen PKI; das Dienstkonto braucht Leserecht auf den privaten Schlüssel (MMC Zertifikate > Alle Aufgaben > Private Schlüssel verwalten). Den öffentlichen Teil (.cer) unter „Zertifikate & Geheimnisse“ hochladen. Alternativ ein geheimer Clientschlüssel (läuft ab, muss erneuert werden).

  3. Berechtigung nur für das sendende Postfach über RBAC für Anwendungen in Exchange Online (Microsoft-Doku). Keine API-Berechtigung Mail.Send in Entra erteilen – sie gilt für alle Postfächer und hebt die Einschränkung auf.

    Connect-ExchangeOnline
    # IDs aus Entra > Unternehmensanwendungen (nicht aus den App-Registrierungen)
    New-ServicePrincipal -AppId <Anwendungs-ID> -ObjectId <Objekt-ID der Unternehmensanwendung> -DisplayName certmon
    New-ManagementScope -Name certmon-sender -RecipientRestrictionFilter "PrimarySmtpAddress -eq 'certmon@contoso.com'"
    New-ManagementRoleAssignment -App <Anwendungs-ID> -Role "Application Mail.Send" -CustomResourceScope certmon-sender
    Test-ServicePrincipalAuthorization -Identity <Anwendungs-ID> -Resource certmon@contoso.com
  4. In certmon: Mandant, Anwendungs-ID, sendendes Postfach, Fingerabdruck des Zertifikats (oder geheimer Clientschlüssel), Empfänger. Testnachricht senden.

Ausgehend: HTTPS 443 zu login.microsoftonline.com und graph.microsoft.com.

Microsoft Teams (Workflows)

Die alten Office-365-Connectors („Incoming Webhook“) stellt Microsoft ein. certmon nutzt Workflows:

  1. In Teams im Zielkanal: … > Workflows > Vorlage „Bei Empfang einer Webhookanforderung in einem Kanal posten“ („Post to a channel when a webhook request is received“).
  2. Die angezeigte URL in certmon eintragen. Die URL ist ein Geheimnis (wer sie kennt, kann posten); certmon speichert sie verschlüsselt und zeigt sie nicht wieder an.

certmon sendet eine Adaptive Card (1.4) mit bis zu 20 Befunden, Links zum Bestätigen und „Im Dashboard öffnen“. Ausgehend: HTTPS 443 zum Workflow-Endpunkt (Power Automate / Logic Apps).

Webhook

POST mit JSON über HTTPS (keine Weiterleitungen), signiert mit HMAC-SHA256:

KopfzeileInhalt
X-Certmon-TimestampUnix-Zeit in Sekunden
X-Certmon-Signaturesha256= + Hex von HMAC-SHA256(Schlüssel, "{Zeitstempel}.{Body}")
X-Certmon-DeliveryNachrichten-Id (bei Wiederholung gleich; zum Erkennen doppelter Zustellung)

Der Empfänger berechnet die Signatur über die unveränderten Bytes des Bodys, vergleicht zeitkonstant und lehnt Zeitstempel ab, die mehr als 5 Minuten abweichen (Schutz vor Wiederholung). Prüfung in PowerShell:

$hmac = [Security.Cryptography.HMACSHA256]::new([Text.Encoding]::UTF8.GetBytes($key))
$expected = 'sha256=' + [Convert]::ToHexString($hmac.ComputeHash([Text.Encoding]::UTF8.GetBytes("$timestamp.$body"))).ToLowerInvariant()

Format (Schema 1; Felder und Werte bleiben stabil, neue Felder können hinzukommen):

{
  "schema": 1,
  "type": "alert",
  "id": 42,
  "created": "2026-09-26T08:00:00Z",
  "instance": "CERTMON01",
  "severity": "Critical",
  "title": "[certmon] Kritisch · Neu: nas01.contoso.com:443",
  "dashboard": "https://certmon.contoso.local:8443/Alerts",
  "items": [
    {
      "findingId": 7,
      "code": "TLS_CERT_EXPIRING",
      "category": "TLS",
      "object": "nas01.contoso.com:443",
      "severity": "Critical",
      "previousSeverity": null,
      "change": "New",
      "due": "2026-10-01T00:00:00Z",
      "text": "Zertifikat läuft in 5 Tagen ab (2026-10-01).",
      "link": "https://certmon.contoso.local:8443/Alerts/Act?t=…"
    }
  ],
  "more": 0,
  "digest": null
}

type: alert, digest oder test. change: New, Worse, Better, Resolved, Reminder, Escalation. severity: Ok, Info, Warning, Critical. code sind die Befund-Ids aus Befunde. Bei digest enthält digest die Zählungen (weekly, critical, warning, info, expiringIn30Days), items die offenen Befunde (höchstens 100, der Rest in more). text ist in der Sprache des Kanals.

Sicherheit

  • Passwörter, geheime Clientschlüssel, Workflow- und Webhook-URLs sowie Signaturschlüssel werden mit DPAPI (Maschine, zusätzliche Entropie) verschlüsselt gespeichert und nie angezeigt, protokolliert oder exportiert.
  • Ausgehend nur TLS 1.2/1.3 mit Zertifikatsprüfung, keine Weiterleitungen, Zeitlimit 30 s (einzige Ausnahme: der ausdrücklich gewählte unverschlüsselte SMTP-Kanal ohne Anmeldung). Fehlermeldungen werden um Geheimnisse bereinigt.
  • Nachrichten enthalten nur Befunddaten (Objekt, Befund, Ablauf), keine Pfade, Stacktraces oder Zugangsdaten.

Weitere Dokumente

  • Installation und Einrichtung

    Voraussetzungen, Firewall, Dienstkonto, Rechte, Setup (auch still), Ersteinrichtung, Update, Sicherung und Fehlersuche.

  • JEA-Endpunkt für Windows-Server

    Wie certmon Windows-Server nur lesend über einen eingeschränkten PowerShell-Endpunkt abfragt: Einrichtung, Rechte, Prüfung.

  • Befunde

    Alle Befund-Ids mit Bedeutung und Schwere: Netzwerk-Scan, PKI und Windows-Server.

  • Windows-Ereignisprotokoll

    Event-IDs der Quelle certmon für RMM- und SIEM-Systeme, mit Abfragebeispielen.