Title: Authentifizierung, Autorisierung und Zugriffskontrolle
Praxis / Anleitungen

Bei der Authentifizierung wird überprüft, ob jemand derjenige ist, als der er sich ausgibt. Die Autorisierung ist ein Vorgang, bei dem jemand das Recht erhält, sich durch Daten zu bewegen und/oder darauf zuzugreifen.

Einführung

Enthält eine Website schützenswerte Informationen oder ist sie nur für einen kleinen Personenkreis vorgesehen, dann können Sie mit den hier vorgestellten Techniken sicherstellen, dass nur diejenigen diese Seiten sehen können, für die sie vorgesehen sind.

Es werden die "Standardmöglichkeiten" zum Schutz von Teilen der Website beschrieben, die in den meisten Fällen eingesetzt werden.

Voraussetzungen

Die erörterten Direktiven müssen entweder in der Konfigurationsdatei des Hauptservers (normalerweise in einem Directory-Abschnitt) oder in den Konfigurationsdateien der Verzeichnisse (.htaccess-Dateien) stehen.

Sollen .htaccess-Dateien verwendet werden, muss die Serverkonfiguration das Einbinden von Authentifizierungsdirektiven in diese Dateien zulassen. Dafür wird mit der AllowOverride-Direktive gesorgt, die angibt, welche Direktiven in den Konfigurationsdateien der Verzeichnisse zulässig sind.

Da es hier um die Authentifizierung geht, wird eine AllowOverride-Direktive wie die folgende benötigt:

AllowOverride AuthConfig

Sollen die Direktiven direkt in die eigentliche Serverkonfigurationsdatei gesetzt werden, werden selbstverständlich Schreibrechte für diese Datei benötigt.

Darüber hinaus müssen Informationen über die Verzeichnisstruktur des Servers vorliegen und bekannt sein, wo sich bestimmte Dateien befinden. Das ist nicht weiter schwierig und wird später noch erläutert.

Einrichtung

In den folgenden Abschnitten wird die Einrichtung eines Passwortschutzes für ein Verzeichnis auf dem Server beschrieben.

Zuerst muss eine Passwortdatei angelegt werden. Diese Datei sollte an einer Stelle gespeichert werden, die vom Web aus nicht zugänglich ist, damit niemand sie herunterladen kann. Befinden sich beispielsweise die Dokumente für das Web im Verzeichnis /usr/local/apache/htdocs, sollte(n) sich die Passwortdatei(n) im Verzeichnis /usr/local/apache/passwd befinden.

Die Datei wird mit dem Programm htpasswd erstellt, das Bestandteil der Apache-Distribution ist. Sie befindet sich im Verzeichnis bin der Apache-Installation. Mit der folgenden Befehlszeile wird die Datei erstellt:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

Das Programm htpasswd fragt nach dem Passwort und bittet zwecks Bestätigung um eine zweite Eingabe des Passworts:

# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen

Befindet sich das Programm nicht im angegebenen Suchpfad, muss selbstverständlich der vollständige Pfad angegeben werden. Zum Beispiel: /usr/local/apache/bin/htpasswd

Anschließend muss der Server so eingerichtet werden, dass er ein Passwort anfordert und weiß, welche Benutzer Zugriff haben. Dies kann entweder in der Datei httpd.conf oder in einer .htaccess-Datei geschehen. Soll zum Beispiel das Verzeichnis /usr/local/apache/htdocs/secret geschützt werden, können die folgenden Direktiven in der Datei /usr/local/apache/htdocs/secret/.htaccess oder in der Datei httpd.conf in einem <Directory /usr/local/apache/apache/htdocs/secret>-Abschnitt platziert werden:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen

Die einzelnen Direktiven werden der Reihe nach erläutert. Die AuthType-Direktive wählt das Verfahren für die Benutzerauthentifizierung aus. Das gebräuchlichste Verfahren ist die Basic-Authentifizierung, die mit dem Modul mod_auth_basic implementiert wird. Dabei ist jedoch zu berücksichtigen, dass das Passwort bei der Basic-Authentifizierung unverschlüsselt vom Client zum Browser gesendet wird. Dieses Verfahren sollte deshalb bei sehr sensiblen Daten nicht benutzt werden. Der Apache unterstützt noch eine weitere Authentifizierungsmethode, nämlich die AuthType Digest-Authentifizierung. Sie wird vom Modul mod_auth_digest implementiert und ist wesentlich sicherer. Nur die aktuellen Client-Versionen unterstützen die Digest-Authentifizierung.

Die AuthName-Direktive legt den Bereich für die Authentifizierung fest. Die Bereichsangabe hat zwei Funktionen. Zum einen präsentieren Clients diese Information häufig dem Benutzer als Teil des Passwortdialogs. Zum anderen kann der Client anhand des Bereichs feststellen, welches Passwort für einen bestimmten Bereich angegeben werden muss.

