Ubuntu Security Audit
June 20265 findings (1 critical, 2 high, 2 medium), all remediated on a single personal Ubuntu server.
Scope and limitations
This was a single-host audit against one personal Ubuntu server — not a full network penetration test, and not a client engagement. It covers what was checked on that one host: firewall state, SSH hardening, package currency, and unnecessary exposed services. Nothing here implies broader network scope, lateral-movement testing, or application-layer testing beyond what's shown below.
UFW was completely inactive — no rules controlled inbound connections, so any service on the host was reachable from the internet.
Before

ufw status: inactive; ss -tulnp showing all listening ports unfiltered
After

UFW enabled, OpenSSH explicitly allowed, default-deny on everything else
sshd_config had no cap on failed authentication attempts, leaving the host open to unthrottled brute-force login attempts.
Before

sshd_config: MaxAuthTries and related hardening directives left at commented defaults
After

Fail2ban installed and active — automatically bans IPs after repeated failed attempts
PermitRootLogin was not explicitly disabled, so a compromised root password would have granted an attacker immediate full control.
Before

sshd_config: PermitRootLogin left at commented default
After

PermitRootLogin set to no, SSH service restarted to apply
20+ packages had pending security updates, including the Linux kernel — known, unpatched vulnerabilities sitting exposed.
Before

apt list --upgradable: 20+ packages pending, including linux-image/linux-generic
After

19 packages upgraded, kernel updated 6.8.0-111 -> 6.8.0-124, 12 LTS security updates applied
Apache was running and internet-exposed on port 80 despite not being required for the server's purpose — unnecessary attack surface.
Before

ss -tulnp showing apache2 bound and listening on port 80
After

apache2 fully removed, UFW rules automatically reloaded
Summary
1 critical, 2 high, 2 medium — all remediated during the audit. Zero critical or high findings remain open.