Drahtlose Netzwerke sind überall: Zu Hause, im Café und in der Firma. Im Gegensatz zu Kabelnetzen verliert der Admin bei WLANs allerdings schnell die ... (mehr)

Kochrezept Verzeichnisschutz

Das folgende Kochrezept demonstriert, wie man einzelne Verzeichnisse auf dem Webserver mit Usernamen und Passwörtern schützt, die im LDAP gespeichert sind. Statt die Benutzer umständlich in einzelnen Htpasswd-Dateien zu pflegen, lassen sich die Accounts zentral im LDAP-Server verwalten. Alle Zutaten für dieses Rezept liegen schon auf dem Tisch und sind reif für den Einsatz. Benötigt werden für das Rezept: ein Benutzer-Account für den Httpd-Server, eine Gruppe mit einem Gruppenmitglied und ein Benutzer, der Mitglied der Gruppe ist.

Geschützt werden soll in diesem Beispiel das Verzeichnis »/repositories« unmittelbar im Wurzelverzeichnis des Webservers. Der Ort ist damit – ohne weitere Veränderungen am SELinux-Kontext vornehmen zu müssen – »/var/www/html/repositories« .

Mit der Apache-Version 2.2 wurde die Art und Weise, wie LDAP verwendet wird, grundlegend geändert. Die Installation von zusätzlichen Modulen ist nicht mehr erforderlich, der Webserver bringt in der Grundinstallation bereits alles mit, was für den Einsatz von LDAP nötig ist. Grundlage des Kochrezeptes ist der »httpd« -Benutzer im LDAP-Server, der schon oben angelegt wurde.

LDAP-Module inbegriffen

Die Authentifizierung und Autorisierung am Webserver wird von zwei Modulen übernommen: Das Modul »ldap_module« stellt die LDAP-Datenstrukturen im Webserver zur Verfügung, das Modul »authnz_ldap_module« übernimmt die Authentifizierung. In der Standardkonfiguration des Webservers sind beide Module bereits installiert und aktiviert. Nach dem Anlegen des Verzeichnisses müssen Sie die Location »/repositories« auf dem Server konfigurieren und den Verzeichnisschutz aktivieren. Eine Beispieldatei in diesem Verzeichnis dient dem Test:

$ sudo mkdir /var/www/html/repositories
$ echo "Hello world" > index.html
$ sudo cp index.html /var/www/html/repositories/
$ sudo chown -R apache /var/www/html/repositories

Die vollständige Konfiguration ist in Listing 5 zu sehen. Diese Datei legen Sie im Verzeichnis »/etc/httpd/conf.d/repositories.conf« ab und starten den Webserver neu. Den Test übernimmt das Curl-Kommando:

$ curl -sL -w "%{http_code} %{url_effective}\n" http://localhost/repositories/index.html -o /dev/null
401 http://localhost/repositories/index.html

Die Ausgabe zeigt korrekterweise einen 401-Fehler an: Das Verzeichnis ist jetzt geschützt. Klappt jedoch auch die Anmeldung mit einem Benutzer und dem zugehörigen Passwort? Durch eine kleine Modifikation des Curl-Kommandos lässt sich dies leicht überprüfen:

$ curl -sL -w "%{http_code} %{url_effective}\n" -u uhabel:geheim http://localhost/repositories/index.html-o /dev/null
200 http://localhost/repositories/index.html

Voila, das Verzeichnis ist geschützt und alles funktioniert wie erwartet.

Listing 5

/etc/httpd/conf.d/repositories.conf

 

Es gibt ein paar kleine Besonderheiten bei der Webserver-Konfigurationsdatei, auf die es sich lohnt näher einzugehen. Der Einfachheit halber wurde in diesem Beispiel »ldap« verwendet, da der Zugriff ausschließlich auf den Localhost und damit über das Loopback-Interface stattfand. Für einen produktiven Einsatz von Webservern, die über das Netz auf den OpenLDAP-Server zugreifen, sollte hier SSL (»ldaps« ) eingesetzt werden. Der Verzeichnisschutz wird in diesem Beispiel über die Gruppe »vcsldap« und die Gruppenmitglieder realisiert. So lassen sich leicht verschiedene Gruppen etablieren, um unterschiedliche Bereiche des Webservers zu schützen.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019