Skip to main content

Linux Server Hardening

  •  1. Encrypt Data Communication for Linux Server
  • - [ ]

  • All data transmitted over a network is open to monitoring. Encrypt transmitted data whenever possible with password or using keys / certificates.

    • GnuPG allows to encrypt and sign your data and communication, features a versatile key management system as well as access modules for all kind of public key directories.
    • SSH / RSYNC / SFTP for file transfer
    • SSL whenever it's possible


    •  2. Avoid Using FTP, Telnet, and Rlogin / Rsh Services

    • Commands and transferred files can be captured by anyone on the same network using a packet sniffer.
    • Use instead OpenSSH , SFTP, or FTPS (FTP over SSL)


    •  3. Minimize Software to Minimize Vulnerability

  • yum list installed
    yum list packageName
    

    or

    dpkg --list
    dpkg --info packageName
    


    •  4. One Network Service Per System, VM or Container

    Run each exposed service isolated via VM, Docker, LXC..


    •  5. Keep Linux Kernel and Software Up to Date


    •  6. Use Linux Security Extensions


    •  7. SELinux


    •  8. Linux User Accounts and Strong Password Policy


    •  9. Set Up Password Aging for Better Security


    •  10. Restrict Use of Previous Passwords


    •  11. Lock User Accounts After Login Failures


    •  12. Verify No Accounts Have Empty Passwords


    •  13. Ensure No Non-Root Accounts Have UID Set to 0


    •  14. Disable Root Login


    •  15. Physical Server Security


    •  16. Disable Unwanted Linux Services


    •  17. Find Listening Network Ports


    •  18. Delete X Window Systems (X11)


    •  19. Configure Iptables and TCPWrappers Based Firewall


    •  20. Harden Linux Kernel with /etc/sysctl.conf


    •  21. Separate Disk Partitions for Linux System

  •  22. Implement Disk Quotas
  •  23. Disable IPv6 if Not Using It
  •  24. Disable Unwanted SUID and SGID Binaries
  •  25. Check for World-Writable Files
  •  26. Remove Noowner Files
  •  27. Use Centralized Authentication Service
  •  28. Implement Kerberos for Authentication
  •  29. Configure Logging and Auditing
  •  30. Monitor Suspicious Logs with Logwatch / Logcheck
  •  31. Use System Accounting with auditd
  •  32. Secure OpenSSH Server
  •  33. Install and Use Intrusion Detection Systems (IDS)
  •  34. Disable USB/Firewire/Thunderbolt Devices
  •  35. Disable Unused Services
  •  36. Use fail2ban/denyhost for IDS
  •  37. Secure Apache/PHP/Nginx Server
  •  38. Protect Files, Directories, and Email
  •  39. Perform Regular Backups
  •  40. Additional Recommendations and Conclusion