Geschützte Bereiche
Bei WWW-Servern, die unter UNIX laufen wird ein Feature des Betriebssystems genutzt,
das es erlaubt, das Server-Verzeichnis abzuschotten. Dieser Systemaufruf heißtchroot() und mancht das Verzeichnis, in dem der Server seine Daten hat,für alle Client-Anfragen zum Wurzelverzeichnis. Es existiert so aus Sicht des Clients nur dieses Verzeichnis mit seinen Unterverzeichnissen. Der Zugriff auf wichtige Systemdateien ist daher unmöglich.Des weiteren erlauben die Server, bestimmte Datenverzeichnisse nur für bestimmteRechner freizugeben oder Verzeichnisse durch Benutzerkennung und Psßwortzu schützen. Dies geschieht entweder in der Serverkonfiguration oder überdie Datei .htaccess in einem beliebigen Verzeichnis. Alle Dateien innerhalb
und unterhalb dieses Verzeichnisses sind dann geschützt.
Wie .htaccess funktioniert
Der (Lese-)Zugriff auf alle Dateien in einem Verzeichnisbaum wird individuell
kontrolliert durch eine Datei bestimmten Namens (hier ".htaccess") mit bestimmten
Inhalten. Sie muß einen Authentifizierungsnamen enthalten (AuthName "abc xyz ...")
sowie eine globale Zugriffsregel und/oder eine Liste der zugriffsberechtigten Benutzernamen.
Um solche geschützte Verzeichnisse einzurichten, gehen Sie folgendermaßen vor:
Erstellen Sie in dem Verzeichnis, welches Sie mit einem Paßwort schützen wollen,
eine Datei namens .htaccess mit folgendem Inhalt:
AuthUserFile /pfad/zu/einer/passwortdatei
AuthGroupFile /dev/null
AuthName "wieimmerdasheissensoll"
AuthType Basic
<Limit GET POST PUT>
require user webmaster
</Limit>
|
Bitte ersetzen Sie /pfad/zu/.htpasswd durch einen realen
Verzeichnispfad, in welchem sich die Datei .htpasswd
mit den Userdaten befindet.
Beim Authentisierungstyp (AuthType) gibt es derzeit nur den Typ "Basic".
"wieimmerdasheissensoll" können Sie durch eine kurze Nachricht ersetzen,
die in der User-Authentifizierungs-Pop-Up Box erscheint (String mit Leerzeichen
in Gänsefüßchen setzen!).
Das Verzeichnis ist jetzt nur für die Person freigegeben, die als Benutzernamen
webmaster eingibt. Nun müssen Sie noch ein Paßwort für den
Benutzer webmaster erstellen. Wie das geht, erfahren Sie weiter unten.
Jetzt kann auf das Verzeichnis nur noch mit dem Usernamen webmaster und dem
eingegebenen Paßwort zugegriffen werden.
Man kann die Sperre aber auch nur von der IP-Adresse des Clients abhängen
lassen. Zunächst machen wir mal ganz zu:
AuthUserFile /pfad/zu/.htpasswd
AuthName "wieimmerdasheissensoll"
order deny,allow
deny from all
|
Jetzt öffnen wir für alle Rechner des C-Netzes 192.168.34.0:
AuthUserFile /pfad/zu/.htpasswd
AuthName "wieimmerdasheissensoll"
order deny,allow
deny from all
allow from 192.168.34.
|
Hier darf niemand zugreifen, wenn der Name "nobody"
nicht in der Paßwort-Datei definiert ist:
AuthUserFile /pfad/zu/.htpasswd
AuthName "wieimmerdasheissensoll"
order deny,allow
deny from all
allow from 192.168.34.
require user nobody
|
Möchten Sie dagegen einigen Benutzern den Zugriff auf das Verzeichnis ermöglichen,
so gehen Sie bitte wie folgt vor. Erstellen Sie mit dem Programmhtpasswd weitere
Benutzer. Nun erstellen Sie in dem zu schützenden Verzeichnis eine Datei namens
.htgroup mit folgendem Inhalt:
logins: webmaster benutzer2 benutzer3
|
Geben Sie hier einen beliebigen Gruppennamen, gefolgt von einem Doppelpunkt ein, und
listen Sie alle Benutzer durch ein Leerzeichen voneinander getrennt dahinter auf, die
Zugriff auf das Verzeichnis erhalten sollen. Nun müssen Sie noch die .htaccess
in dem entsprechenden Verzeichnis wie folgt anpassen:
AuthUserFile /pfad/zu/.htpasswd
AuthGroupFile /pfad/zu/.htgroup
AuthName "wieimmerdasheissensoll"
AuthType Basic
<Limit GET>
require group logins
</Limit>
|
Wollen Sie einen einzelnen Benutzer entfernen, so löschen Sie seinen Namen einfach
aus der Auflistung in der Datei .htgroup und gegebenenfalls auch aus der
Datei .htpasswd.
Möchten Sie hingegen vielen Benutzern den Zugriff auf das Verzeichnis ermöglichen,
so ist die doppelte Eintragung in .htpasswd und .htgroup
etwas lästig. Gehen Sie bitte wie folgt vor. Erstellen Sie mit htpasswd
weitere Benutzer. Nun müssen Sie noch die .htaccess
in dem entsprechenden Verzeichnis wie folgt anpassen:
AuthType Basic
AuthName Sicherheit
AuthUserFile /opt/www/htdocs/geheim/.htpasswd
AuthGroupFile /dev/null
<Limit GET>
require valid-user
</Limit>
|
Wollen Sie den Schutz des Verzeichnisses aufheben, löschen Sie einfach
.htaccess, .htpasswd und .htgroup in den
entsprechenden Verzeichnissen. Wollen Sie dagegen nur einen einzelnen
Benutzer entfernen, so löschen Sie seinen Namen einfach aus der Auflistung
in der Datei .htpasswd.
Paßwort-Datei
Mit den .htaccess-Dateien sind lediglich Strukturen definiert
worden. Ohne den Eintrag von Benutzernamen und Paßwörtern in
die Paßwort-Datei kann noch kein einziger Benutzer zugreifen.
Entsprechende Eintragungen werden mit dem Programm htpasswd
durchgeführt:
htpasswd [-c] passwordfile username
Nun müssen Sie zweimal das Paßwort für den Benutzer "webmaster" eingeben.
Wird der Parameter "-c"eingegeben, erzeugt das Programm eine neue Paßwortdatei.
Wenn schon ein entsprechender Benutzer existiert, wird das Paßwort geändert.
Benutzernamen und Paßwörter sind frei wählbare Strings; sie
haben nichts mit den User-IDs der Benutzerverwaltung unter UNIX zu tun -- und
sie sollten es auch nicht!
Das Paßwort wird verschlüsselt abgelegt, wie man das von den
UNIX-Paßwort-Dateien /etc/passwd bzw. /etc/shadow kennt.
Die Verschlüsselung erfolgt jedoch nach einem eigenen Verfahren.
Beispiel für eine Paßwort-Datei:
boss:IN3WY1lATStaY
schmidt:INQaGJBu4yljQ
meier:INqq3xgT4zpp6
huber:INT.EAmojNwN6
|
Mit dem folgenden Perl-Programmstück kann man auch einen
Eintrag in der Passwortdatei erzeugen:
# Passwort basteln aus $name (Name) und $passwd (Passwort)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Der Name der Psswortdatei steht in der Variablen $PASS
#
# Beim Namen:
# - Umlaute konvertieren
# - alles weg, was nicht Buchstabe ist
# - alles in Kleinbuchstaben umwandeln
$temp = $name;
$temp =~ s/ä/ae/g;
$temp =~ s/ö/oe/g;
$temp =~ s/ü/ue/g;
$temp =~ s/Ä/ae/g;
$temp =~ s/Ö/oe/g;
$temp =~ s/Ü/ue/g;
$temp =~ s/ß/ss/g;
$temp =~ tr/a-zA-Z//cd;
$temp =~ tr/A-Z/a-z/;
$namlen = length $temp;
$newpass = crypt($password,substr($password,0,2));
open DAT, ">>"$PASS || die "Fehler \"$!\"beim \Öffnen der Passwortdatei!\n";
print DAT $newuid, ":", $newpass, "\n";
close DAT;
|
Testen können Sie dies, wenn Sie
http://www.netzmafia.de/geheim/index.html
aufsuchen und folgende Zugangsdaten eingeben:
- Username: user
- Passwort: geheim
|