Sie sind auf Seite 1von 3

Webserver/htaccess/Passwortschutz – SELFHT... https://wiki.selfhtml.org/wiki/Webserver/htacces...

Webserver/htaccess/Passwortschutz – SELFHTML-Wiki

Informationen zu diesem Text

Lesedauer
30min
Schwierigkeitsgrad
mittel
Vorausgesetztes Wissen
Grundkenntnisse in
● Webserver

Eine der häufigsten Verwendungen von .htaccess ist die Einrichtung eines Passwortschutzes, sodass bestimmte Seiten oder Inhalte
nur nach Eingabe eines Passworts aufgerufen werden können und für andere Nutzer und auch für Suchmaschinen verborgen
bleiben.

Dies können im Aufbau befindliche, noch nicht vorzeigbare Seiten oder interne Mitgliederbereiche wie ein Vertretungsplan nur für
das Lehrerkollegium sein.

Verzeichnisse und Dateien mit Passwort schützen/wiki/Webserver/htaccess


/Passwortschutz#Verzeichnisse_und_Dateien_mit_Passwort_sch.C3.BCtzen[Bearbeiten]
Speichern Sie in dem Verzeichnis, das Sie schützen wollen, eine .htaccess-Datei.

.htaccess-Datei für Passwortschutz


# .htaccess-Datei für Passwortschutz
AuthType Basic
AuthName "Geschützter Bereich - Bitte geben Sie ein Passwort ein!"
AuthUserFile /Individueller/Pfad/.htpasswd
Require valid-user

Um einen Passwortschutz einzurichten, brauchen Sie die Anweisungen AuthType, AuthName, AuthUserFile, und wenn Sie mit
Benutzergruppen arbeiten, auch AuthGroupFile. Ferner benötigen Sie, wenn Sie den Zugriff auf bestimmte Benutzer oder Gruppen
aus diesen Dateien festlegen (also einschränken) wollen, eine oder mehrere Angaben der Anweisung Require.

AuthType bezeichnet die Art der Authentifizierung.


Basic: sogenannte HTTP Basic Authentication (einfache Authentifizierung über HTTP). Dabei stehen die
Benutzernamen und die zugehörigen Passwörter in einer noch anzugebenden Datei. Diese Methode verlangt aber, dass
das Passwort unverschlüsselt vom Browser an den Webserver übermittelt wird. Sie ist daher nicht wirklich sicher.
Digest: Dabei werden Passwörter bereits in verschlüsselter Form abgefordert, allerdings beherrschen das nicht alle
Browser. Sie müssen daher entscheiden, was für Sie Vorrang hat: höhere Sicherheit oder die Berücksichtigung der
Browser und Clients, die nur die einfache Authentifizierung unterstützen.
AuthUserFile: gibt die Datei an, in der die Namen der autorisierten Benutzer und ihre Passwörter stehen. Es sollte der
vollständige absolute Pfadname angegeben werden.
Require: Legt mit einem zweiten Schlüsselwort fest, für welche Benutzer, bzw. Benutzergruppen das Passwort gelten soll.
Hinter diesem Schlüsselwort können ein oder mehrere Namen von Benutzern oder Benutzergruppen folgen. Alternativ
können Sie auch das Schlüsselwort valid-user benutzen, um alle Benutzer zuzulassen, falls die Liste sonst zu lang werden
würde.
user: gefolgt von einer Liste der Benutzer
group: gefolgt vom Namen der Gruppe

.htpasswd Datei erstellen/wiki/Webserver/htaccess


/Passwortschutz#.htpasswd_Datei_erstellen[Bearbeiten]

Damit der Verzeichnisschutz mit Passwort funktioniert, genügt die .htaccess-Datei alleine allerdings nicht. Sie brauchen zusätzlich
eine Text-Datei, in der (der Benutzername und) das zugehörige Passwort steht.

.htpasswd-Datei

# Passwort-Datei
name:$2y$05$MQ7RdCCRrKmBEDD/u4pks.9qAV8RCKy4YCP2pzgmc4lppfli41zC

Achtung!

