Zugriffskontrolle für den Apache-Webserver

Abgesperrt

Vom der einfachen dateibasierten Zugangskontrolle bis zur Anbindung an LDAP bietet Apache eine Menge Möglichkeiten zur Authentifizierung. Genügen die nicht, lassen sich in Perl oder Python leicht eigene Module dafür schreiben.

Man muss keine Riesen-Site wie Myspace betreiben, um in die Lage zu kommen, einen Login-Zugang zu einer Website einrichten zu müssen. Der Apache-Server bietet dafür eine Reihe von Alternativen. Obwohl diese Funktionalität ein paar Konfigurationsschritte erfordert, lassen sich Websites ohne zusätzliche proprietäre Module schützen. Dieser Artikel beschreibt die verschiedenen Möglichkeiten, die es gibt.

Apache-Phasen

Der Apache-Server durchläuft drei Phasen, um festzustellen, ob ein Benutzer die angeforderte Seite sehen darf. In der Access-Phase überprüft er, ob die IP-Adresse, von der die Anfrage stammt, berechtigt ist. In der Authentication-Phase überprüft Apache, ob der Username und das Passwort zusammengehören. Die Authorization-Phase lässt sich zum Beispiel dazu verwenden, über Benutzergruppen die Administration zu vereinfachen. Wie dieser Artikel zeigt, lässt sich jede Phase mit etwas eigenem Code für beinahe beliebige Zwecke verwenden.

Denken Sie aber daran, dass alle diese Methoden das Passwort im Klartext über die Leitung schicken, wenn die Verbindung nicht mit SSL verschlüsselt ist. Der Einsatz von SSL sei deshalb mit Nachdruck ans Herz gelegt. Alle aufgeführten Beispiele wurden mit Apache 2.2.8 getestet. Bei früheren Versionen können wichtige Features eventuell fehlen.

Datei-basiert

Die dateibasierte Authentifizierung, im Apache-Jargon auch als Basic Auth oder Htpasswd Auth bekannt, ist die meist verwendete Technik, Seiten über ein User-Login abzusichern. Wenn Sie zum Beispiel den Admin-Bereich einer Seite vor Neugierigen verstecken möchten, fügen Sie einfach den Code aus Listing 1 in die Apache-Konfiguration ein.

Listing 1

Htpasswd-Sicherheit

 

Je nach eingesetzter Distribution befindet sich die Apache-Konfiguration an anderer Stelle und ist auch unterschiedlich in einzelne Dateien aufgeteilt. Auf Red Hat/Fedora ist es »/etc/httpd/conf/httpd.conf« , bei Ubuntu »/etc/apache2/apache2.conf« . Beachten Sie, dass sie bei Apache 2 die Direktive »AuthBasicProvider« weglassen müssen.

Nachdem der »AuthType« in Listing 1 auf »Basic« gesetzt ist, vergibt die folgende Zeile einen Namen, sodass die Benutzer wissen, wo sie sich überhaupt einloggen. Schließlich muss Apache den Ort der Passwort-Datei erfahren (Zeile 4). Der letzte Schritt ist die Require-Zeile, die Apache anweist, jeden authentifizierten Benutzer hereinzulassen.

Die Apache-Distribution bringt ein Programm namens »htpasswd« (bei Apache 2 häufig auch »htpasswd2« ) mit, das beim Anlegen und Verwalten der speziellen Passwort-Datei hilft. Zu Beginn legen Sie die Datei so an:

 

Wollen Sie zur existierenden Datei neue Benutzer hinzufügen oder Passwörter ändern, verwenden Sie das gleiche Programm, aber mit der Option »-c« . Wenn Sie einen Benutzer entfernen wollen, editieren Sie die Datei entweder von Hand oder Sie verwenden »htpasswd« mit der Option »-D« .

Sie können Basic Auth (wie auch die weiter unten vorgestellten Methoden) mit Apache-Direktiven wie »Directory« , »DirectoryMatch« , »LocationMatch« und »FilesMatch« verwenden. Zum Beispiel sichert der Code in Listing 2 alle PDF-Dateien einer Site ab.

Listing 2

Htpasswd und <C>FilesMatch<C>

 

Statt allen Benutzern in einer Passwort-Datei den Zugang zu gewähren, können Sie ihn auch auf einzelne Anwender beschränken. Das Konfigurationsfragment in Listing 3 erlaubt nur »steve« und »bob« den Zugang zum Verzeichnis »/admin« , während alle anderen authentifizierten Benutzer auf »/content« zugreifen dürfen. Wie man sieht, folgen dem Eintrag »user« die erlaubten Benutzernamen, durch Leerzeichen getrennt.

Listing 3

Userspezifischer Zugang

 

Ein anderes praktisches Feature ist, ganzen Gruppen statt einzelner User den Zugang zu erlauben. Dazu muss eine Gruppendatei existieren. Listing 4 zeigt ein Beispiel.

Listing 4

Working with Groups

 

Die Group-Datei ist sehr einfach aufgebaut:

 

Für das obige Beispiel würde darin also einfach stehen: »admin: steve bob« . Jede Group-Datei darf beliebig viele Gruppen enthalten, immer eine pro Zeile. Gruppen sind ein guter Weg, die Konfiguration klar zu strukturieren und damit einfacher lesbar zu machen. Denken Sie daran, die Htpasswd- und die Group-Datei außerhalb des Apache-Documentroot zu platzieren, damit niemand sie einfach herunterladen kann.

comments powered by Disqus

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite