Illustration of several system types each paired with a configuration standard document, and one type left with none

OS Hardening · Evidence Helper · ISO and SOC Certifications

System Configuration Standards

Writing and maintaining hardening documentation that survives an audit. Updated: September 30, 2026.

A configuration standard is the document that says how a type of system is built and hardened in your organisation. OS installation and hardening covers doing the work; this page is about the documents, which is a separate discipline and the one engineering teams neglect — usually because the hardening genuinely exists and nobody saw the point of writing it down.

The point becomes apparent the first time an auditor, a customer's security questionnaire or a new hire asks what your standard is. All three are answered by the same artefact, and none of them is answered by a well-configured server.

1. What a Standard Is, and What It Is Not

It is a statement of intent for a type of system: what is installed, what is disabled, how access works, how it logs, and why. It is not a runbook, not an inventory, and not a record of how one particular machine happens to be configured today.

The distinction that matters most: a standard describes the target state, and something separate demonstrates that real systems match it. Conflating the two produces documents that describe reality at the moment they were written and drift into fiction afterwards.

2. Coverage Comes Before Content

The first question is not what goes in a standard. It is how many standards you need, and the answer comes from the asset inventory rather than from a template.

A coverage table mapping each in-scope system type to its governing standard, last review date and status, with one type having no standard

Build this table before writing anything. It is also, in most audits, the single artefact that answers most of the request — and building it yourself means you find the empty rows before somebody else does. The infrastructure audit normally supplies the left-hand column.

Two details on that table earn their place. An overdue review is worth showing rather than hiding, because an auditor will find the date anyway and an acknowledged gap is a lesser finding than a concealed one. And an explicit “none in estate” line is worth writing for system types you do not have: a silent absence reads as an oversight, a stated one reads as a decision.

How granular?

One document per operating system is too coarse; one per server is unmaintainable. The arrangement that works is a common base plus role addenda:

This is less work than it sounds and much easier to defend, because the shared controls are stated once and cannot drift apart between documents.

3. Derive From a Recognised Source, Then Tailor

There is no reason to invent hardening requirements. CIS Benchmarks, vendor hardening guides and DISA STIGs cover the ground far more thoroughly than anyone does from memory. Name the source and its version in your document.

What matters is that you tailored it. Attaching a benchmark PDF unchanged is a recognisable non-answer: it asserts a standard nobody has read against a system nobody has checked. Go through it, decide per item, and record the decision. “Not applicable — we do not run this service” is a perfectly good entry, and a document full of them is more credible than one that silently claims full conformance.

4. Generate the Document From the Code

For most engineering teams the hardening already exists as an Ansible role, a Packer template, a Dockerfile or a Terraform module. That code is the standard. The right move is to write the document from it — what the role enforces, why each item is there, and which values are parameterised — rather than alongside it.

Writing them independently produces two sources of truth that disagree within a quarter, and the disagreement is worse than having no document at all: an auditor who samples a running host and compares it against the standard turns a documentation gap into a control failure. A missing document is a finding about paperwork. A document contradicted by the system is a finding about your controls.

A practical arrangement: keep the standards as Markdown in the same repository as the configuration code. The commit history is your version control, pull request approvals are the approval record, and the document sits next to what implements it, so changing one without the other is visible in review. See infrastructure as code.

5. What Each Document Needs

Independently of content, a standard is only usable as evidence if it is a controlled document:

6. Deviations Are Normal — Record Them

Every real estate has systems that cannot meet the standard: a legacy application requiring an old TLS version, an appliance whose vendor forbids changes, a host that needs a service the baseline disables. None of that is a problem in itself. An undocumented deviation is.

Keep a deviation register: the system, what departs from the standard, why, what compensates for it, who approved it, and when it will be revisited. A standard with a register of twelve approved exceptions is a working control. A standard with no exceptions, applied to an estate that plainly contains some, tells an auditor the document is not being used.

7. Keeping Them True

Documents decay faster than systems. Three things keep them honest:

Which Frameworks Ask For This

The useful consequence: one set of standards, built once and kept current, answers all three. This is the part of compliance work that genuinely pays for itself, because it is also how you stop building servers by hand.

What You Get

Written from an infrastructure perspective. We are not a certification body, an audit firm or a QSA, and this is not legal or assurance advice. Which requirements apply to you, and how they are interpreted, is a question for your auditor or assessor.