Security Guides

Security inventory: 7 checks people running several servers overlook

For solo and small operators, incidents come from untracked state. A 7-point inventory: the key-holding PC, 2FA, SSH keys and plaintext passwords.

Published 2026-06-11 Updated 2026-10-04 8 min read
On this page

For solo or small-scale operators who manage several servers, sites, and domains. The more you've postponed taking stock because "it works," the more this applies. No attack steps here — only risks you can list and delete yourself.

Count and reduce what you have before adding controls

Untracked state is itself a risk. Take stock and you usually find:

Key→where?
Unclear which key on which PC opens which server
2FA fuzzy
Whether key accounts have 2FA is fuzzy
Plaintext
You forget where plaintext passwords remain
Stale entries
Unused keys and stale registrations linger

1. Protect the PCs that hold keys and credentials

No matter how hard you harden the server, if the PC holding your SSH private key is compromised, every server that key can access is exposed. Once you switch to key auth, the real boundary of your fleet moves to "the PC that holds the key." So the priority isn't "server → PC" but "PC → server."

PC holding the key (attackers aim here first)
↓ one key opens several servers
Server A
Server B
Server C
With key auth, the place to protect isn't the server but the PC holding the key. If that PC is compromised, every server that key opens is exposed.

The highest-value check: whether .ssh sits OUTSIDE a cloud-sync folder (OneDrive/Drive/Dropbox). If a private key accidentally lives under sync, your key leaks the moment the cloud account is taken over — even without touching the PC. The least-privilege mindset for keys is in SSH keys and least privilege.

2. Set up 2FA in priority order: email, then domain, then billing

"Add 2FA to everything" never ends if you start vaguely. Rank accounts by which ones can recover the others (root of trust) and the priority becomes clear.

TierTargetWhy it's top priority
Tier 0Email accountAlmost every service recovers via "reset link to email" — take the email and the lower 2FAs are bypassed
Tier 1Domain control (registrar/DNS/hosting/code platform)The site itself can be hijacked or swapped
Tier 2Billing APIs (payments / AI APIs / mail sending)Leads to direct financial loss

In practice: keep backup codes on paper (putting them in the cloud halves the point of 2FA), and confirm your recovery email still works and is under your control. Steps are in the multi-factor authentication guide and the security baseline checklist.

3. List which SSH key opens which server

"It's key auth, so it's safe" is not management. What you actually need is one table of "which key on which PC opens which server." Match each server's authorized_keys by fingerprint and the invisible appears — duplicate keys (the same key under two names), unused keys (used nowhere), and orphan registrations (left over for a purpose that's gone). authorized_keys is easy to add to and easy to forget to prune. A table lets you ask, row by row, "what is this for?"

4. Cut off end-of-support devices with the fewest steps

A key on a device whose OS reached end of life (EOL) is common. Going big — "rotate every key and reconfigure every server" — is so heavy you never do it.

1

Check for any sign of leakage

No sign? The key is safe right now. EOL doesn't automatically mandate rotating every key.
2

The least-effort cut = delete the key from the device

Don't touch server config; delete the private key on the device. The more config changes you make, the higher the risk of creating a new misconfiguration.
3

Put the support deadline on a calendar

If extended security updates (ESU) exist, enrol and schedule a date to decide migrate-or-cut before the deadline (→ end-of-support OS risks).

The trick: pick the cut you can actually finish today over a perfect procedure you leave undone.

5. Remove plaintext passwords from the cloud

Before the password-manager debate, there's a bigger real harm: a plaintext password list sitting in a cloud document. Leak it and every account is exposed at once.

Plaintext list (a cloud document)

  • One account being taken over leaks everything
  • You'll paste into a fake site by hand
  • No breach detection, no autofill

On-device-encrypted storage

  • Contents are encrypted on your device (provider can't read them)
  • Won't autofill on a fake domain = phishing-resistant
  • After migrating, delete the plaintext for good

"Which manager is best" matters far less than "did you remove the plaintext from the cloud" (→ how to choose a password manager / storing passwords safely).

6. Remediate one change at a time, reversibly

When the inventory surfaces problems, you'll want to fix them all at once. In production, changing several things on momentum is the most dangerous move. Hard-to-undo operations — key rotation, config changes, production deploys — should be done one at a time, after preparing a full backup and a restore procedure (i.e. make it reversible). Don't create a new problem with the remediation itself (→ backup and recovery).

7. Design the ledger to hold no secrets

The ledger of your results becomes a target list for attackers if it leaks. So draw the line up front.

Fine to write (not catastrophic if leaked)

  • Public keys, fingerprints
  • The structure of your setup, whether 2FA is on
  • Pass/fail results

Never write (one leaked line can be abused)

  • Private key contents
  • Passwords, API keys
  • Real reset codes

Fingerprints and public keys only identify "which key" and can't be abused alone. Express your state using only information that isn't catastrophic if leaked — then the ledger stays safe in the cloud or shared with a team.

This site's view: take inventory before adding tools

On this site we never keep secrets (keys, passwords, connection details) in plaintext — not in shared docs, not in code — we split keys per purpose (so one leak doesn't spread to anything else), and we remediate reversibly, one at a time. Before adding a new tool, first turn "untracked state" into "a listed state." It's unglamorous, yet it deletes more risk than anything else.

FAQ

QWhat is a security inventory?
A

Before 'adding' new controls, you list the keys, accounts, devices, and registrations you already have, find the unnecessary or dangerous ones, and reduce them. For solo/small operators, incidents come less from a missing firewall or WAF than from untracked state — 'which key on which PC opens which server?', 'is 2FA on or not?' An inventory removes that uncertainty.

QWhere do I start?
A

The order is PC → server. Once you use key-based SSH, the real boundary moves from the server to the PC that holds the key. First audit the health of the key-holding PC (especially whether .ssh sits OUTSIDE a cloud-sync folder), then your email account's 2FA and backup codes, then the SSH-key inventory.

QIs a ledger of the results safe to keep?
A

It is if you draw the line on content. Public keys, fingerprints, the structure of your setup, whether 2FA is on, and pass/fail results are fine to write (none are secret). But never write the contents of a private key, a password, an API key, or a real reset code — not even one line. Express your state using only information that isn't catastrophic if leaked, and the ledger gives an attacker nothing useful if it leaks.