Skip Navigation

Zugriffsbeschränkung für Webserver

Auf dieser Seite möchten wir Ihnen zeigen, wie Sie Verzeichnisse, die über einen Apache Webserver zugänglich sind, mit einem Passwort schützen, so dass nur bestimmte Benutzer oder Benutzergruppen darauf Zugriff haben. Sie benötigen dafür einen Editor und einen SSH-Client.

Bitte lesen Sie die Abschnitte Allgemeine Hinweise zum Passwortschutz von Verzeichnissen, Vorbereitungen durch den Administrator und anschließend die Beschreibung zu einem der Authentisierungsmodule. Für weniger erfahrene Benutzer empfehlen wir Authentisierung mittels „mod_auth“. Bitte beachten Sie unbedingt auch den Abschnitt Sicherheitshinweise.

Allgemeine Hinweise zum Passwortschutz von Verzeichnissen

Die Funktionsweise der hier beschriebenen Authentisierungen – mit Ausnahme von „mod_auth_anon“ – beruht auf zwei Komponenten. Einerseits einer Datei mit Namen .htaccess (Bitte beachten Sie den Punkt vor dem „h“), die in dem zu schützenden Verzeichnis abgelegt wird. In dieser Datei wird spezifiziert, dass für das Verzeichnis (und alle Unterverzeichnisse) eine benutzerbasierte Zugriffsbeschränkung bestehend aus Benutzername und Passwort gilt. .htaccess bestimmt, welche Art der Authentisierung erfolgen soll, in welcher Datenbank Benutzer/Benutzergruppen und Passwörter zu finden sind und welche Benutzer oder Benutzergruppen Zugriff haben.

Andererseits wird eine Datenbank benötigt, die Benutzer- und evtl. Gruppennamen und Passwörter enthält. Der Webserver kann über verschiedene Module bei der Authentisierung auf unterschiedliche Datenbanken zugreifen. Die folgenden Erklärungen („Passwortschutz mit ...“) beziehen sich jeweils auf ein Authentisierungsmodul.

Hinweis: Sollten Sie Administratoren-Rechte für den Webserver haben, können Sie die Angaben der .htaccess Datei auch in der Server-Konfiguration (normalerweise der Datei httpd.conf) ablegen. Betten Sie dazu die Direktiven, die nachfolgend für .htaccess Dateien aufgeführt werden, in einen entsprechenden <Directory>...</Directory> Block ein. Die Apache Dokumentation spricht sich für Benutzer mit Administratoren Rechten gegen die Verwendung von .htaccess Dateien aus.

Vorbereitungen durch den Administrator

Um einen Passwortschutz mit Hilfe einer .htaccess Datei überhaupt zu ermöglichen, muss der Administrator des Webservers dies für das entsprechende Verzeichnis zulassen. Dies geschieht in der Konfigurationsdatei des Webservers mit folgendem Eintrag:

<Directory /home/server/www/schutz/>
    AllowOverride AuthConfig
</Directory>

Anstelle des orange gesetzten Eintrags muss das Verzeichnis stehen, für das der Passwortschutz realisiert werden soll. Bitte beachten Sie, dass mit dieser Anweisung auch die Verwendung von .htaccess Dateien zur Authentisierung in allen Unterverzeichnissen gestattet. Weitere Hinweise in englischer Sprache finden Sie in der Apache Dokumentation.

Sollten Sie nicht über die Rechte zur Änderung der allgemeinen Webserver-Konfiguration verfügen, bitten Sie den entsprechenden Administrator dies für Sie einzurichten.

Passwortschutz mit „mod_auth“

Dieses Modul verwendet einfache ASCII-Dateien, sog. flat files als Datenbanken.

Erstellen Sie die Datei .htaccess mit Hilfe eines Editors und kopieren Sie diese in /home/server/www/schutz. Die Datei .htaccess sollte folgende Einträge enthalten:

AuthName Bereich
AuthType Basic
AuthUserFile /home/server/auth/schutz.user
AuthGroupFile /home/server/auth/schutz.group

require Variante