Hat sich der Client beispielsweise einmal für den Bereich "Restricted Files" authentisiert, versucht er es bei anderen Bereichen des gleichen Servers, die als Bereich "Restricted Files" gekennzeichnet sind, automatisch wieder mit diesem Passwort. Tragen mehrere geschützte Bereiche die gleiche Bezeichnung, dann bleibt es dem Benutzer erspart, das Passwort mehrfach eingeben zu müssen. Aus Sicherheitsgründen wird der Client aber beim Wechsel des Hostnamens des Servers immer aufgefordert, das Passwort einzugeben.

Die AuthUserFile-Direktive gibt den Pfad zur gerade mit dem Programm htpasswd erzeugten Passwortdatei an. Bei einer großen Anzahl von Benutzern kann die Suche in einer einfachen Textdatei für die Authentifizierung der Benutzer bei jeder Anfrage sehr viel Zeit beanspruchen. Der Apache kann Benutzerinformationen aber auch in einer schneller zu durchsuchenden Datenbank speichern. Das mod_authn_dbm-Modul stellt hierfür die AuthDBMUserFile-Direktive zur Verfügung. Die mit dieser Direktive angegebenen Datenbankdateien werden mit dem Programm dbmmanage erzeugt und bearbeitet. Von Fremdherstellern werden noch viele andere Optionen für die Authentifizierung angeboten (siehe Apache Moduldatenbank).

Mit der Require-Direktive wird der Autorisierungsteil des Vorgangs konfiguriert, indem angegeben wird, welcher Benutzer auf diesen Bereich des Servers zugreifen darf. Im nächsten Abschnitt werden die unterschiedlichen Möglichkeiten für die Verwendung des der Require-Direktive vorgestellt.

Mehrere Benutzer zulassen

Die oben vorgestellten Direktiven gewähren nur einer Person (in diesem Beispiel der Person mit dem Benutzernamen rbowen) Zugriff auf das Verzeichnis. In der Praxis sollen aber in der Regel mehrere Personen Zugriff erhalten. Dies geschieht mit der AuthGroupFile-Direktive.

Sollen mehrere Benutzer Zugriff erhalten, muss eine Gruppendatei angelegt werden, die eine Liste von Benutzernamen unter einem Gruppennamen zusammenfasst. Das Format dieser Datei ist relativ einfach und sie kann daher mit einem normalen Editor erstellt werden. Ihr Inhalt sieht wie folgt aus:

Gruppenname: rbowen dpitts sungo rshersey

Auf den Gruppennamen folgen in einer langen Zeile durch Leerzeichen getrennt die Namen der Gruppenmitglieder.

Mit der folgenden Befehlszeile wird der vorhandenen Passwortdatei ein Benutzer hinzugefügt:

htpasswd /usr/local/apache/passwd/password dpitts

Sie erhalten die gleichen Reaktionen wie zuvor, allerdings wird jetzt keine neue Datei erzeugt, sondern die vorhandene Datei wird ergänzt. (Eine neue Passwortdatei kann mit der Option -c erzeugt werden).

Jetzt muss die .htaccess-Datei wie folgt geändert werden:

AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/password
AuthGroupFile /usr/local/apache/passwd/groups
Require group Gruppenname

Jetzt hat jeder Benutzer der Gruppe Gruppenname Zugriff, der einen Eintrag in der password-Datei hat und das korrekte Passwort eingibt.

Es gibt noch eine allgemeinere Möglichkeit, mehreren Benutzern Zugriff zu gewähren. In diesem Fall wird keine Gruppendatei angelegt, sondern folgende Direktive benutzt:

Require valid-user

Wird diese an Stelle der Formulierung Require user rbowen benutzt, hat jeder Zugriff, der in der Passwortdatei aufgeführt wird und sein Passwort korrekt eingibt,. Es kann sogar das Gruppenverhalten simuliert werden, indem für jede Gruppe eine eigene Passwortdatei unterhalten wird. Der Vorteil dieser Vorgehensweise liegt darin, dass der Apache nur eine und nicht zwei Dateien überprüfen muss. Der Nachteil ist, dass eine Vielzahl von Passwortdateien unterhalten werden muss und mit der AuthUserFile-Direktive jeweils auf die richtige verwiesen werden muss.

Mögliche Probleme

Bedingt durch den Ablauf der Basic-Authentifizierung müssen der Benutzername und das Passwort jedes Mal überprüft werden, wenn ein Dokument vom Server angefordert wird. Das gilt auch, wenn die gleiche Seite noch einmal geladen wird sowie für jedes Bild auf der Seite (wenn es aus einem geschützten Verzeichnis kommt). Dadurch wird die Geschwindigkeit selbstverständlich herabgesetzt. Diese Verlangsamung steht in einem proportionalen Verhältnis zur Größe der Passwortdatei, weil diese Datei geöffnet und die Benutzerliste durchsucht werden muss, was sich beim Laden jeder Seite wiederholt.

