====== 🛡️ Security & Fail2Ban ====== Security in a public cloud environment requires a multi-layered approach. This page documents the hardening process of the Ubuntu instance and the implementation of automated defense mechanisms. ===== 1. Cloud Infrastructure Firewall (OCI) ===== Before traffic reaches the server, it must pass through the **OCI Security Lists**. To minimize the attack surface, only essential ports are exposed to the public internet. **Configured Ingress Rules:** ^ Port ^ Protocol ^ Source ^ Description ^ | 22 | TCP | 0.0.0.0/0 | SSH (Admin Access) | | 80 | TCP | 0.0.0.0/0 | HTTP (Redirects & Challenges) | | 443 | TCP | 0.0.0.0/0 | HTTPS (Encrypted Web) | ===== 2. Brute-Force Protection (Fail2Ban) ===== To prevent automated SSH attacks, **Fail2Ban** was installed. It monitors system logs for failed login attempts and temporarily bans the offending IP addresses. **Installation:** sudo apt install fail2ban -y **Configuration:** A local configuration file was created at ''/etc/fail2ban/jail.local'' to protect the SSH service. [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 **Management Commands:** # Check banning status sudo fail2ban-client status sshd # Unban a specific IP sudo fail2ban-client set sshd unbanip ===== 3. Automated SSL/TLS (Certbot) ===== While Cloudflare provides edge encryption, the connection between Cloudflare and the OCI server is secured using **Let's Encrypt** certificates. **Installation & Certificate Generation:** sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d your-domain.com The certificates are automatically renewed via a systemd timer, ensuring zero downtime due to expiration. ===== 4. Security Hardening Checklist ===== Additional steps taken to secure the OS: * **System Updates:** Configured ''unattended-upgrades'' for automatic security patches. * **Non-Root Access:** Direct root login via SSH is disabled; all administrative tasks are performed via ''sudo''. * **Log Monitoring:** Regular auditing of ''/var/log/apache2/access.log'' to identify suspicious patterns. --- **Next Step:** Proceed to the **Automated Backups** section to see how cloud data is preserved.