Die orange gesetzten Einträge müssen Sie entsprechend anpassen:

Damit ist die Einrichtung des Passwortschutzes abgeschlossen und Sie werden beim nächsten Zugriff auf das Verzeichnis von Ihrem Browser mit einem entsprechenden Authentifizierungsdialog konfrontiert.

Weitere Infomationen zu „mod_auth“ finden Sie auf der Website des Apache Servers.

Passwortschutz mit „mod_auth_pgsql“

Dieses Modul verwendet eine PostgreSQL-Datenbank zur Authentisierung. Auch bestehende Datenbanken können für die Authentisierung genutzt werden. Sind nur wenige Benutzer/Gruppen zu verwalten, dürfte der Aufwand der Erstellung einer solchen Datenbank nicht lohnen. Bei vielen Benutzern/Gruppen macht sich die Verwendung einer SQL-Datenbank jedoch schnell bezahlt.

Hinweis: Dieses Modul ist nicht Teil der Apache Distribution. Sie können es über die entsprechende Website beziehen. Das Modul muss vor der Verwendung jedoch zunächst vom Administrator in den Webserver eingebunden werden.

Legen Sie in Ihrer Datenbank authdb die Tabellen users und groups an. Beide Tabellen müssen mindestens zwei Spalten enthalten, die Benutzernamen und Passwörter resp. Benutzernamen und Gruppen zuordnen. Eine typische Tabelle könnte wie folgt aussehen:

                  Table "users"
  Attribute  |          Type          | Modifier 
-------------+------------------------+----------
 user        | character varying(30)  | not null
 passwort    | character varying(30)  | not null
Index: users_pkey


                  Table "groups"
  Attribute  |          Type          | Modifier 
-------------+------------------------+----------
 user        | character varying(30)  | not null
 group       | character varying(30)  | not null
Index: groups_pkey

Tragen Sie in diese Tabellen Ihre Benutzer und Benutzergruppen ein. Die Passwörter sollten mit der UNIX crypt() Funktion verschlüsselt sein. Verschlüsselte Passwörter erhalten Sie beispielsweise mit Hilfe des Programms htpasswd, das im Abschnitt Passwortschutz mit „mod_auth“ beschrieben ist. Im nachfolgenden Beispiel existieren die Benutzer admin, webmaster und otto_normal. Die beiden erstgenannten sind Mitglieder der Gruppen admin und users, während otto_normal nur Mitglied der Gruppe users ist.

     user     |   passwort
--------------+----------------
 admin        | P8S2WLYadAjrS
 webmaster    | XYS4Pcasc53Dd
 otto_normal  | 2OLcT7UOubxdx
(3 rows)


     user     |    group
--------------+----------------
 admin        | admin
 admin        | users
 webmaster    | admin
 webmaster    | users
 otto_normal  | users
(5 rows)

Legen Sie nun eine .htaccess Datei in /home/server/www/schutz/ an, das folgende Direktiven enthält (Einzelheiten zur .htaccess Datei finden Sie im Abschnitt Passwortschutz mit „mod_auth“):

AuthName Bereich
AuthType Basic
Auth_PG_host localhost
Auth_PG_database authdb
Auth_PG_user myname
Auth_PG_pwd mypass
Auth_PG_pwd_table users
Auth_PG_grp_table groups
Auth_PG_uid_field user
Auth_PG_pwd_field passwort
Auth_PG_gid_field group
Auth_PG_authoritative on
Auth_PG_encrypted on

require Variante

Die orange gesetzten Einträge müssen Sie u.U. entsprechend anpassen:

„mod_auth_pgsql“ unterstützt noch einige weitere Direktiven. Diese und zusätzliche Informationen erfahren Sie auf der Homepage des Moduls.

Passwortschutz mit „mod_auth_mysql“

Hinweis: Dieses Modul ist nicht Teil der Apache Distribution. Sie können es über den entsprechenden FTP-Server beziehen. Das Modul muss vor der Verwendung jedoch zunächst vom Administrator in den Webserver eingebunden werden.

