Zugriffsbeschränkung für bestimmte Seiten

Um zu Verhindern, daß jeder auf alle Seiten zugreifen kann, gibt es die Möglichkeit, Dateien und Verzeichnisse für den allgemeinen Zugang zu sperren. Nur ein bestimmter Personenkreis aus einer Domain oder mit Kentniss eines Passworts kann dann die Dokumente betrachten.

Um den Zugriff einzuschränken, legt man in dem zu schützenden Verzeichniss eine Datei .htaccess an. Je nach angestreber Zugangskontrolle variiert der Inhalt:

Nur Personen aus einer Domain

Damit Personen nur von bestimmten Rechnern oder von einer Gruppe von Rechnern der Zugang erhält, verbietet man mit deny from all den allgemeinen Zugang und gibt ihn dann für bestimmte Nutzer mit allow from hostname domain wieder frei.

Nur Personen aus der Domain "lahn.de" und "foo.bar"

<Limit GET>
  order deny,allow
  deny  from all
  allow from lahn.de foo.bar
</Limit>

Eine Einzelpersonen mit Passwort

Der Nutzer, der sich mit seinem Namen und seinem Passwort identifizieren kann, erhält Zugang zu den Seiten. In einer Datei wird dazu der Name mit einem verschlüsselten Passwort hinterlegt.

Nur die Person "DieserEineBenutzerName" erhält Zugang

<Limit GET>
  AuthType Basic
  AuthUserFile /etc/httpd/htpasswd
  AuthGroupFile /dev/null
  AuthName "Dieser Text fordert zur Eingabe der Personendaten auf"
  require user DieserEineBenutzerName
</Limit>

Mehrere Personen mit Passwort

Wie eben erhält jede Person einen Namen und ein Passwort. In einer zweiten Datei werden Gruppen definiert, denen man dann den Zugang gewären kann.

Nur die Personen in "DieseGruppe" erhalten Zugang

<Limit GET>
  AuthType Basic
  AuthUserFile /etc/httpd/htpasswd
  AuthGroupFile /etc/httpd/htgroup
  AuthName "Dieser Text fordert zur Eingabe der Personendaten auf"
  require group DieseGruppe
</Limit>

Personen aus einer Domain oder mit persönlichem Passwort

Die eben vorgestellten Möglichkeiten lassen sich auch kombinieren: Für Personen aus einer bestimmten Domain ist kein Passwort nötig. Für alle Anderen wird der Name und das Passwort hingegen abgefragt.

Personen aus "lahn.de" oder mit gültigen Passwort auf dem Server

<Limit GET>
  order deny,allow
  deny  from all
  allow from lahn.de
  AuthType Basic
  AuthGroupFile /etc/httpd/htgroup
  AuthUserFile /etc/httpd/htpasswd
  AuthName "Dieser Text fordert zur Eingabe der Personendaten auf"
  require valid-user
  satisfy any
</Limit>

Personen aus einer Domain oder mit bestimmte Personen

Das letzte Beispiel ermöglicht es jeder Person, die einen Namen und ein Passwort in htpasswd eingetragen hat, auf die Daten zuzugreifen. Indem man die require valid-user Zeile in ein require group DieseGruppe abwandelt, müßen die berechtigten Personen dieser Gruppe angehören. mit require user DieserUser läßt sich der Zugang auch auf Einzelpersonen beschränken.

Mehrere Bedingungen

Die Zugangskontrolle läßt sich noch weiter verschärfen, indem man die Überprüfung einer Domain mit einer Passworteingabe kombiniert: Wenn man den Eintrag require valid-user aus dem vorherigen Beispiel entfernt, muss man sowohl aus der angegebenen Domain kommen und sich zusätzlich noch mit seinem persönlichen Passwort identifizieren.

Passwörter

Erzeugen von Passwörtern

Wenn man den Zugriff auf Benutzerebene regeln will (d.h. mit Passwort), muss zudem eine Passwortdatei angelegt werden. Dies geschiet mit dem Programm htpasswd, dass z.B. beim Apache-Server im support-Verzeichnis enthalten ist. Weitere Möglichkeiten sind hier beschrieben.

Gruppendatei

Die Datei "htgroup" enthaelt fuer jede Gruppe eine Zeile der Form DieseGruppe: User1 User2 User3 Für jeden User muß dann ebenfalls ein Passwort generiert werden und in "htpasswd" abgelegt werden.

Sicherheit

Für diese Dateien muss ein absoluter Pfad angegeben werden und sie duerfen nicht selbst in dem beschraenkten Verzeichniss liegen. Aus Sicherheitsgruenden sollten sie sogar ausserhalb des normalen Zugangsbereiches liegen, um die Entschluesselung der Passwoerter zu verhindern.

Durch die Angabe von AuthType Basic werden die Passwörter im Klartext über das Netz übertragen. Prinzipiell kann also jeder mit ein wenig Ahnung und Geduld an Passwörter kommen. Ein weiterer Standart Digest Authentication (AuthType Digest), der diesen Problem umgehr, existiert zwar, aber bis jetzt kann so gut wie kein Browser diese Art von Identifizierung.

Datenbanken

Anstatt die Passwörter und Gruppeninformationen in Textdateien zu speichern, kann man verschiedene Datenbanken dazu verwenden. Der Apache besitzt zwei unterschiedliche Module, die sich nur in der verwendeten Datenbank unterscheiden. In beiden Fällen werden die Einträge AuthUserFile und AuthGroupFile ersetzt:

Berkeley DB

Das Modul DB basiert auf das Berkeley Datenbankformat. Wird dieses Modul verwendet, so werden die Einträge AuthUserFile und AuthGroupFile durch AuthDBUserFile und AuthDBGroupFile ersetzt.

DBM

Das Modul DBM benutzt eine DBM Datenbank. In diesem Fall werden die Einträge AuthUserFile und AuthGroupFile durch AuthDBMUserFile und AuthDBMGroupFile ersetzt.

Um solche Datenbanken zu erzeugen, benutzt man am besten das dbmmanage Programm, das mit dem Apache installiert wird. Eine Anleitung dazu findet man hier.

Weitere Literatur

In der Dokumentation zum Apache Server findet man alles nötige, was im Zusammenhang mit diesem Server möglich ist. Insbesondere die Module Digest, Access, Auth und Auth DBM sind hier nützlich.