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.
Start with the platform your finding came from
Every host has a server layer. Add database, web server and Docker depending on what else it is running.
VPS & Server
The box itself - access, network, patches and permissions.
45 checks7 auditsDatabase
MySQL, PostgreSQL, MongoDB and Redis - access, exposure and encryption.
37 checks6 auditsWeb Server
TLS, security headers, exposed content and request handling.
36 checks6 auditsDocker
Daemon exposure, container privileges, images, volumes and limits.
39 checks6 audits
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.
All 25 audits
Every audit CtrlOps runs, grouped by platform. Each one opens on how its checks fail and what the fix is.
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 issuesWhy 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.
##RESULT|PASS|SSH Root Login|HIGH|Root login is disablednoRoot 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.
Audit fix questions
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