Ich mache es ganz einfach:
Zunächst verwende ich ein OS welches mir out-of-the-box die Freiheit gibt, selbst über die (ein)zukompilierende Features zu bestimmen. Davon mache ich dann nach dem KISS-Prinzip gebrauch und konfiguriere das System von Grund auf selbst und achte dabei primär auf Security, Best-Practice sowie Ressourcenschonung und erst nachrangig auf Performance. So habe ich keine unnötigen Features und unnötigen Code auf meinen Kisten, was enorm zur Overall-Security beiträgt.
Als weiteres Mittel zu einem möglichst sicheren Systems setze ich auf proaktive Sicherheitsmechanismen wie Position Independent Executables (PIE), Stack Smashing Protector (SSP), _FORTIFY_SOURCE, Trusted Path Execution (TPE), PaX, RBAC, ACL und mehr. Das meiste davon wird man bei Binary-Distros vergeblich suchen und auch bei Source-Distros nicht per Default bekommen. Dazu muss man sich schon selbst informieren und diese Mechanismen manuell aktivieren beziehungsweise nachrüsten.
BruteForce und Co interessieren mich gar nicht, läuft unter normalem Grundrauschen und für DDoS gebe ich erst gar keinen Anlass. DoS kann ich bei Bedarf entweder selbst oder gemeinsam mit meinem Anbieter abarbeiten. Alles weitere ist entweder Daily-Business und wird per Brain verwurstet, oder Interna das nichts in der Öffentlichkeit zu suchen hat.