Hinweise für WWW-Autoren: Zugriffskontrolle


Wer als WWW-Autor Dokumente verfasst, möchte auch, dass diese gelesen werden. Deswegen lautet die Standard-Zugriffsregel: "WWW-Dokumente sind von überall und durch jedermann lesbar". Nun gibt es aber auch Inhalte, die nur einer bestimmten Leserschaft zugänglich sein sollen. Dies kann ein WWW-Autor bestimmen:

  1. Zugriff nur von bestimmten Rechnern erlauben
  2. Zugriff mit Abfrage von Name und Passwort
  3. Kombination aus 1., 2.
  4. AFS-Authentisierung mit AFS-Token

Hinweis: Die gegenwärtig zur Verfügung stehenden Sicherheitsmechanismen sind nur als geringer Schutz anzusehen. Sollen vertrauliche Daten übertragen werden, oder ist ein Passwortschutz gewünscht, sollte "Secure HTTP"
(www.tu-chemnitz.de/urz/www/https.html) zum Einsatz kommen. Sehr sensible Daten sollten entweder gar nicht via WWW bereitgestellt oder anderweitig geeignet verschlüsselt werden!

Der WWW-Zugriffsschutz erfolgt im Normalfall verzeichnisweise (d.h. für alle Dateien in einem Verzeichnis). Man kann aber auch gezielt einzelne Dateien schützen - siehe Beispiel. Zur Formulierung der Zugriffsrechte schreibt man unten angegebene Anweisungen in die Datei .htaccess. Diese Anweisungen gelten dann für dieses Verzeichnis und für alle evtuellen Unterverzeichnisse.

Die im folgenden beschriebenen Anweisungen gelten für die zentralen WWW-Server der TU: www.tu-chemnitz.de, www-user.tu-chemnitz.de und www-usercgi.tu-chemnitz.de.

1. Zugriff nur von bestimmten Rechnern erlauben

Zu beachten ist hier, dass diese Variante auf dem Domain Name System beruht und nicht 100% sicher ist.

Order Deny,Allow
Deny from all   oder
Deny from host ...
Allow from all   oder
Allow from host ...

Order legt die Reihenfolge der Auswertung der folgenden Anweisungen fest. Deny dient zum Verweigern des Zugriffs, Allow zum Erlauben. all meint alle Rechner im Internet, als host ist angebbar: vollständiger Rechnername, teilweiser Domainname (.domain.name), vollständige oder teilweise IP-Adresse. Man kann auch mehrere angeben - durch Leerzeichen trennen. Die Angabe von Mustern (mit *) ist nicht möglich.
Standard: Allow from all

Beispiel:
Alle Dateien im einem Verzeichnis sollen via WWW nur von Rechnern der Informatik und des Rechenzentrums der TU zugreifbar sein: Die .htaccess-Datei im Verzeichnis enthält:
Order Deny,Allow
Deny from all
Allow from .informatik.tu-chemnitz.de .hrz.tu-chemnitz.de


2. Zugriff mit Abfrage von Name und Passwort

Hier ist zu beachten, dass bei normalen Zugriffen via http das Passwort unverschlüsselt übertragen wird. Für manche Anwendungen mag das akzeptabel sein, für viele ist es sicher bedenklich (insbesondere wenn man das URZ-Kennzeichen + Passwort verwendet). Hier sollte unbedingt https zum Einsatz kommen, wodurch die Daten verschlüsselt übertragen werden.

Verwendung des URZ-Nutzerkennzeichens + Passwortes

Auf derart geschützte Seiten erhält man nur Zugang durch Eingabe seines URZ-Kennzeichens und des dazugehörigen "Zugangs-Passwortes".

SSLRequireSSL
AuthName "URZ-Kennzeichen + Passwort"
AuthType Basic
AuthDBMUserFile  /www/auth/urzpasswd.dbm
AuthDBMGroupFile /www/auth/urzpasswd.dbm
Require user name ...    oder
Require group name ...    oder
Require valid-user

Mit SSLRequireSSL verbieten Sie den unverschlüsselten Zugriff, d.h. die geschützten Dokumente müssen mit https://www.tu-chemnitz.de/... (nicht http://www...) adressiert werden.
Als AuthName wird ein beliebiger Name verwendet, der dem Nutzer bei der Abfrage von Namen + Passwort angezeigt wird.
Mit Require gibt man schließlich an, welche Benutzer Zugriff haben sollen:

Require valid-user
- jeder Nutzer mit URZ-Nutzerkennzeichen
Require user nutzer1 nutzer2 ...
- ein oder mehrere Nutzer (deren Nutzerkennzeichen angeben)
Require group gruppe
Als Gruppen sind z.Z. nutzbar:
tu-studenten - Studenten der TU Chemnitz
tu-mitarbeiter - Mitarbeiter der TU Chemnitz
urz-mitarbeiter - Mitarbeiter des URZ
Für andere Gruppen kann auch ein anderes AuthGroupFile erstellt werden (siehe unten).

