docs: TLS audit offload bench-verified (poam-hardening-5bc6d27) — all gates passed
This commit is contained in:
+25
-13
@@ -228,7 +228,8 @@ firewall, per-host/rotatable admin access. **Remote audit offload — WIRED both
|
||||
ends** (2026-06-19): receiver `serving/audit-collector/` (rsyslog TCP/514,
|
||||
per-source-host files) + sender in the image (provisioner 2f, `audit_host` var:
|
||||
audisp-syslog→LOCAL6 + rsyslog `omfwd` to `audit.fleet.lab`). **UPGRADED TO TLS
|
||||
2026-07-12** (gtls/6514, fleet-CA x509/name; see #8 — BENCH-VERIFY pending; the
|
||||
2026-07-12 AND BENCH-VERIFIED same day** (gtls/6514, fleet-CA x509/name; full
|
||||
results in #8 — incl. evil-twin rejection + lossless spool drain; the
|
||||
plaintext-era notes below record the original bring-up). **VERIFIED END-TO-END ON THE BENCH
|
||||
2026-06-19** — booted host `cygnus-cruiser-99` (192.168.50.148) forwards to the
|
||||
collector, which writes `audit-collector/logs/192.168.50.148/{audit,messages}.log`.
|
||||
@@ -952,10 +953,11 @@ smoke test.
|
||||
secure `nvme connect` as the test path has.
|
||||
- **Future hardening waived for now** (from the STIG register): FIPS, firewall,
|
||||
per-host/rotatable admin (SSH CA / config-agent).
|
||||
- **[x] TLS-encrypted audit/log offload — IMPLEMENTED 2026-07-12 (awaiting
|
||||
bench).** The host→collector hop is now syslog-over-TLS; the plaintext `2f`
|
||||
forward and the three `rsyslog_encrypt_offload_*` waivers are gone. As built
|
||||
(followed the original 5-step plan):
|
||||
- **[x] TLS-encrypted audit/log offload — VERIFIED ON THE BENCH 2026-07-12**
|
||||
(build `poam-hardening-5bc6d27`, host `comet-beacon-54` 192.168.50.194 →
|
||||
collector s3). The host→collector hop is now syslog-over-TLS; the plaintext
|
||||
`2f` forward and the three `rsyslog_encrypt_offload_*` waivers are gone. As
|
||||
built (followed the original 5-step plan):
|
||||
- **CA reused, not new:** the sender trusts the collector via the fleet CA
|
||||
already baked at `/etc/dot1x/radius-ca.pem` (`var.fleet_ca` — now the trust
|
||||
anchor for RADIUS EAP-TLS, fleet-agent AND log offload). Collector server
|
||||
@@ -987,14 +989,24 @@ smoke test.
|
||||
- **Firewall:** serving host now needs **6514/tcp** open on the boot NIC
|
||||
(same host-networking trap as 514 — see audit-collector/README.md); the
|
||||
future workstation egress rule is 6514 too.
|
||||
- **BENCH-VERIFY (the gate):** build with the real fleet CA + run
|
||||
`issue-cert.sh` + `docker compose up -d --build audit`; on a booted host
|
||||
confirm records land in `audit-collector/logs/<ip>/audit.log`, `ss -tnp`
|
||||
on the serving host shows the sender ESTABLISHED to **:6514** (not :514),
|
||||
a tcpdump of :6514 shows TLS (no cleartext syslog), a wrong/placeholder CA
|
||||
is REJECTED (sender spools, `rsyslogd` logs a cert-validation error — proves
|
||||
x509/name is actually enforced), and the STIG report shows the three
|
||||
`rsyslog_encrypt_offload_*` rules PASS (0 new REVIEW rows).
|
||||
- **BENCH RESULTS (all gates passed, 2026-07-12):** sender ESTABLISHED to
|
||||
:6514 only (nothing on :514); records land in
|
||||
`audit-collector/logs/192.168.50.194/audit.log` AND surface in Wazuh
|
||||
(USER_CMD decoded, `staff_u:sysadm_r:sysadm_t` sudo confinement visible);
|
||||
wire check clean (tcpdump canary: 31 packets, 0 cleartext matches, canary
|
||||
decrypted only at the collector); **evil-twin rejected** — a self-signed
|
||||
cert with the SAME CN (`audit.fleet.lab`) was refused with `certificate
|
||||
invalid: signer not found`, the omfwd action suspended, and the spooled
|
||||
record **drained losslessly** after the real cert was restored (original
|
||||
timestamp preserved); STIG scan of record: all three
|
||||
`rsyslog_encrypt_offload_*` rules **pass**, 401 pass / 1 fail, 0 new
|
||||
REVIEW rows (the 1 remaining REVIEW is the pre-existing
|
||||
`selinux_context_elevation_for_sudo` — runtime behaviour verified working
|
||||
on the same host, likely an OVAL word-order artifact: the check may want
|
||||
`ROLE=... TYPE=...` where 2c-STIG writes `TYPE=... ROLE=...` — follow-up).
|
||||
Bench gotcha worth keeping: the smallstep password file location varies by
|
||||
image version (`$STEPPATH/password` vs `$STEPPATH/secrets/password`) —
|
||||
issue-cert.sh probes both (fixed 2026-07-12 after hitting it live).
|
||||
(RELP+TLS via `omrelp`/`imrelp` remains the alternative if guaranteed delivery
|
||||
is wanted alongside encryption.)
|
||||
- **fleet-hostapi: scope CORS to the kiosk origin.** The host-info agent ships
|
||||
|
||||
Reference in New Issue
Block a user