Filesystem partitioning & mount options
Separate /var, /tmp, /home. nodev, nosuid, noexec where appropriate.
Work / Enterprise & Security / Compliant VM
Compliance audits are theatre until the auditor asks for proof and the team has none. Three weeks vanish chasing logs. This template ends that. CIS-aligned controls applied on first boot. Evidence collected automatically. Attestations signed. By the time the auditor arrives, the folder is already there.
Act I · The Problem
"Send me the firewall log from March, the SSH config from before the change, and proof that disk encryption was on the whole time."
git blame. The history is wrong.Act II · The Promise
Every control on this list is applied on first boot, re-verified on every run, and documented in the evidence bundle. There are no manual steps. There is no spreadsheet.
Separate /var, /tmp, /home. nodev, nosuid, noexec where appropriate.
Default-deny on services. Only explicitly allowed daemons run on boot. Everything else uninstalled.
UFW or nftables baseline. Inbound deny by default. Outbound deny by default. Allowlist documented.
Privileged commands, time changes, auth events, mount events, file integrity. Logs shipped off-host.
Key-only auth. No root login. Modern KEX and ciphers. Login-grace and max-auth-tries clamped.
Strong PAM rules. Lockout on brute force. Sudo audited. NOPASSWD denied except for evidence collectors.
AIDE baseline taken on first boot. Drift report shipped daily. Hash deltas signed for the evidence bundle.
Logs forwarded to off-host sink. Local rotation locked. Loss of forwarder paged immediately.
ASLR on. kernel.kptr_restrict, kernel.dmesg_restrict, net.ipv4.conf.*.rp_filter. Locked.
SSH, sudo, anywhere brute force is plausible. Bans logged and shipped. Re-baselined per environment.
LUKS or cloud-provider equivalent attested at boot. Key location and rotation policy recorded in evidence.
chrony with authenticated time sources. Drift logged. Off-host anchor for time integrity.
Act III · The Bundle
Every run produces a self-describing evidence bundle. Each file is hashed. The hash list is signed. The auditor reads the manifest, verifies the signature, walks the files, and is done.
Act IV · Proof
Boot the VM. Apply the template. Within minutes, the first signed evidence bundle is on disk. There is no preparation phase.
Each control maps to a specific CIS Benchmark item. The mapping lives in the manifest. Auditors read it directly.
Every bundle is hashed. The hash list is Ed25519 signed. Bundles chain across time so that any retroactive change is visible.
Bundles ship to retention-locked object storage. The host can be wiped tomorrow. Yesterday's evidence remains.
When enabled, the bundle includes the SCAP 1.3 XML output. Useful where a regulator already speaks SCAP fluently.
The template is shell. There is nothing magical. It works on Ubuntu and Debian today, with hooks for RHEL-family extension.
I build hardened baselines that produce their own evidence on a schedule. The audit folder is always current. The compliance team is never the bottleneck. The team that owned the engineering owns the proof.