Free · no sign-up
Audit your VPS security with one command
A read-only script checks SSH, firewall, exposed services, updates and accounts, and gives you a score from 0 to 100 with the fix for each issue. It changes nothing on the server and sends nothing anywhere.
curl -fsSL https://securyblack.com/audit.sh | sudo shRather read it first? It is about 200 lines of sh: download it, review it and run it. View the script
curl -fsSL https://securyblack.com/audit.sh -o audit.sh
less audit.sh
sudo sh audit.shWhat it checks
- SSHWhether root can log in, whether it accepts passwords, how many attempts it allows per connection, X11 forwarding and the port.
- Firewall and brute forceWhether a firewall is active (UFW, firewalld, nftables or iptables), whether Docker publishes ports bypassing UFW, and whether Fail2ban or CrowdSec block attacks.
- Exposed servicesRedis, MongoDB, Elasticsearch, Memcached, MySQL, PostgreSQL, FTP or Telnet listening beyond localhost. Private networks and Tailscale do not count.
- UpdatesPending security patches, whether they install automatically and whether a reboot is needed to load them.
- Accounts and permissionsOther accounts with UID 0 besides root, and who can read /etc/shadow.
What it looks like
Example on a freshly created Ubuntu 24.04 VPS: no firewall, no Fail2ban and pending patches.
SecuryBlack · Quick VPS audit
my-vps · Ubuntu 24.04.5 LTS · 2026-10-21 18:02
SSH
✓ Root cannot log in with a password
✗ MEDIUM SSH accepts passwords
Once your key works, set PasswordAuthentication no
✗ LOW MaxAuthTries is 6: too many attempts per connection
Set MaxAuthTries 3
✗ LOW SSH on port 22, the first one bots try
A high port (Port 2222) cuts the noise; open it in the firewall first
Firewall
✗ HIGH No firewall active on the server
sudo ufw allow OpenSSH && sudo ufw enable (ignore this if your provider filters traffic)
✗ HIGH Nothing blocks brute-force attacks (no Fail2ban or CrowdSec)
sudo apt install fail2ban and enable the sshd jail
Services beyond localhost
✓ No database or insecure service exposed
Listening beyond localhost: 22
Updates
✗ HIGH 4 security updates pending (12 in total)
sudo apt update && sudo apt upgrade
✓ Security patches install automatically
Accounts and permissions
✓ Only root has UID 0
✓ /etc/shadow protected
Score: 44/100 (D) critical: 0 · high: 3 · medium: 1 · low: 2How the score works
It starts at 100 and each issue subtracts by severity: critical 30, high 15, medium 7 and low 2. An A is 90 and up, a B from 75, a C from 60, a D from 40, and anything below is an F.
The rules and their severity are the ones FerroSentry uses, our open-source agent that runs them every hour on servers connected to SecuryBlack.
Frequently asked questions
Is it safe to run a script with sudo?
This one only reads: it installs no packages, changes no files and opens no network connections. Still, the rule is a good one: never run anything with sudo that you have not read. That is why you can download it and review it first.
Does it work without root?
Yes, but it skips the firewall and reads the SSH configuration from the files instead of the effective one. It tells you how many checks it skipped.
Which distributions does it support?
Any Linux with sh. Updates are checked on Debian and Ubuntu (apt) and on Fedora, RHEL and derivatives (dnf).
This is a snapshot. FerroSentry watches it every hour
Connect your server and FerroSentry repeats these checks every hour, and more: file integrity, persistence, processes and certificates. It alerts you when something changes and you apply the fixes with one click from the panel. Free during the beta.