etminan
Enterprise

Capabilities for regulated, high-assurance deployments.

Etminan's core is free and self-hosted — and stays that way. On top of it, a growing set of capabilities targets larger organizations with a SOC, an auditor, and separation-of-duties requirements: native SIEM output, dual-control approvals, and compliance mapping. Every one of them is opt-in, and off by default — nothing here changes how an existing deployment behaves until you turn it on.

Off by default. Every capability on this page is disabled unless you explicitly configure it. A default install stays exactly as simple, and as auditable, as it is today — nothing here changes how an existing deployment behaves until you turn it on.

Editions

Standard and Enterprise, side by side.

The Standard edition is free and complete on its own — full TPM-anchored attestation, the operator-approval workflow, the signed audit log, key governance, hardware provenance, and every integration. The Enterprise edition adds capabilities aimed at a SOC and separation-of-duties requirements. Enterprise is an add-on for larger, regulated deployments, not a gate on the core.

Capability Standard Enterprise
TPM-anchored integrity attestation (agent + verifier)
Operator-approved baseline & drift detection
Hash-chained, signed audit log
Mutual TLS, certificate-pinned
RBAC identity registry — peer-UID auth, roles & scope, default-deny
Directory integration — a role from an Active Directory or LDAP group (off until a group is mapped; in Enterprise a mapping is a four-eyes change)
Off-verifier evidence checketminan-witness, its own package: no daemon, no database, no key, no TPM
Off-host audit anchor — the audit head leaves the machine that wrote it
TOTP second factor — optional, per operator
Local self-checkdoctor, read-only, sends nothing anywhere
EK-certificate provenance (genuine-hardware assurance)
Measured boot — boot-chain attestation (PCR 0–9): firmware, bootloader, kernel & initramfs
Notification channels (email, Slack, PagerDuty, webhook)
Change-source / ticket correlation
Package-manager correlation
Plugin API & certified catalog
Native SIEM output — CEF / LEEF over syslog
SIEM output — JSON format — Elasticsearch, Loki, VectorPlanned
Dual control — four-eyes / M-of-N approval
Air-gapped / offline operation — regulated & OT segments
Advanced RBAC — custom roles & fine-grained scopes (base admin/operator/viewer is every edition)Planned
Operator work queue — triage, acknowledge & resolve findingsPlannedPlanned
Bidirectional ticketing — push findings out as ticketsPlannedPlanned
Compliance control mapping — ISO 27001, NIS2, DORA, SOC 2, PCI-DSS (signed reports, under NDA)
Automatic verifier failover — zero-touch HA (manual warm-standby is in every edition)Per-deal
NIST 800-53 / 800-171 mapping — US frameworks, on requestPer-deal

Everything in the Standard column is part of the free core. Shipping in Enterprise today: native SIEM output over syslog (CEF/LEEF), dual control, air-gapped operation, and the compliance control mapping. Still planned there: JSON SIEM output and advanced RBAC. Planned for both editions: the operator work queue, bidirectional ticketing, and measured-boot (boot-chain PCR 0–9) attestation. Automatic failover and NIST mapping are available per deal. None of them change how a default install behaves until you turn them on; several are described in more detail below.

Off by default
SIEM integration

Native SIEM output — CEF or LEEF over syslog.

For a SOC that already ingests syslog into Splunk, QRadar, Microsoft Sentinel, or Elastic. When enabled, Etminan emits one structured syslog event per finding and per signed operator action — enrollment, op approve / reject / exclude, TLS and attestation-key rotation, and identity-registry changes — so integrity events land in the same pipeline your analysts already watch, without polling an API or parsing prose.

Etminan speaks the SIEM-native formats directly — CEF for Splunk/ArcSight and LEEF for QRadar — so both ingest the events out of the box. Dedicated Splunk (CIM-normalised) and QRadar (offense) content — a Technology Add-on and a DSM — is on the way, with the field dictionary and mappings already written. † testing required

