Why
forge/instance.goandforge/identity/identity.gocreate directories0755; SQLite databases and audit files are commonly0644.- Existing ACME cache directory permissions are not checked.
- The systemd unit is good but can be tightened.
Scope
- Create the data directory
0700(or0750with a dedicated group) and databases/audit/host key0600. - Check existing permissions at startup and warn/fail on group/world-readable secrets.
- Add
UMask=0027to the systemd unit. - Consider
CapabilityBoundingSet=,RestrictAddressFamilies=,PrivateDevices=true,ProtectProc=invisible,ProcSubset=pid,LimitCORE=0, andMemoryDenyWriteExecute=truewhere tested. - Ensure
vole admin account backupwrites0600. - Document the production baseline: loopback web behind TLS, firewalled SSH, conservative limits.
Acceptance
- A fresh install has no world-readable account database, host key, ACME key, or audit log.
- The service starts under the hardened unit.