Theoretisch können Sie Passwörter im Klartext notieren. Da sie so aber auch von Fremden ausgelesen werden können, sollten Sie
sie immer verschlüsseln. Dabei sollten Sie folgendes berücksichtigen:

Verzichten Sie dabei auf die veraltete MD5-Verschlüsselung.


Benutzernamen dürfen nicht länger als 255 Bytes sein und weder den Punkt noch den Doppelpunkt als Zeichen enthalten.
Da der Apache Webserver Kommentare in den Passwortdateien unterstützt, ist es - obwohl mit htpasswd möglich - keine
gute Idee, das Raute-Zeichen ("#") im Benutzernamen zu verwenden. Der Benutzer kann sich dann ganz einfach nicht
anmelden.
Unter Windows werden Passwörter, die länger als 255 Bytes sind auf 255 Bytes gekürzt. Beachten Sie, dass deutsche

1 von 3 03.10.20, 01:37


Webserver/htaccess/Passwortschutz – SELFHT... https://wiki.selfhtml.org/wiki/Webserver/htacces...

Umlaute unter UTF-8 zwei Bytes benötigen.

Wenn nicht ausdrücklich vom Provider bzw. Webmaster anders bestimmt, sollten Sie außerdem für die Datei einen Namen wählen,
der mit .ht beginnt, üblicherweise eben .htusers oder .htpasswd. In der Konfiguration des Apache-Servers sind solche Dateinamen
als Grundeinstellung vorgegeben und werden, wie oben bereits erläutert, aufgrund des vorangestellten Punktes nicht zur Ansicht
freigegeben, bleiben also vor Besuchern verborgen.

Zusammen mit dem Apache wird ein kleines Hilfsprogramm ausgeliefert, das die Erstellung solcher Passwortdateien vereinfacht.
Es heißt htpasswd (unter Windows: htpasswd.exe) und ist über die Konsole (Eingabeaufforderung) zu bedienen. Rufen Sie es
einfach mit dem Befehl htpasswd -h auf, um eine kurze Hilfe zu seiner Verwendung zu erhalten. Im einfachsten Fall geben Sie zum
Beispiel
htpasswd -c .htusers smuenz

oder, falls Sie einen Apache 2.4 oder neuer haben, sehr viel besser:
htpasswd -c -B .htusers smuenz

ein. Sie müssen für den neuen Benutzer smuenz ein Passwort angeben und bestätigen. Diese Passwortdatei können Sie dann in das
vorgesehene Verzeichnis verschieben oder hochladen.

Bitte beachten Sie hinsichtlich der Option "-c": Es wird eine neue Passwortdatei angelegt! Wenn Sie das nicht wollen, weil das
bestehende Einträge löscht, dann lassen Sie das "-c" weg, die Einträge werden dann angehängt oder ersetzt.)

Beispiel: Passwortschutz für mehrere Benutzer/wiki/Webserver/htaccess


/Passwortschutz#Beispiel:_Passwortschutz_f.C3.BCr_mehrere_Benutzer[Bearbeiten]

Sie können wahlweise das ganze Verzeichnis mit all seinen Unterverzeichnissen oder nur bestimmte Dateien oder Dateitypen
schützen. Sie können den Passwortschutz außerdem wahlweise für einzelne Benutzer oder für ganze Benutzergruppen einrichten.
Auch Kombinationen beider Formen sind möglich.

.htaccess-Datei/wiki/Webserver/htaccess/Passwortschutz#.htaccess-Datei[Bearbeiten]

.htaccess-Datei für mehrere Benutzer


# .htaccess-Datei für Web-Verzeichnis /service
AuthType Basic
AuthName "Service-Bereich"
AuthUserFile /usr/verwaltung/web/.htusers
AuthGroupFile /usr/verwaltung/web/.htgroups
Require user Werner Dieter Heidi
Require group Servicetechniker

Damit der Verzeichnisschutz mit Passwort funktioniert, genügt die .htaccess-Datei alleine allerdings nicht. Sie brauchen zusätzlich
eine Datei, in der die Benutzernamen und die zugehörigen Passwörter stehen. Falls Sie mit Benutzergruppen arbeiten, benötigen
Sie außerdem noch eine Datei, in der die Benutzergruppen definiert werden.