Events go to the local /dev/log socket by default (the host's own syslog daemon forwards them onward), or straight to a remote collector over UDP via ETMINAN_SIEM_SYSLOG_ADDR. Facility local0; severities map cleanly (critical → err, warning → warning, action → info). It is an addition to the existing notification channels (email, Slack, PagerDuty, generic webhook), not a replacement.

Off by default. The switch is ETMINAN_SIEM_FORMAT=cef (or leef, or json — a flat, newline-delimited schema for generic structured-log ingesters such as Elasticsearch, Loki, or Vector); unset — or unrecognized — means nothing is emitted. Best-effort by design: a broken or unreachable syslog target never breaks a verification run.

Configuring it

SIEM output is configured entirely through the verifier's environment file — no rebuild, no code, no extra service. Add the switch (and, if you're not relaying through the host's own syslog daemon, a remote collector address) to the verifier's env file:

/etc/etminan-verifier/verifier.env
# Pick the wire format your SOC ingests:
#   cef → Splunk / ArcSight    leef → QRadar    json → generic (Elastic, Loki, Vector, …)
ETMINAN_SIEM_FORMAT=cef

# Optional: send straight to a remote collector over UDP. Omit this and events
# go to the local /dev/log socket, where the host's own rsyslog/journald
# forwards them onward — the usual setup when a log shipper is already running.
ETMINAN_SIEM_SYSLOG_ADDR=siem.internal:514

The next scheduled run picks the change up automatically — the service reads verifier.env each time etminan-verifier.timer fires, so there is nothing to restart. To see it emit immediately, run one cycle by hand:

sudo systemctl start etminan-verifier.service    # or: etminan-verifier run

From then on, one event is emitted per finding and per signed operator action. A CEF finding arrives looking like this (facility local0; severity maps critical → err, warning → warning, action → info):

CEF:0|Etminan|etminan-verifier||pcr-mismatch|Host integrity finding|10|dst=web-01 cs1Label=kind cs1=pcr-mismatch msg=replayed PCR did not match the signed quote

Nothing sensitive is placed on the wire that isn't already in the finding itself — long signature/payload blobs from operator-action events are deliberately dropped, not forwarded. For the complete field dictionary, CEF/LEEF sample events, and Splunk CIM / QRadar QID mappings for the ingest side, see the SIEM integration guide.

Generic CEF/LEEF ingestion works today. The certified Splunk Technology Add-on and QRadar DSM are validated against live Splunk and QRadar instances before release — until then, treat those as testing-required rather than certified.

In development Off by default
Separation of duties

Dual control — two-person approval for high-consequence actions.

The actions that change what a host is trusted to look like — approving a new baseline, changing the identity registry, or creating a review-suppressing exclusion — can be made to require more than one authorized operator (a configurable N-of-M threshold). Each co-signer must be a distinct authenticated operator identity — a second, different Unix UID the etminan-verifierd daemon has independently authenticated and authorised — so one person cannot supply both approvals. This meets the four-eyes and separation-of-duties expectations common under ISO 27001, SOX, and internal-audit regimes.

Honest limit: the control binds two distinct authenticated identities, not two distinct humans — give the co-approving accounts to different people. Each co-signer must independently satisfy the action's required role and scope under the daemon's default-deny matrix, and each decision is bound to its operator identity in the audit trail.

It builds directly on the RBAC identity registry that is part of every edition (authenticated operators mapped to a role and scope, default-deny, with the daemon holding the only signing key).

Off by default. Until you enable a multi-signature policy, the existing single-approver workflow is completely unchanged.

Every edition
Already available

Governance and hardware-provenance foundations — in every edition.

The enterprise story isn't all paywalled: two capabilities that matter most to regulated, high-assurance deployments are part of every edition, including Standard. Enterprise dual control (above) builds directly on the first of them:

  • RBAC identity registry & authorization. Operators reach the verifier only through the privilege-separated etminan-verifierd daemon, which authenticates each caller by kernel-supplied Unix UID (SO_PEERCRED) and maps it, default-deny, to one role (admin / operator / viewer) and a host scope. The daemon holds the single signing key and signs each authorised action on the operator's behalf — operators hold no key at all. Every allow and deny lands on the audit chain. It is the separation-of-duties foundation dual control is built on, and it is on by default: the first admin is installed once, as root, with op bootstrap.
  • Air-gapped / offline operation. Set ETMINAN_AIRGAP=1 and the verifier refuses its own outbound connections — the plugin-catalog fetch and remote SIEM syslog — while in-enclave agent polling continues untouched. The refusal says which flag caused it and which feature it turned off, rather than failing as a timeout. For classified networks and OT/ICS segments where an outbound connection is not an option.
  • Directory-sourced roles. In every edition, and described here because it is what larger estates ask about first. Map one Active Directory or LDAP group to one role and everybody in it can act, with no row added per person. Offboarding follows the group. The host is joined to the domain the way every other Linux server in the estate is; Etminan speaks no LDAP and holds no bind credentials. It is off until a group is mapped, and an installation that maps none never asks the operating system anything. An unreachable directory stops nothing.
  • Compliance control mapping. A control-by-control mapping from what Etminan does to the frameworks your auditor already names — ISO/IEC 27001:2022, NIS2, DORA, SOC 2 and PCI-DSS v4.0.1 — so file-integrity monitoring answers a named control instead of being argued from scratch. Every row states its coverage as one of four claims, down to does not address, because an overclaim an auditor catches costs the whole document. Per-framework reports are signed PDFs built from one shared evidence base. Confidential; shared with evaluating teams under NDA. If you are audited against something not on that list — NIST 800-53/800-171, TISAX — tell us.
  • Manufacturer EK-certificate provenance. Optional at enrollment (enroll --ek-roots <dir>): the host must present a manufacturer EK certificate whose key matches its activated Endorsement Key and chains to a root CA you provide — a genuine-hardware assurance layer on top of same-TPM residency, for discrete TPMs where a software or emulated TPM must be ruled out. RSA CAs only; without the flag, enrollment is unchanged.
Planned Opt-in
On the enterprise roadmap

More, being built for enterprise deployments now.

Priorities shaped by real regulated deployments rather than guessed at. Listed honestly as what they are — in development or planned, not yet shipped:

  • Advanced RBAC — planned. Custom roles and finer-grained scopes on top of the built-in admin / operator / viewer identity model that ships in every edition, so larger teams can shape day-to-day review, approval, and administration to their own org structure.
  • SIEM output, JSON format — planned. A newline-delimited JSON event per finding and per signed operator action over the same syslog transport, alongside the shipped CEF/LEEF formats — for generic structured-log ingesters such as Elasticsearch, Loki, and Vector.
  • Operator work queue — planned (both editions). Triage, acknowledge, and resolve findings from a single queue, with the action trail recorded in the signed audit log — so a SOC can work drift the same way it works any other alert backlog.
  • Bidirectional ticketing — planned (both editions). Beyond correlating changes to existing tickets, push findings out as tickets into your ITSM, closing the loop between an integrity alert and the workflow your team already lives in.
Design principle

Every enterprise feature is opt-in.

None of this changes how Etminan behaves out of the box. Each capability stays disabled until you explicitly configure it, so a default install remains exactly as simple — and as auditable — as it is today. That's a deliberate rule, not an accident: a tool whose whole job is to detect unexpected change should never grow surprising new behavior of its own on an upgrade.

Talk to us

Deploying Etminan in a regulated environment?

If you're evaluating Etminan for a SOC, a regulated industry, or an air-gapped site, tell us what you need — the SIEM format you ingest, your dual-control policy, the compliance framework you're audited against. It genuinely shapes what we build next, and it's the fastest way to get a feature you need onto the near-term list.

✉  Contact us

Reporting something security-sensitive? See the homepage Contact section for our PGP key fingerprint.