Security is achived with layers. My recommendation is to run CloudLinux and Atomic Secured Linux for a really secure server.
CloudLinux (CentOS fork)
CL have 2 main features that enchances security; LVE and CageFS.
CageFS is basically a Jailkit with custom patches. It lets you virtualize the system in to a kind of VPS lite, each user account have their own root, and all system files are run in a virtualization layer so that if a malicious entity penetrates and gains CLI access, they can only affect that single account, and not breach in to the rest of the server and clients.
All users with UID >99 automatically gets placed in a LVE container. LVE lets you limit the users system resource access based on CPU, RAM, I/O, proc etc, so that a single website can’t starve your server resources.
With both LVE and CageFS in place, you can give your customers /bin/sh shell, without being concerned about your server security.
CL also lets you run php selector, making it possible to run different versions of php (4, 5.2, 5.3, 5.4, 5.5 etc) on a per user basis. Each linux user can also have their own php configuration.
CL also have something they call MySQL governor, that let’s you monitor and restict MySQL usage in shared hosting systems. If you like the ‘top’ command, you will love the ‘dbtop’ command, thats basically ‘top’ for your MySQL server.
Any serious host should run CL, and it’s not that much different then running plain CentOS.
Atomic Secured Linux
A security system used by some of the biggest organizations in the world, including UN, US mint, and NASA.
It comes with rkhunter, mod_secure, maldet, psmonitor, osse, and a lot more tools.
A license cost around $200/year, and it’s one of the best investments I have ever done.
It comes with a WAF based on mod_secure. You get daily rules update to your mod_secure, and a nifty web interface that lets you administer your servers security, view security incidents and administer mod_secure rules on a per domain basis, so if one of your customers require a blacklisted function/feature, you don’t have to disable the rule globaly on your server.
With ASL, you have the ability to configure and certify your server to comply with PCI-DSS standards. I wouldn’t recommend it, but you have the tools you need for it.
I would only recommend ASL if your an experienced linux system administrator, and used to crawling in the command line. There are some issues with ASL, and some times you might have to manually rerun the ASL dailty update, when it hangs your httpd. It happens once or twice a month).
Since getting ASL, we have gone from 1 hacked site a month, to 0 in 9 months, and running…
Despite ASL giving me some extra jobb at times, I rather battle those, then battle hackers.
ASL requires an intermediate systems administrator.
IF you have any questions, feel free to contact me.