A practical project to harden an Ubuntu server using security best practices.
- Project Overview
- Threat Model & Security Goals
- Baseline & Preparation
- User & Access Management
- SSH Hardening
- Firewall & Network Hardening
- System Updates & Patch Management
- Intrusion Prevention (Fail2ban)
- Kernel & Runtime Hardening
- Logging, Monitoring & Auditing
- Backup & Recovery
- Set password and auth policies (PAM)
- Operations & Maintenance
- Troubleshooting
- Future Improvements
- Appendix A: Command Reference
- Appendix B: Configuration Backup
- Validation and Security Checklist
This project focuses on:
- Initial server baseline and inventory
- SSH hardening with key-based authentication
- Firewall and network controls
- Brute-force mitigation (Fail2ban)
- Automatic security updates
- Logging and auditing basics
- Backup and recovery readiness
- Validation checklist and ongoing maintenance
- Read Project Overview
- Follow the guides in order (
00→13) - Execute commands carefully and test access after each critical change
- Complete Validation & Security Checklist
- Check out the Project Demonstration on Youtube
- Always keep one active root/console session while hardening SSH and firewall settings.
- Test new SSH config in a second session before disconnecting your original session.
- Back up config files before changes (see Appendix B).
- Do not disable password auth until SSH keys are verified.