Benutzerdatei/wiki/Webserver/htaccess/Passwortschutz#Benutzerdatei[Bearbeiten]

Im obigen Beispiel werden die drei Benutzer Werner, Dieter, Heidi sowie alle Benutzer der Gruppe Servicetechniker angegeben.
Damit der Passwortschutz funktioniert, müssen nun die angegebenen Dateien mit den Benutzernamen und (falls benötigt) den
Gruppen angelegt werden:

.htusers-Datei
# BenutzerDatei für Web-Projekt
Werner:$2y$05$MQ7RdCCRrKmBEDD/u4pks.9qAV8RCKy4YCP2pzgmc4lppfli41zC
Dieter:{SHA}i8xKRW2XJbkGN4UbpkXBfVjSKXs=
Heidi:$apr1$.P2k7JQX$dBcOPzzpEcQYcR0ZGw24Q0

Jede Zeile der Benutzerdatei enthält einen Benutzernamen, und gleich dahinter, durch einen Doppelpunkt getrennt, das "gehashte"
(eine Art "Einwegverschlüsselung") Passwort.

Der erste Eintrag (Werner) wurde - das setzt einen Apache 2.4 voraus - mit dem Befehl htpasswd -B .htusers Werner
erzeugt. Als Passwort wurde "hallo" verwendet.
Der zweite Eintrag (Dieter) wurde - das setzt einen Apache 2.0 voraus - mit dem Befehl htpasswd -s .htusers Dieter
erzeugt. Als Passwort wurde "hallo" verwendet.
Der dritte Eintrag (Heidi) wurde - mit htpasswd .htuser Heidi erzeugt. Als Passwort wurde "hallo" verwendet.

Beachten Sie: Die dritte (es handelt sich um den veralteten MD5-Algorithmus mit einem zusätzlichen 32-Bit-Salt) und die zweite
Methode (sha1, ohne Salt) gelten beide als unsicher, wobei sha1 die schlechteste der vorgestellten Varianten ist! Wenn Sie mehr
über die Hashfunktionen wissen wollen, dann lesen Sie in der Dokumentation des Apache 2.4. oder Apache 2.2. nach. Wenn die
Passwörter durch ein PHP-Skript (ab PHP 5.5!) erzeugt werden sollen, dann sehen Sie sich die Funktion password_hash und das
Manual an.

Gruppendatei/wiki/Webserver/htaccess/Passwortschutz#Gruppendatei[Bearbeiten]

Gruppendateien bestehen aus Einträgen, bei denen zunächst ein Gruppenname notiert wird und dahinter, nach einem Doppelpunkt,

2 von 3 03.10.20, 01:37


Webserver/htaccess/Passwortschutz – SELFHT... https://wiki.selfhtml.org/wiki/Webserver/htacces...

die Namen von Benutzern, die zu dieser Gruppe gehören. Es müssen Benutzernamen sein, für die in der Benutzerdatei ein Eintrag
angelegt wurde.

.htgroups-Datei

# GruppenDatei für Web-Projekt


Servicetechniker: Andreas Karin Janine

Die Gruppendatei wird im Beispiel nur benötigt, weil in der .htaccess-Datei mit authGroupFile eine Benutzergruppe angegeben
wurde; die Gruppendatei wird ausschließlich dann erforderlich, wenn Sie Gruppennamen benutzen. In einem Intranet ist auch eine
Benutzerdatei nicht zwingend erforderlich, da Sie Zugriffserlaubnisse und -verbote über die Zulassung bzw. den Ausschluss der
internen IP-Adresse regeln können.

Effekt:

Alle Besucher des Web-Projekts, die nun versuchen, auf das Verzeichnis mit der .htaccess-Datei zuzugreifen, bekommen von ihrem
Browser einen Dialog angeboten, in dem sie Benutzernamen und Passwort eingeben müssen. Nur Besucher, die sich mit einer
gültigen Kombination aus Benutzernamen und Passwort anmelden, haben Zugriff auf das Verzeichnis.

