====== Linux Hardening Guide ====== == 1. Keep the System Updated == Regularly update the operating system and installed packages using package managers like: Debian/Ubuntu: sudo apt update && sudo apt upgrade RHEL/CentOS: sudo yum update Arch Linux: sudo pacman -Syu Enable automatic updates when possible. == 2. Minimize Installed Packages == Remove unnecessary packages and services to reduce vulnerabilities. Use apt purge, yum remove, or pacman -Rns to uninstall unused software. == 3. User and Access Control == Disable root login and use sudo for administrative tasks. Set strong passwords and enforce password policies. Use the principle of least privilege (POLP) for user accounts. == 4. Secure SSH == Change the default SSH port (e.g., from 22 to another port in /etc/ssh/sshd_config). Disable root login via SSH (PermitRootLogin no). Enable key-based authentication and disable password authentication (PasswordAuthentication no). Use firewall rules to restrict SSH access (e.g., using iptables or ufw). == 5. Configure a Firewall == Use iptables, firewalld, or ufw to manage firewall rules. Allow only necessary inbound and outbound traffic. Example: sudo ufw allow 22/tcp (if using SSH on port 22). == 6. Implement Security Modules == Enable SELinux (on RHEL-based systems) or AppArmor (on Debian-based systems) for mandatory access control. Example: Check SELinux status: sestatus Enable AppArmor: sudo systemctl enable apparmor == 7. Monitor and Log Activities == Enable and configure system logging using rsyslog or journalctl. Use tools like auditd for detailed auditing. Regularly review logs in /var/log/ for suspicious activity. == 8. Use Intrusion Detection and Prevention Systems == Install and configure tools like: Fail2Ban to block brute-force attacks. AIDE (Advanced Intrusion Detection Environment) for file integrity monitoring. == 9. Encrypt Data and Communications == Use LUKS for disk encryption. Ensure sensitive communications use TLS/SSL (e.g., HTTPS, OpenVPN). Secure sensitive files with GPG encryption. == 10. Backup and Disaster Recovery == Regularly back up important files and system configurations. Use tools like rsync, tar, or Timeshift for backups. Store backups securely and test recovery procedures periodically. == Conclusion == Following these hardening steps will significantly improve the security of a Linux system. Security is an ongoing process, so regular monitoring and updates are essential to maintaining a secure environment.