Apache HTTP Server Version 1.3
Modul mod_auth
Dieses Modul bietet Authentifikation von Benutzern auf Basis von
Textdateien.
Status: Basis
Quellcode: mod_auth.c
Modulname:
auth_module
Zusammenfassung
Dieses Modul ermöglicht die Benutzung von HTTP Basic Authentication
zur Zugriffsbeschränkung, wobei Benutzer in Passwortdateien und
Gruppendateien in einfachem Text-Format eingetragen werden. Eine
ähnliche Funktionalität, aber bessere Skalierbarkeit, wird von
den Modulen mod_auth_dbm und mod_auth_db bereitgestellt. HTTP Digest
Authentifikation wird vom Modul mod_auth_digest bereitgestellt.
Hinweis: Sicherungsverfahren mit
Berechtigungsnachweis sind nur so sicher, wie die Sicherheit des
Webservers.
Als Grundregel sind sie weniger sicher, als das
Sicherheitssystem des Betriebssystems.
Direktiven
Siehe auch: require, satisfy und mod_auth require Schlüsselwörter.
Das Modul mod_auth bietet die folgenden
Schlüsselwörter, die in einer Require Direktive angegeben
werden können:
user Benutzername [...]
- Übergebener Benutzername und übergebenes Passwort müssen
in der Datenbankdatei AuthUserFile
eingetragen sein und der Benutzername muß in der Require
Direktive aufgeführt sein.
group Gruppenname [...]
- Übergebener Benutzername und übergebenes Passwort müssen
in der Datenbankdatei AuthUserFile
eingetragen sein, Gruppenname muß in der Datenbankdatei
AuthGroupFile eingetragen sein
und der Benutzer muß Mitglied der Gruppe sein.
valid-user
- Übergebener Benutzername und übergebenes Passwort müssen
in der Datenbankdatei AuthUserFile
eingetragen sein. Jeder gültige Benutzername aus dieser Datei
erhält Zugriffsberechtigung.
file-owner
- [Verfügbar ab Apache 1.3.20] Übergebener Benutzername
und übergebenes Passwort müssen in der Datenbankdatei AuthUserFile eingetragen sein und
der Benutzername muß mit dem Besitzer der Datei
übereinstimmen, die gelesen wird. Das heißt, wenn im
Dateisystem steht, dass die abgerufene Datei einem Benutzer
maier gehört, dann muß der Benutzername für
den Zugriff über den Server ebenfalls maier
sein.
file-group
- [Verfügbar ab Apache 1.3.20] Übergebener Benutzername
und übergebenes Passwort müssen in der Datenbankdatei AuthUserFile eingetragen sein, der
Name der Gruppe, der die Datei gehört, muß in der
Datenbankdatei AuthGroupFile
eingetragen sein und der Benutzer muß Mitglied der Gruppe
sein.
Wenn zum Beispiel im Dateisystem steht, dass die
abgerufene Datei der Gruppe
webkonten gehört,
dann muß webkonten in AuthGroupFile eingetragen
sein und der übergebene Benutzer muß Mitglied dieser
Gruppe sein.
Betrachtet wird ein Mehrbenutzersystem mit Apache Webserver,
wobei jeder Benutzer seine eigenen Dateien unter dem
Dateisystem Pfad ~/public_html/private ablegt.
Weiterhin wird nur eine einzige Datenbankdatei AuthUserFile
verwendet, die alle Benutzernamen enthält und alle Benutzernamen
im Web sind zu denen im Dateisystem identisch.
Durch nachfolgenden Block würde dann nur dem Besitzer Zugriff
auf seine eigenen Dateien gewährt. Benutzer maier
würde also keinen Zugriff auf Dateien unter
/home/schmidt/public_html/private erhalten, es sei
denn diese Dateien gehörten maier anstatt
schmidt.
<Directory /home/*/public_html/private>
AuthType Basic
AuthName MeinePrivatenDateien
AuthUserFile /usr/local/apache/etc/.htpasswd-alle-benutzer
Satisfy All
Require file-owner
</Directory>
Syntax: AuthGroupFile
dateipfad
Kontext: Verzeichnis,
.htaccess
AllowOverride: AuthConfig
Status: Basis
Modul: mod_auth
Die Direktive AuthGroupFile legt den Namen der Gruppendatei
im Text-Format fest, die eine Liste von Benutzergruppen
zur Authentifikation enthält.
Dateipfad ist der Pfad zu dieser Datei. Wenn es kein
absoluter Pfad ist (d.h. wenn er nicht mit einem
Schrägstrich anfängt), gilt er als relativ in Bezug zu
ServerRoot.
Jede Zeile der Gruppendatei enthält einen Gruppennamen
gefolgt von einem Doppelpunkt gefolgt von einer durch
Leerzeichen getrennten Liste von Mitglieds-Benutzernamen.
Beispiel:
meinegruppe: anne paul karl
Achtung: Die Suche in großen Textdateien ist sehr
ineffizient; AuthDBMGroupFile
sollte statt dessen verwendet werden.
Sicherheitshinweis: AuthGroupFile sollte unbedingt
außerhalb des Dokument-Verzeichnisbaums des Webservers gespeichert
werden; keinesfalls in dem Verzeichnis, das dadurch
geschützt werden soll, andernfalls wird es Clients möglich,
AuthGroupFile auszulesen.
Siehe auch AuthName, AuthType und AuthUserFile.
Syntax: AuthUserFile
dateipfad
Kontext: Verzeichnis,
.htaccess
AllowOverride: AuthConfig
Status: Basis
Modul: mod_auth
Die Direktive AuthUserFile legt den Namen der Textdatei fest,
die eine Liste von Benutzernamen und Passwörtern zur
Authentifikation enthält.
Dateipfad ist der Pfad zu dieser Datei. Wenn es kein
absoluter Pfad ist (d.h. wenn er nicht mit einem
Schrägstrich anfängt), gilt er als relativ in Bezug zu
ServerRoot.
Jede Zeile der Datei enthält einen Benutzernamen gefolgt
von einem Doppelpunkt gefolgt von einem durch
crypt() verschlüsselten Passwort. Das Verhalten
bei wiederholtem Aufführen desselben Benutzernamens ist
undefiniert.
Mit dem Hilfsprogramm
htpasswd,
dass bei einer Binärdistribution mit installiert wird oder im
Verzeichnis src/support gefunden werden kann,
läßt sich die Passwortdatei pflegen. Für
ausführlichere Angaben siehe man htpasswd.
Kurzübersicht:
htpasswd -c dateiname benutzer
Erzeugt eine Passwortdatei 'dateiname' mit 'benutzer' als
erstem Benutzernamen. Das Passwort ist nach
Eingabeaufforderung einzugeben.
htpasswd dateiname benutzer2
Fügt in Passwortdatei 'dateiname' den Benutzernamen 'benutzer2'
neu hinzu oder ändert den Eintrag, falls der Benutzer schon
vorhanden war.
Achtung: Die Suche in großen Textdateien ist sehr
ineffizient; AuthDBMUserFile
sollte statt dessen verwendet werden.
- Sicherheitshinweis:
- AuthUserFile sollte unbedingt außerhalb
des Dokument-Verzeichnisbaums des Webserver gespeichert werden;
keinesfalls in dem Verzeichnis, das dadurch geschützt
werden soll, andernfalls wird es Clients möglich, AuthGroupFile
auszulesen.
- Leere Benutzernamen und leere Passwörter werden nicht
abgefangen (seit Apache 1.3.20). Wenn AuthUserFile eine
Zeile mit nur einem Doppelpunkt (':') enthält, so führt
ein '
Require valid-user' dazu, dass der Zugriff
gewährt wird, wenn übergebener Benutzername und
übergebenes Passwort fehlen.
Siehe auch AuthName, AuthType und AuthGroupFile.
Syntax: AuthAuthoritative
on|off
Voreinstellung:
AuthAuthoritative on
Kontext: Verzeichnis,
.htaccess
AllowOverride: AuthConfig
Status: Basis
Modul: mod_auth
Durch das explizite Setzen der AuthAuthoritative Direktive
auf 'off' wird die Verantwortlichkeit für
beides, Authentifikation und Authorisation, an nachfolgende
Module weitergereicht (wie definiert in den Dateien
Configuration und modules.c), falls
kein Benutzername und keine
Regel zum übergebenen Benutzernamen passen.
Wenn es aber einen passenden Benutzernamen oder eine passende
Regel gibt, so werden die üblichen Zugriffsprüfungen
angewendet und bei fehlender Berechtigung der Fehlercode
Authorization Required zurückgeliefert.
Wenn also ein Benutzername in der Datenbank von mehr als
einem Modul erscheint oder eine gültige Require
Direktive von mehr als einem Modul angewendet werden kann,
so wird das erste Modul den Berechtigungsnachweis prüfen
und der Zugriff wird erlaubt oder verweigert unabhängig von
der Einstellung AuthAuthoritative.
Ein typischer Anwendungsfall dafür ergibt sich in der
gemeinsamen Benutzung mit einem der Datenbank Module, wie
zum Beispiel mod_auth_db.c, mod_auth_dbm.c,
mod_auth_msql.c und mod_auth_anon.c.
Diese Module decken die Masse der Berechtigungsprüfungen ab,
aber einige (administrative) Prüfungen werden durchgereicht
an ein gut abgesichertes AuthUserFile.
Voreinstellung: Die
Verantwortlichkeit zur Prüfung wird nicht weitergereicht.
Ein unbekannter Benutzername führt zum Fehlercode
Authorization Required. Bei fehlendem Setzen des Wertes
bleibt das System also sicher und erzwingt ein Verhalten,
das NCSA kompatibel ist.
Sicherheitshinweis: Es ist gut zu überlegen, ob einem
Benutzer wirklich erlaubt werden sollte, ein Weiterreichen
der Verantwortlichkeit in seiner .htaccess Datei zu
konfigurieren. Im Allgemeinen ist es einfacher, eine einzelne
.htpasswd Datei abzusichern, als eine Datenbank wie
beispielsweise mSQL.
AuthUserFile sollte unbedingt außerhalb
des Dokument-Verzeichnisbaums des Webserver gespeichert werden;
keinesfalls in dem Verzeichnis, das dadurch geschützt
werden soll, andernfalls wird es Clients möglich, AuthGroupFile
auszulesen.
Siehe auch AuthName, AuthType und AuthGroupFile.
Apache HTTP Server Version 1.3