Für die Praxis folgt daraus, dass eine Passwortdatei nur eine begrenzte Anzahl von Benutzern enthalten darf. Wo diese Grenze liegt, hängt von der Leistungsfähigkeit des Rechners ab, es ist aber damit zu rechnen, dass der Leistungsabfall ab einigen Hundert Einträgen spürbar wird und eine andere Authentifizierungsmethode in Erwägung gezogen werden sollte.

Welche Möglichkeiten stehen noch zur Verfügung?

Die Authentifizierung über Benutzername und Passwort ist nur eine von mehreren möglichen Varianten. Häufig wird der Zugriff nach anderen Kriterien als der Identität gewährt, beispielsweise danach, woher die Benutzer kommen.

Mit den Direktiven Allow und Deny kann der Zugriff über den Hostnamen oder die Hostadresse der das Dokument anfordernden Direktive geregelt werden. Die Order-Direktive arbeitet mit diesen beiden Direktiven zusammen und weist den Apache an, in welcher Reihenfolge diese Filter anzuwenden sind.

Sie werden wie folgt benutzt:

Allow from Adresse

wobei die Adresse eine IP-Adresse (oder eine partielle IP-Adresse) oder ein vollständig qualifizierter Domänenname (oder ein partieller Domänenname) ist. Es können mehrere Adressen oder Domänennamen angegeben werden.

Werden Sie beispielsweise von einer bestimmten Adresse mit einer Flut unerwünschter Nachrichten überhäuft, dann können Sie das wie folgt unterbinden:

Deny from 205.252.46.165

Besucher, die von dieser Adresse kommen, können den Inhalt, auf den sich diese Direktive bezieht, nicht sehen. Ist Sie der Rechnername bekannt, kann auch dieser angegeben werden.

Deny from host.example.com

Soll der Zugriff aus einer ganzen Domäne heraus blockiert werden, können Sie einen Teil der Adresse oder des Domänennamens angegeben:

Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke

Mit der Order-Direktive kann sichergestellt werden, dass tatsächlich die Gruppe eingeschränkt wird, die zugelassen werden soll. Dies geschieht mit einer Kombination der Direktiven Deny und Allow:

Order deny,allow
Deny from all
Allow from dev.example.com

Würde lediglich die Allow-Direktive aufgeführt, würde das gewünschte Ziel nicht erreicht, denn es werden Benutzer von dem Host sowie alle anderen zugelassen. Es sollen aber nur Benutzer von diesem Host zugelassen werden.

Weiter Informationen

Weitere Hinweisen finden Sie in den Beschreibungen von mod_auth_basic und mod_authz_host.

Title: Praxis / Anleitungen
Praxis / Anleitungen
Authentifizierung

Bei der Authentifizierung wird überprüft, ob jemand derjenige ist, als der er sich ausgibt. Die Autorisierung ist ein Vorgang, bei dem jemand das Recht erhält, sich durch Daten zu bewegen und/oder darauf zuzugreifen.

Siehe: Authentifizierung, Autorisierung und Zugriffskontrolle

Dynamische Inhalte mit CGI

Das Common Gateway Interface (CGI) bietet die Möglichkeit zur Interaktion eines Webservers mit externen Programmen, die Inhalte erzeugen. Sie werden als CGI-Programme oder CGI-Skripte bezeichnet. Dies ist der einfachste und gängiste Weg, um dynamische Inhalte in eine Website einzubinden. Dieses Kapitel beschreibt das Einrichten von CGI für einen Apache-Webserver und führt in die CGI-Programmierung ein.

Siehe: CGI: Dynamische Inhalte

.htaccess-Dateien

Mit .htaccess-Dateien können Konfigurationsänderungen auf der Ebene des Verzeichniskontextes vorgenommen werden. Eine Datei mit einer oder mehreren Konfigurationsdirektiven wird in einem bestimmten Dokumentverzeichnis platziert und die Direktiven für dieses Verzeichnis und alle Unterverzeichnisse angewendet.

Siehe: .htaccess-Dateien

Server Side Includes - Eine Einführung

SSIs (Server Side Includes) sind Direktiven, die in HTML-Seiten platziert und vom Server ausgewertet werden, wenn die Seiten an Clients geliefert werden. Mit ihnen kann vorhandenen HTML-Seiten dynamisch Inhalt hinzugefügt werden, ohne dass die gesamte Seite über ein CGI-Programm oder ein anderes dynamisches Verfahren bereitgestellt werden muss.

Siehe: Server Side Includes (SSI)

Verzeichnisrechte für Benutzer

Bei Systemen mit mehreren Benutzern kann jedem Benutzer erlaubt werden, ein Website im eigenen Stammverzeichnis zu unterhalten. Dies geschieht mit der UserDir-Direktive. Benutzer der URL http://example.com/~username/ erhalten den Inhalt aus dem Stammverzeichnis des mit der UserDir-Direktive angegebenen Benutzers und Unterverzeichnisses.

Siehe: Benutzer-Webverzeichnisse (public_html)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to