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.

Konfigurationsdateien des Apache. Auszug aus der apache2.conf

/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.

Die Datei 'ports.conf' muss nicht angepasst werden.

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.

Dateien im Verzeichnis 'mods-enabled'

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.

Dateien im Verzeichnis 'mods-enabled'

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.