Audit fix library

Fix Any CtrlOps Security Audit Finding

A security audit tells you which setting is wrong. This library tells you what the check actually read, why a real host trips it, when the result is a false positive, and the exact command that fixes it.

One page per check across 25 audits and 4 platforms, each transcribed from the audit script CtrlOps runs rather than written from memory.

157
checks documented
25
audits covered
4
platforms
8
known script issues, listed
Reading a result

Every check returns one of four statuses

Each check prints a single line in the form ##RESULT|STATUS|Check Name|SEVERITY|message. The status decides which section of a fix page you need.

  • PASS

    The condition the check looks for was not found, or a safe configuration was positively confirmed.

  • WARN

    Worth reviewing. Usually a defence-in-depth gap, a default left in place, or a setting that is broader than it needs to be.

  • FAIL

    A concrete exposure was observed on the host. The page for that check opens with the fix.

  • SKIP

    The check could not run: the engine was absent, root was needed, or a tool was missing. A SKIP is never a pass, because nothing was verified.

Known issues

8 of these checks are wrong, and we say which

Why we publish this

Software moves and check logic drifts behind it. MySQL removed the variable one check reads, Docker retired the feature another rewards, and Let’s Encrypt switched off the responders a third depends on. Every one is documented with its source and the result you should expect instead.

Read the known issues
Provenance

Why trust these thresholds?

Because you can check them. Here is the same check, in the script that runs it and on the page that documents it.

In the audit script
##RESULT|PASS|SSH Root Login|HIGH|Root login is disabled
transcribed, then asserted on every build
On this page
PASSThe effective value is noRoot login is disabled entirely.

One check, from the file that runs it to the row you read. The severity, the status and the wording all come from the same place, and the build fails if they stop matching.

  • Thresholds, not opinionsEvery pass, warning and failure value is transcribed from the script that applies it, not from a hardening guide.
  • Guarded against driftnpm run check:audit-fixes fails the build if a page and its audit script ever disagree about a severity or a threshold.
  • Read-only by designEvery check inspects state. Nothing is installed, no service restarts, and nothing is written to the host.
  • Runs on any Linux you haveThe scripts detect the package family themselves, from Ubuntu and Debian through RHEL, Rocky, Alma, SUSE and Alpine.
FAQ

Audit fix questions

It documents every individual check in the CtrlOps security audit, one page per check. Each page explains the exact file or command the check reads, the threshold that separates a pass from a failure, why a correctly configured host sometimes still fails, the remediation, and commands to verify the fix independently of the audit itself. You do not need to run CtrlOps to use it.
No. Every page states the command you can run by hand to reproduce the check, and the fix is plain shell, nginx, Apache or SQL configuration. CtrlOps runs all of them over an existing SSH connection and scores the result, which is faster than working through them one at a time, but the content stands on its own.
A SKIP means the check could not run, so nothing was verified. The usual causes are a missing engine, a tool that is not installed, or insufficient privilege. A SKIP is never a pass. Every page lists the exact conditions that produce one for that check, and each audit hub page explains the privilege modes behind most of them.
Most map onto a published standard, and each page names the ones that apply: CIS Benchmarks, the OWASP Top 10 and cheat sheets, NIST SP 800-53, and vendor hardening guides such as the Mozilla OpenSSH guidelines. The pages cite the standard rather than claiming certification against it.
Yes, and they are listed. Eight checks have drifted from the current state of the software they audit, including MySQL TLS detection on 8.4 and later, Docker Content Trust after its retirement, and OCSP stapling after Let's Encrypt switched off its responders. Each affected page says so in place, and the known issues page collects all eight with sources.
Each page carries a "last reviewed" date and is re-checked against the audit script it documents. A build check fails if a page's severity, root requirement or documented result statuses ever disagree with the script, so the pages cannot silently drift out of sync with the tool.
Audit your fleet

Run all 157 of these checks, in one click

CtrlOps runs every audit over your existing SSH connection - no agents, no scripts to manage. $7/user/month after a 1 month free trial - no credit card required.

Start instantly· No credit card· No sneaky autorenewals