„mod_auth_mysql“ erlaubt die Authentisierung gegen eine MySQL Datenbank. Um eine solche Authetisierung einzurichten, folgen Sie den Beschreibungen unter Passwortschutz mit „mod_auth_pgsql“. Die Konfiguration erfolgt analog zu diesem Modul. Lediglich die Direktiven in der Datei .htaccess lauten anders. Die im vorherigen Abschnitt gezeigte Konfiguration erforderte für „mod_auth_mysql“ folgende .htaccess Datei:

AuthName Bereich
AuthType Basic
AuthMySQLHost localhost
AuthMySQLDB authdb
AuthMySQLUser myname
AuthMySQLPassword mypass
AuthMySQLUserTable users
AuthMySQLGroupTable groups
AuthMySQLNameField user
AuthMySQLPasswordField passwort
AuthMySQLGroupField group
AuthMySQLAuthoritative on
AuthMySQLCryptedPasswords on
AuthMySQLKeepAlive off

require Variante

Weitere Infomationen zu „mod_auth_mysql“ finden Sie im Source Code des Moduls und den entsprechenden Begleittexten unter ftp://ftp.kciLink.com/pub/.

Passwortschutz mit „mod_auth_anon“

„mod_auth_anon“ bietet eine zu anderen Authentisierungsmodulen wesentlich unterschiedene Zugriffsfunktion. Der Zugang kann mit einem nahezu beliebigen Passwort erfolgen, welches jedoch protokolliert werden kann.

Für dieses Modul benötigen Sie dementsprechend auch keine Datenbank; die Datei .htaccess im entsprechenden Verzeichnis ist ausreichend. Informationen zur Erstellung der Datei .htaccess finden sie im Abschnitt Passwortschutz mit „mod_auth“.

Neben den Direktiven AuthName und AuthType (wiederum Basic) können die nachfolgend aufgeführten Direktiven verwendet werden. require Direktiven werden nicht beachtet und können weggelassen werden.

AuthName Bereich
Anonymous Benutzername
Anonymous_NoUserID Off
Anonymous_MustGiveEmail On
Anonymous_VerifyEmail On
Anonymous_LogEmail On
AuthType Basic

Die orange gesetzten Einträge müssen Sie u.U. entsprechend anpassen:

Zusätzliche Informationen zu „mod_auth_anon“ erfahren Sie auf der Homepage des Moduls.

Hinweis: Dieses Modul ist nicht Teil der Apache Distribution. Sie können es über den entsprechenden FTP-Server beziehen. Das Modul muss vor der Verwendung jedoch zunächst vom Administrator in den Webserver eingebunden werden.

Dieses Modul führt keine Authentisierung im eigentlichen Sinne durch. Es arbeitet vielmehr mit anderen Authentisierungsmodulen zusammen. „mod_auth_cookie“ prüft, ob ein angegebener Cookie vorhanden ist. Ist dies nicht der Fall, wird die Authentisierung an ein anderes Modul weitergereicht. Kann der benannte Cookie jedoch ausgelesen werden, ermittelt „mod_auth_cookie“ aus dem Wert Benutzername und Passwort und übergibt sie an das zuständige Authentisierungsmodul genauso, als hätte der Benutzer die Angaben im Authentisierungsdialog selbst eingegeben. Dem Besitzer eines entsprechenden Cookies kann daher der Authentisierungsdialog erspart werden.

Richten Sie zunächst eine Authentisierung unter Verwendung eines der hier beschriebenen Module ein und prüfen Sie, ob diese funktioniert. Anschließend modifizieren Sie die Datei .htaccess, indem Sie zwischen die Direktiven des entsprechenden Moduls und der Zeile beginnend mit require eine weitere Direktive einfügen:

AuthCookieName authcookie

Beim Zugriff auf das Verzeichnis, in dem sich diese .htaccess-Datei befindet, wird dem Benutzer kein Authentisierungsdialog präsentiert, wenn er einen Cookie mit Namen authcookie besitzt, aus dessen Wert Benutzername und Passwort korrekt hervorgehen. In allen anderen Fällen erfolgt ein gewöhnliche Authentisierungung.

