AetharContact
← Back
OperationsCase studyAuthor

Hardening Field Report

A systematic hardening of three hosts - home server and two cloud VPS - toward a minimal attack surface and no public admin plane. The trigger was making the background radiation of the internet visible: a constant stream of SSH brute-force attempts that the SIEM surfaced the moment agents went live.

01The signal

The moment Wazuh agents started shipping SSH logs, the volume became impossible to ignore: tens of thousands of failed authentication attempts hammering every host with a public IP. It's background noise on the internet, but it's a reminder that anything reachable is probed constantly. The hardening pass turned that signal into a closed door.

02SSH off the public internet

Every host now accepts SSH only from the Tailscale network; public port 22 is closed to the world. This is the single largest reduction in attack surface: brute-force bots cannot reach sshd at all, because the firewall drops the packet before the daemon sees it. Authentication is key-only across all hosts - password auth is disabled. One cloud host had been left on password auth during initial setup; the hardening audit caught and corrected it.

03Firewall and the Docker gotcha

UFW runs on every host with an explicit allowlist: HTTPS is the only public exposure; everything administrative is scoped to the Tailscale CIDR. App ports that don't need public exposure are bound to localhost, so the reverse proxy is the sole ingress - which also neutralises the classic Docker-bypasses-UFW problem, where Docker's own iptables rules can make a container port reachable even when UFW says it's blocked. Understanding and containing that interaction was a meaningful part of the hardening work.

fail2ban sits behind UFW with a short retry window and a 24-hour ban. The few services that do face the public internet are covered by two layers instead of one.

04Patching

Wazuh's vulnerability detector gives a live CVE inventory per agent. A coordinated patching pass - apt upgrades plus stale-kernel cleanup - pulled the reported CVE count down by roughly half on the production host. The remainder are in packages with no upstream patch yet; they're tracked, not ignored.

05What it bought

Brute-force bots now hit a closed port. No public admin surface remains. The firewall/Docker interaction is understood and contained rather than assumed away. And the noise that's left is visible in the SIEM and accounted for.

Next

Wazuh SIEM