Beispiel:
Dateien in einem Verzeichnis sollen nur Mitarbeitern und Studenten der TU zugänglich sein, die sich als solche mit URZ-Nutzerkennzeichen und Passwort ausweisen müssen. Die .htaccess-Datei im Verzeichnis enthält:
SSLRequireSSL
AuthName "URZ-Kennzeichen + Passwort"
AuthType Basic
AuthDBMUserFile /www/auth/urzpasswd.dbm
AuthDBMGroupFile /www/auth/urzpasswd.dbm
Require group tu-mitarbeiter tu-studenten

Verwendung eines frei gewählten Namens mit Passwort

AuthName "geschützter Bereich"
AuthType Basic
AuthUserFile vollst. Dateiname
AuthGroupFile vollst. Dateiname
Require user name ...   oder
Require user name ...   oder
Require valid-user

Als AuthName wird ein Name verwendet, der dem Nutzer bei der Abfrage von Namen + Passwort angezeigt wird. Hinter AuthUserFile wird ein vollständiger Dateiname angegeben, der die Namen und Passwörter enthält in der Form:
Name:verschlüsseltes-Passwort

Zur Verwaltung solcher Dateien gibt es das Unix-Kommando htpasswd:
htpasswd pw-filename www-name
In der Datei pw-filename wird ein Eintrag für den Namen www-name hinzugefügt oder, wenn er bereits existiert, geändert. Das Passwort wird abgefragt.
Zum Anlegen einer neuen Datei muss verwendet werden:
htpasswd -c pw-filename www-name

Sie können alternativ auch das WWW-Formular http://www.tu-chemnitz.de/urz/www/htpasswd.php verwenden. Dies erzeugt aus Ihren Eingaben eine Zeile, die Sie in eine entsprechende Passwort-Datei übernehmen können.

In einem AuthGroupFile können Gruppen von Namen (aus dem AuthUserFile) vereinbart werden:

    Gruppe: name1 name2 name3 ...
Achtung: Auf diese Dateien sollte kein Zugriff über den WWW-Server möglich sein. Sie sollten also nicht unter public_html liegen! Allerdings muss die Datei für den WWW-Server lesbar sein, s.u. AFS-Rechte.

Mit Require gibt man schließlich an, welchen Namen (Require user name ... - aus dem AuthUserFile) bzw. Gruppen (Require group name ... - aus dem AuthGroupFile) der Zugriff erlaubt wird. Man kann mehrere Namen oder Gruppen angeben, durch Leerzeichen getrennt. Mit Require valid-user erlaube ich allen in AuthUserFile eingetragenen Nutzern den Zugriff.

Beispiel:
Dateien in einem Verzeichnis sollen nur von Nutzern zugreifbar sein, die ein Geheimnis kennen, nämlich den Namen Rum und das Passwort topf: Die .htaccess-Datei im Verzeichnis enthält:
AuthName "Geistvolles Getränk"
AuthType Basic
AuthUserFile /afs/tu-chemnitz.de/home/urz/f/fri/test/hickpasswd
Require user Rum

(AuthGroupFile wurde weggelassen, da hier nicht gebraucht)
Die Passwort-Datei wurde angelegt mit:
unix> htpasswd -c /afs/tu-chemnitz.de/home/urz/f/fri/test/hickpasswd Rum
Adding password for Rum.
New password: topf
Re-type new password: topf
Password for Rum changed.

3. Kombination aus 1. + 2.

Eine von 2 Bedingungen (Rechner ODER Name/Passwort) muss stimmen:
Beispiel:
Dateien in einem Verzeichnis sollen Nutzern auf Rechnern der TU Chemnitz sofort zugreifbar sein. Nutzer anderer Rechner müssen sich als URZ-Nutzer authentifizieren (Nutzerkennzeichen + Passwort). Die .htaccess-Datei im Verzeichnis enthält:
Satisfy any
AuthName "URZ"
AuthType Basic
AuthDBMUserFile /www/auth/urzpasswd.dbm
Require valid-user

Order Deny,Allow
Deny from all
Allow from .tu-chemnitz.de

Beide Bedingungen (Rechner UND Name/Passwort) müssen stimmen:
Beispiel:
Dateien in einem Verzeichnis sollen nur von authentifizierten URZ-Nutzern (Nutzerkennzeichen + Passwort) von Rechnern aus Deutschland und Österreich zugreifbar sein: Die .htaccess-Datei im Verzeichnis enthält:
AuthName "URZ"
AuthType Basic
AuthDBMUserFile /www/auth/urzpasswd.dbm
Require valid-user

