The principles of keeping your servers secure are quite simple.
In no order of priority:
- Keep your software up-to-date. (Related: run only supported/maintained versions.)
- Run only the services you need.
- Install only the software you need.
- Configure your software correctly.
- Grant access based on the principle of least privilege.
- Add monitoring.
Establish a base line and alert on deviations.
The specifics depend quite a lot on the actual software, the services that you need to run and your requirements.
For external validation of your configuration: There are numerous vulnerability scanners and/or penetration testing toolkits as you can see on lists such as this one: https://owasp.org/www-community/Vulnerability_Scanning_Tools
Be aware that often such scans rely on determining the version numbers of your installed software and they don't test if known vulnerabilities can successfully be exploited. That can result in many false positives on Linux distributions that do security back porting, as for example explained in this Q&A PCI Compliance: install Apache 2.4.17 on Ubuntu 14.04.3?
Authenticated scans can help against that by checking the version of the package, rather than the version string an application reports.
Another approach is more from the system management perspective with centralised server management including release and patch management.
For example Ubuntu's Landscape , Red Hat Satellite and Microsoft SCCM