Den Cookie selbst können Sie beispielweise mit Hilfe eines Formulars setzen (Perl, PHP, Ruby, JavaScript etc.). Der Wert muss das Format Benutzername:Passwort besitzen.

Hinweis: Zusätzlich zur Sicherheitsproblematik beim Authentisierungsverfahren Basic (siehe Sicherheitshinweise), liegt bei der Verwendung von „mod_auth_cookie“ eine weitere Sicherheitsschwachstelle beim Cookie selbst. Dieser enthält Benutzername und Passwort im Klartext, kann also von jedermann eingesehen werden, der Zugang zur Cookie-Datei des jeweiligen Nutzers hat.

Weitere Infomationen zu „mod_auth_cookie“ finden Sie im Source Code des Moduls und den entsprechenden Begleittexten unter ftp://ftp.kciLink.com/pub/.

Passwortschutz mit anderen Authentisierungsmodulen

Der Apache Webserver bietet eine vielzahl von weiteren Authentisierungsmodulen, z.B. Authentisierung gegen Berkeley DB Dateien, LDAP etc. Einen Überblick können Sie sich auf http://modules.apache.org verschaffen.

Sicherheitshinweise

Alle hier beschriebenen Schutzmechanismen verwenden das „Basic-Verfahren“, dass mit HTTP 1.0 und mittlerweile mit den meisten Browsern verwendet werden kann. Bei diesem Verfahren werden Benutzername und Passwort lediglich in Base64-Codierung übertragen, was im Prinzip einer Übertragung im Klartext gleichkommt. Daher reicht ein einfaches Abhören der Verbindung, um Benutzernamen und Passwort auszuspähen. Da die Sicherheit der beschriebenen Schutzmechanismen sehr gering ist, sollten unter keinen Umständen Systemaccounts/-passwörter für den Verzeichnisschutz verwendet werden.

Sollten Sie größere Sicherheitsbedürfnisse haben, können Sie ein SSL-Zertifikat für Ihren Server beantragen. Die Authentifizierung mit dem „Basic-Verfahren“ über SSL kann als sicher gelten. Außerdem haben Sie alternativ die Möglichkeit, eine Authentisierung über Benutzerzertifikate durchzuführen.

Alternativ zum „Basic-Verfahren“ kann mit dem Apache Webserver auch das „Digest-Verfahren“ eingesetzt werden, was ein Ausspähen des Passworts durch abhören des Kanals verhindert.

Leider ist eine Verwendung des „Digest-Verfahrens“ trotzdem derzeit nicht empfehlenswert. Das „Digest-Verfahren“ wird erst von der HTTP-Protokollversion 1.1 zwingend gefordert. Daher gibt es immernoch einige durchaus weitverbreitete Browser, die das „Digest-Verfahren“ nicht verwenden können. Prominenteste Beispiele hierfür sind Netscape 4.x und Internet Explorer 4.x. Außerdem liegt es im Wesen dieses Verfahrens, dass den Passwort-Daten auf dem Server ein besonderer Schutz zugute kommen muss, da diese auch in verschlüsselter Form von Angreifern verwendet werden können (Bei verschlüsselten Daten für das „Basic-Verfahren“ ist dies nicht der Fall.). Schließlich haben auch die beiden Apache-Module „mod_digest“ und „mod_auth_digest“ spezifische Schwächen. Das ältere „mod_digest“ implementiert Tests nur ungenügend, so dass beispielsweise der Zugriff auf einen Bereich durch die Wiederverwendung eines (abgehörten) HTTP-Headers möglich ist. Die Sicherheit vor unbefugten Zugriffen erhöht sich also nicht. Das neuere „mod_auth_digest“ hat diese Sicherheitslücken zwar nicht mehr, wird aber derzeit noch als experimentell und nicht für den Produktionseinsatz ausgewiesen.

Aus diesen Gründen kann eine Verwendung des „Digest-Verfahrens“ derzeit nicht empfohlen werden.

| Anleitungen | Literatur | Technische Infos |
| Startseite | Startseite | Kontakt | Accessibility | Lizenz | zeitform |