3.2.4 Die Verzeichnisstruktur des Apache2
Die Verzeichnisstruktur ist auf jedem Betriebssystem etwas anders, jedoch ist der prinzipielle Aufbau gleich.
Die Hauptkonfigurationsdatei befindet sich in Linux-Systemen im Verzeichnis /etc/apache2
und heißt oftmals apache2.conf
.
In dieser Datei kann man normalerweise auch erkennen, wo sich die weiteren Konfigurationsdateien befinden (siehe Abbildung). Die Struktur ist für erfahrene Betreiber von Webservern gut, für "Anfänger" jedoch unübersichtlich. Dabei gibt es zwei Probleme:
- Durch die Unübersichtlichkeit entstehen oft Sicherheitslücken, da unbedacht zu viele Module und deren Konfigurationen eingebunden werden.
- Konfigurationsanweisungen können sich gegenseitig überschreiben. In der Regel gilt die zuletzt geladene Anweisung (Direktive). Dies kann jedoch eine Direktive sein, die irgendwo in irgendeiner Konfigurationsdatei steht. Daher sollten die Konfigurationen der Module in eigenen Dateien erfolgen, um zumindest ansatzweise eine Struktur abzubilden.
Die Aufgabe ist also, dass man möglichst viele Module ausschaltet und die zugehörigen Konfigurationsdateien genau analysiert.
/etc/apache2
Im Verzeichnis /etc/apache2
gibt es die Hauptkonfigurationsdatei apache2.conf
und eine Datei ports.conf
, in der die Standardports festgelegt werden. Dies sind Port 80 für HTTP und Port 443 für die gesicherte Verbindung HTTPS. In der Abbildung sieht man eine kleine Konfigurationsdatei.
mods-enabled
Es gibt ein Unterverzeichnis mods-enabled
, in dem alle eingeschalteten Module mit ihren Konfigurationsdateien vorhanden sind. Die Module selbst werden über die .load
-Dateien geladen. Zu vielen Modulen gibt es entsprechende Konfigurationsdateien .conf
.
Nun sollte man für jedes Modul prüfen, ob dieses wirklich benötigt wird.
Das Modul negotiation.conf wird beispielsweise nicht benötigt. Entsprechend können die Einträge negotiation.load
und negotiation.conf
gelöscht werden. Alle Einträge in dem Verzeichnis mods-enabled
sind nur Verweise (Softlinks) auf die Dateien im Verzeichnis mods-available
. Somit können die Links gefahrlos gelöscht und bei Bedarf wieder hergestellt werden.
Aufgabe
Schauen Sie nach, wie viele Module im Verzeichnis mods-available
auf Ihrem Server prinzipiell zur Verfügung stehen. Sie werden staunen, wie viele es sind.
conf-enabled
Es gibt ein Unterverzeichnis conf-enabled
, aus dem weitere Konfigurationsdateien geladen werden.
Hierin gibt es beispielsweise die Datei security.conf
, die sehr sinnvoll ist, doch in den Default-Einstellungen die Sicherheit nahezu komplett ausgeschaltet hat.
Aufgabe
Ändern Sie die Einstellungen in der Datei security.conf
so, dass alle dort beschriebenen Einstellungen auf dem bestmöglichen, angegebenen Sicherheitsniveau stehen. Ihr Server wird danach trotzdem wie gewohnt laufen. Nach der Änderung in der Datei bitte nicht vergessen, den Server mit systemctl reload apache2
neu zu starten.
sites-enabled
Der Apache Webserver eignet sich sehr gut, um viele verschiedene Websites mit unterschiedlichen Anforderungen auf einem Webserver zu betreiben. Wenn man verschiedene Websites hat, dann ist es sinnvoll, die speziellen Konfigurationen im Unterverzeichnis sites-enabled
abzulegen. In diesem Unterverzeichnis gibt es nur einen Link auf eine Datei in einem Verzeichnis sites-available
. Wir werden an späterer Stelle auf diese Datei noch genauer eingehen, da wir hier nur mit einer Site arbeiten werden.
Wichtig
Sicherheitshinweis: Man kann schnell einen Apache-Webserver zu Testzwecken in einem lokalen Netzwerk (ohne Verbindung nach außen) einrichten, da die Standardeinstellungen automatisch dafür sorgen, dass der Apache läuft.
Einen Webserver sicher und sauber zu konfigurieren, bedarf der drei Faktoren "Wissen", "Planung" und "Zeit". Der Webserver ist schließlich immer ein potentielles Angriffsziel, da er eine Verbindung zu dem inneren Netzwerk herstellt. Dies gilt für alle Systeme, also auch für embedded computers, Router, NAS etc.