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