Apache-Minikurs 2

☰ Menü

Passwortschutz für Ordner mit Digest Authenticaton verbessern

 

Die Situation (neudeutsch für: Das Problem)

 

Wie Sie bemerkt haben sollten, werden Passwörter in der Datei /var/www/.htpasswd verschlüsselt gespeichert. Wenn Sie Zugriff bspw. per SSH auf diese Datei haben, können Sie das Passwort nicht ermitteln.
Aber: Die Kombination von Nutzername und Passwort wird lediglich mit einer Base64-Codierung übermittelt. Mit Sniffing-Programmen wie z.B. Wireshark können Sie den Anmelde-String abfangen und mit Online-Dekodern übersetzen. Oder: Sie verwenden die Webtools moderner Browser. Diese starten Sie im Browser mit der Funktionstaste F12.

Merke: Base64 ist keine Verschlüsselung, sondern eine gut dokumentierte, reversible Codierung. Base64 bietet keinen Schutz!

 

Die Lösung des Problems

Zunächst müssen wir ein sicheres Verfahren für die Authentifizierung einrichten. Der Apache-Webserver unterstützt eine verschlüsselte Übertragung von Anmeldedaten über das unverschlüsselte Protokoll http. Als Verschlüsselungsverfahren wird md5 (Message-Digest Algorithm 5) genutzt. Um dieses zu nutzen zu können, müssen Sie das Apache-Modul auth_digest einbinden und anschließend den Webserver neu starten. Wie Sie bereits wissen, reicht ein Reload mit [sudo] service apache2 reload nicht, wenn Module hinzugefügt werden. Hier benötigen Sie eine Apache-Restart.

Zur Erinnerung:
Eine Liste der aktivierten Module erhalten Sie, wenn Sie den Konsolenbefehl [sudo] apache2ctl -M eintippen. Suchen Sie ein bestimmtes Modul, geben Sie bspw. [sudo] apache2ctl -M | grep auth_digest ein.

  1. Auth_Digest-Modul einbinden:
    [sudo] a2enmod auth_digest
  2. Webserver neu starten:
    [sudo] service apache2 restart

 

Was fehlt noch?

Zunächst müssen Sie Konten / Passwortepaare erzeugen. Dazu verwenden wir den Konsolenbefehl htdigest.
Außerdem muss noch die Datei .htaccess erstellt, bzw. angepasst werden, in welcher die Anmeldung und weitere Optionen einzutragen sind.

 

Aufgaben

  1. Base64-codierte Zeichenketten sind unverschlüsselt. Dekodieren Sie die folgende Anmeldung:
    QWRtaW5pc3RyYXRvcjpzIXAhcl9HIWghIW0= !
  2. Machen Sie sich mit der Syntax des Befehls htdigest vertraut. Untersuchen Sie vor allem die Bedeutung des Parameters -c!
  3. Erstellen Sie eine versteckte Passwortdatei und tragen Sie in diese Datei wenigstens zwei verschiedene Benutzer mit zugehörigem Passwort ein!
  4. Informieren Sie sich über den Aufbau der Authentifizierungsabschnitts der Datei .htaccess: httpd.apache.org/docs/2.4/mod/mod_auth_digest.html
    Schauen Sie sich insbesondere die Bedeutung der Parameter AuthType, AuthName, AuthUserFile und require an!
  5. Erstellen Sie eine eigenen Datei .htaccess! Verwenden Sie als Authentifizierungstyp Digest!
  6. Informieren Sie sich über die Sicherheit der md5-Verschlüsselung und stellen Sie die wichtigsten Merkmale stichwortartig zusammen!
  7. Erstellen Sie öffentliche und mehrere geschützte Ordner für unterschiedliche Zugangsdaten, kopieren Sie einige Dateien in die Ordner und testen die Funktionsweise Ihrer .htaccess-Konfigurationen!
  8. Dokumentieren Sie Ihre Vorgehensweise in Form einer Checkliste!

 

Mögliche Probleme

  1. Die Anmeldung klappt nicht. Apache gibt die Fehlermeldung 50x (Serverfehler) aus.
    a) Sehen Sie sich die Datei /var/log/apache2/error_log an!
    b) Prüfen Sie insbesondere die Pfadangabe der Passwortdatei!
    c) Stimmen die Angaben für den Namen (Realm) in der Datei .htaccess und dem Befehle htdigest überein? Achten Sie auch auf Groß- und Kleinschreibung!
    d) Enthält der Wert für das realm-Attribut Leerzeichen, so muss diser mit Anführungszeichen umschlossen sein.
    Beispiel: htdigest .htdigest "My home is my castle" arthur

 

Hilfen und Materialien

 

 Zu guter Letzt:
Diesen Apache-Minikurs zum Mitnehmen gibt's im Fundus zum Download .

 

W. Hermanns, © 2018