Hallo Patrick,
Diese Tipps klingen für mich wie eine lieblos zusammengesuchte Sammlung verschiedener Maßnahmen.
Sie ist weder vollständig noch strukturiert noch aktuell.
Beim härten von Komponenten gibt es meines Erachtens zwei Herangehensweisen:
- vom äußersten Großen zum innersten Kleinen
- vom innersten Kleinen zum äußersten Großen
Also entweder fängst du bei den Apache Einstellungen der jetzt aktiven Module an, kümmerst dich um den ganzen Detailkram und arbeitest dich langsam über Apache, Betriebssystem, Netzwerk nach außen, oder umgekehrt. Ich bevorzuge es beim großen anzufangen.
Bevor du über so Sachen wie Application- /SQL-Firewall nachdenkst, wie wäre es denn mit einer vernünftigen Hardwarefirewall vor dem Webserver? Wenn ein (D)DoS Angriff schon bis zu deinem Webserver vordringen kann und dort externe oder Apache-Module die Abwehr übernehmen müssen, ist es meines Erachtens schon viel zu spät und du kannst nur noch Schadensbegrenzung betreiben.
Sobald das "drum herum" geklärt ist solltest du dir ein paar Gedanken zum benötigten Betriebssystem machen. Muss es zwingend ein Windows sein oder kommst du auch mit einer Linux Distribution zurecht (erst recht wenn du Apache und nicht IIS nutzen willst)? Welche bietet sich da an und in welcher Version? Wie sicherst du das Betriebssystem selbst ab? Mache dir auch Gedanken dazu, in welchem Benutzerkontext deine Webserver Prozesse laufen sollen.
Bei den hinzuinstallierten Betriebssystemfunktionen gilt das Minimalprinzip: Nur das installieren und aktivieren was wirklich benötigt wird!
Als nächstes steht die Wahl der Einzelkomponenten an. Auch hier das Minimalprinzip. Brauchst du kein PERL, Tomcat oder was auch immer, installierst du es nicht. Alles was du nicht installierst, musst du später auch nicht absichern, auf dem neusten Stand halten, etc.
Bei den Modulen und Funktionen der Einzelkomponenten gilt dasselbe: Alles was nicht benötigt wird wird nicht aktiviert, alles was aktiviert wird muss überprüft werden, ob es besonders abgesichert werden muss. Manche Module können auf verschiedene Weise in zum Beispiel Apache integriert werden. So hast du zum Beispiel die Wahl ob du PHP als Apache-Modul oder über die (F)CGI Schnittstelle einbindest.
Dann und erst dann solltest du dir Gedanken über die Grundkonfiguration der Einzelkomponenten machen. Dazu findest du sicher genug Leselektüre im Internet. Beispiel: Pfad- Zeit- Ressourcenlimits setzen, Zugriffsregeln definieren, das Plappern abgewöhnen (übrigens wenn du die Apache Versionsnummer unterdrückst, solltest du auch daran denken, dass bestimmte Dokumente wie Readmes Changelogs, etc nicht zugänglich sind, sonst würde jemand dennoch leicht herausbekommen, welche Apache Version du einsetzt), etc. In Sachen PHP sei hier vor Allem auch "disable_functions" genannt, wo du nicht benötigte und Sicherheitskritische Funktionen (zum Beispiel die 5 Funktionen um Systemkommandos abzusetzen) einfach deaktivieren solltest. Der safe_mode von PHP ist übrigens seit PHP 5.4 entfernt worden.
Danach wäre die Applicationsecurity an der Reihe.
Als kleine Faustregel: Eine Firewall (egal welcher Art) ist nur ein Hilfsmittel um Einfallstore und Schnittstellen, die man nicht absichern kann oder nicht ausreichend abgesichert hat, zu überwachen und ggf. auf unerwartete oder erwartete Angriffe zu reagieren. Sie ist kein Allheilmittel.
mit freundlichen Grüßen,
Altrea
P.S.: Auch diese Auflistung erhebt keinen Anspruch auf Vollständigkeit und entbindet dich als Serveradministrator nicht davon, weitere Recherchen über Hardening/Härtung auszuführen
Letztendlich bist du als Serveradministrator für die Sicherheit verantwortlich und kannst für Schäden die dein Server verursacht ggf. rechtlich zur Verantwortung gezogen werden. Daher wäre die aller aller erste Frage die man sich stellen sollte: Muss ich zwingend selbst einen Webserver betreiben.