VPS & Server audit fixes
Services & Processes: fixing all 9 checks
The services and processes audit inventories the units, timers, cron entries and external listeners a host is running, so a failure names attack surface nobody asked for or a persistence foothold.
Three checks call systemctl and skip together when it is missing, so Unneeded Services, Running Service Count and Systemd Timers report three skips rather than three passes on an Alpine, OpenRC or container-style host that does not use systemd. The other two skips are External Listener Processes, which needs both root and ss, and Kernel Hardening, which skips when /proc/sys cannot be read at all.
Transcribed from the vps-security-services-processes audit script. For what the audit covers rather than how to fix it, see the Services & Processes checklist.
Find your finding
Listed in the order the audit runs them. Take the check name from the third field of the result line and open its page.
Unneeded Services
SoonChecks for services that rarely belong on a VPS (cups, avahi, bluetooth, ModemManager)
LowNo root3 resultsRunning Service Count
SoonCounts running systemd services as a proxy for attack surface
LowNo root3 resultsExternal Listener Processes
SoonMaps processes listening on external interfaces
MediumNeeds root3 resultsSuspicious Cron Jobs
SoonCounts cron entries and hunts for download-and-execute persistence patterns
HighNeeds root2 resultsSystemd Timers
SoonCounts scheduled systemd timers
LowNo root3 resultsTime Synchronisation
SoonClock synchronisation, which every log timestamp depends on
LowNo root2 resultsAudit Daemon
Soonauditd presence and state for a durable forensic trail
MediumNo root3 resultsHost AppArmor/SELinux
SoonAppArmor or SELinux enforcement on the host itself
MediumNo root2 resultsKernel Hardening
SoonASLR, dmesg restriction, reverse-path filtering and ICMP redirects
MediumNo root3 results
A SKIP is never a pass
A skipped check verified nothing at all. The most common cause is privilege: 2 of the 9 checks in this audit need root for a complete result. Before every run, each script works out which of four privilege modes it is in.
| Mode | How it is reached | What it means for your results |
|---|---|---|
root | The audit runs as UID 0. | Every privileged branch runs directly. No check skips for lack of permission. |
nopass | sudo -n true succeeds, so the account has passwordless sudo. | Privileged commands run through sudo -n. |
pass | A sudo password was supplied in the CtrlOps audit settings and accepted. | Privileged commands run through sudo -S. |
none | None of the above worked. | CAN_ROOT=0. Every privileged branch returns SKIP with a "Need root" message rather than guessing. |
If many checks skip with a “need root” message, run the audit as root, grant the audit account sudo (with or without NOPASSWD), or supply the sudo password in the CtrlOps audit settings.
Services & Processes questions
Run all 9 Services & Processes checks, in one click
CtrlOps runs this 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