Beispiel: Schutz für bestimmte Dateitypen/wiki/Webserver/htaccess


/Passwortschutz#Beispiel:_Schutz_f.C3.BCr_bestimmte_Dateitypen[Bearbeiten]

So wie im obigen Beispiel gezeigt, gilt der Zugangsschutz für das Verzeichnis, in dem die .htaccess-Datei liegt, und für alle
Verzeichnisse unterhalb davon. Sie können den Schutz aber auch auf bestimmte Dateien, Dateitypen oder Zugriffsmethoden
einschränken.

.htaccess-Datei für Web-Verzeichnis

# .htaccess-Datei für Web-Verzeichnis /service

AuthType Basic
AuthName "Service-Bereich"
AuthUserFile /usr/verwaltung/web/.htusers
AuthGroupFile /usr/verwaltung/web/.htgroups

<Files *.htm>
Require user Werner Dieter Heidi
Require group Servicetechniker
</Files>

Um den Schutz einzuschränken, benutzen Sie ähnlich wie in HTML oder XML Tags mit spitzen Klammern. Im einleitenden Tag
kann hinter der öffnenden spitzen Klammer entweder Files stehen, wie im obigen Beispiel. Dahinter können Sie genau eine
einschränkende Angabe machen. Mit *.htm wie im Beispiel beschränken Sie den Schutz auf HTML-Dateien. Mit einer Angabe wie
geheim.htm würde nur diese eine Datei geschützt. Anstelle von Files können Sie auch FilesMatch einsetzen. Dann sind Reguläre
Ausdrücke möglich. Beispielsweise würden Sie mit <FilesMatch "\.(htm|php)$"> alle HTML-Dokumente und alle PHP-Scripts
erfassen.

Eine weitere Möglichkeit besteht darin, anstelle von Files die Anweisung Limit, oder besser noch LimitExcept anzuwenden. Sie
hat Auswirkungen auf HTTP-Methoden wie GET, POST, PUT, DELETE, CONNECT, OPTIONS usw. Mit <LimitExcept GET>
können Sie für alle Zugriffsmethoden Bedingungen formulieren, mit Ausnahme von GET - und mit Mit <LimitExcept POST>
würden Sie für alle Zugriffsmethoden mit Ausnahme von POST Zugriffsbedingungen formulieren können.

Beachten Sie: Falls es bei Ihnen einfach nicht mit dem Schützen von Verzeichnissen klappen will, dann könnte der Grund darin
liegen, dass in der zentralen Konfiguration des Apache Webservers beim Eintrag AllowOverride der Wert None gewählt wurde.

Fazit/wiki/Webserver/htaccess/Passwortschutz#Fazit[Bearbeiten]
Schutzmechanismen, die Sie mit Hilfe von .htaccess-Dateien erstellen, sind auf HTTP-Ebene wesentlich sicherer als solche, die mit
Hilfe von CGI-Scripts oder gar mit Hilfe von JavaScript erstellt werden. Dennoch sollten Sie beachten, dass .htaccess keinen
Generalschutz bietet. Der Schutz gilt nur, wenn Web-Browser oder andere Web-Clients über den Webserver geschützte Daten
anfordern. Er gilt nicht, wenn der Zugriff z.B. mit einem anderen Internet-Protokoll wie FTP erfolgt.

Problematisch ist bei diesem, HTTP-Authentication genannten Verfahren allerdings, dass es keine standardisierte Methode zum
Ausloggen gibt. Der Browser speichert die Zugangsdaten bis zum Ende der Sitzung und vergisst sie erst, wenn das Programm
geschlossen wird. Mittlerweile bieten alle gängigen Browser an, die Zugangsdaten dauerhaft zu speichern, was die Problematik mit
dem Ausloggen nicht gerade vereinfacht.

Hier wäre der Einsatz eines Login-Systems flexibler und sicherer.

3 von 3 03.10.20, 01:37

Das könnte Ihnen auch gefallen