Order Deny,Allow
Deny from all
Allow from .de .at


4. AFS-Authentisierung mit AFS-Token

Die Authentisierung ist sehr ähnlich der Variante 2 "Verwendung des URZ-Nutzerkennzeichens + Passwortes". Allerdings wird hier das AFS-Passwort verlangt. Außerdem kann festgelegt werden, dass die Anfrage mit den AFS-Rechten des authentisierten Benutzers abgearbeitet wird. Dies ist sinnvoll für besondere Anwendungen, bei denen Daten via WWW (CGI oder PHP) von Berechtigten (z.B. Mitglieder einer Arbeitsgruppe) geschrieben werden sollen, andere Benutzer aber keinen Schreibzugriff erhalten sollen. Dazu müssen alle Berechtigte ein gültiges URZ-Nutzerkennzeichen besitzen.

SSLRequireSSL
AuthName "URZ-Kennzeichen + AFS-Passwort"
AuthType Basic
AuthPAM_Enabled on
AuthPAM_SetCred on
Require user name ...

SSLRequireSSL verbietet den unverschlüsselten Zugriff. AuthPAM_Enabled on erzwingt die AFS-Authentisierung, die Angabe eines AuthUserFile entfällt. AuthPAM_SetCred on erzwingt das Setzen des AFS-Tokens (der AFS-Berechtigung) für den authentisierten Nutzer. Wird dies weggelassen, läuft die Anfrage normal mit den Rechten des WWW-Servers. Mit Require user zählt man das oder die berechtigte(n) Nutzerkennzeichen auf. Die Angabe von Gruppen ist momentan nicht möglich.

Beispiel:
Dateien in einem Verzeichnis sollen von allen URZ-Nutzern lesbar sein. Schreibrecht erhalten aber nur spezielle Nutzer. Die .htaccess-Datei im Verzeichnis enthält:
SSLRequireSSL
AuthName "URZ"
AuthType Basic
AuthPAM_Enabled on
AuthPAM_SetCred on
Require valid-user

Die AFS-Rechte wurden so gesetzt, dass der WWW-Server lesen kann, aber nur entsprechende Berechtigte schreiben dürfen.

Schutz einzelner Dateien:

<Files filename>
...
</Files>

Hiermit kann man eine einzelne Datei schützen - für ... stehen beliebige Anweisungen aus 1. - 4. (s.o.). Mit * und ? sind auch einfache Muster möglich, z.B. *.html - alle HTML-Dateien.
<Files ~ "regulärer Ausdruck">
...
</Files>

Hiermit kann man die betreffenden Dateien über komplexe reguläre Ausdrücke festlegen, z.B. ".+\.(html|htm)$" - alle Dateien, die auf .html oder .htm enden.
Beispiel:
Die Dateien in einem Verzeichnis sollen folgendermaßen zugreifbar sein:
index.html - öffentlich
intern.html - nur TU Chemnitz
text.gif (und weitere Bilder) - nur für URZ-Nutzer
Die .htaccess-Datei im Verzeichnis enthält:
<Files intern.html>
# gilt nur für die Datei intern.html
Order Deny,Allow
Deny from all
Allow from .tu-chemnitz.de
</Files>

<Files ~ ".+\.(jpg|gif)$">
# ist ein regulärer Ausdruck:
# gilt für alle Dateien mit .gif und .jpg am Ende
Order Deny,Allow
Deny from all
Allow from .hrz.tu-chemnitz.de
</Files>

Neben der Zugriffskontrolle via WWW muss auch an den Zugriffsschutz im Dateisystem gedacht werden. Da die WWW-Daten im AFS-Dateisystem liegen, sind die Rechte wie folgt zu setzen (diese Rechte gelten dann für alle Dateien im Verzeichnis):

Lesen für alle Lesen nur für WWW-Server
Kontrollieren
mit Unix-Kommando:   fs la .
system:anyuser rl
user rlidwka
www-server rl
user rlidwka
Einstellen mit Unix-Kommando: fs sa . system:anyuser rl fs sa . system:anyuser none
fs sa . www-server rl

Damit der WWW-Server selbst Zugriff auf die Daten hat, muss die AFS-Gruppe www-server immer Read- und List-Rechte haben.
Zum Kontrollieren und Einstellen der AFS-Rechte können Sie auch den WFM-Datei-Manager via https://login.tu-chemnitz.de/wfm/ benutzen (siehe Beitrag in dieser Ausgabe).

Weitere Informationen: Hinweise für HTML-Autoren
http://www.tu-chemnitz.de/urz/www/html-autoren.html#apache

Frank Richter, 31. Juli 2001