Free browser-based DevOps audit tools โ no signup, nothing leaves your browser
UFW is off, but your server isn't wide open โ here's why
Three layers can block ports independently of UFW:
# 1. Allow SSH first โ do this BEFORE enabling UFW sudo ufw allow 22/tcp comment "SSH" # 2. Set default policies sudo ufw default deny incoming sudo ufw default allow outgoing # 3. Allow your services sudo ufw allow 80/tcp comment "HTTP" sudo ufw allow 443/tcp comment "HTTPS" # 4. Enable UFW sudo ufw enable # 5. Verify sudo ufw status verbose
# Check raw iptables rules sudo iptables -L -n -v # Check what's listening on what ports sudo ss -tlnp # Test from outside (turn off Wi-Fi, use mobile data) nmap -p 22,80,443,3306,5432 YOUR_SERVER_IP
Paste your sudo ufw status verbose output and the Firewall Auditor flags high-risk ports, missing default-deny, IPv4/IPv6 mismatches, and nftables conflicts.
Use your cloud provider's rescue console (Hetzner Rescue, DigitalOcean Recovery, AWS Systems Manager) to get terminal access without SSH. Then run sudo ufw allow 22/tcp and sudo ufw reload. Always add the SSH rule before enabling UFW.
Both, ideally. The cloud firewall blocks traffic before it reaches your server (better performance). UFW provides a second layer inside the server and protects against Docker bypassing the cloud firewall's rules.
Only partially. Docker bypasses UFW by inserting iptables rules directly. Ports mapped with ports: in docker-compose.yml are publicly accessible regardless of UFW rules. Use 127.0.0.1:PORT:PORT binding to restrict Docker ports to localhost.