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:
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.
<Limit GET> order deny,allow deny from all allow from lahn.de foo.bar </Limit>
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.
<Limit GET> AuthType Basic AuthUserFile /etc/httpd/htpasswd AuthGroupFile /dev/null AuthName "Dieser Text fordert zur Eingabe der Personendaten auf" require user DieserEineBenutzerName </Limit>
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.
<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>
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.
<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>
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.
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.
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.
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.
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.
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:
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.
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.
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.