Erweiterter Verzeichnisschutz

Passwortschutz via htaccess

Um Verzeichnisse vor unbefugten Zugriffen zu schützen, steht Ihnen die .htaccess-Datei zur Verfügung. Wenn Sie nur einen einfachen Passwortschutz für einen Ordner einrichten möchten, lesen Sie bitte auf der Verzeichnisschutz-Seite nach.

Folgende Methoden ein Verzeichnis zu schützen, stehen Ihnen auf all unseren Webservern zur Verfügung. Ein Modul namens AuthGeneric erlaubt den Zugriff auf ein Verzeichnis über die zentrale BenutzerInnendatenbank. In dieser Datenbank sind die Daten aller u:accounts-Accounts gespeichert.

Im folgenden wird anhand einiger Beispiele illustriert, welche Einträge dazu in der Datei .htaccess erforderlich sind.

Zugriff für u:account-BenutzerInnen

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/
</IfDefine>

<IfDefine SSL>
AuthName "Zugriff nur mit u:account"
AuthType Basic
PerlAuthenHandler AuthGeneric
PerlSetVar PermitUnet yes
PerlSetVar PermitMailbox yes
PerlSetVar Services INFO
require valid-user
</IfDefine>

Mindestens eines von PermitUnet (Zugriff für Studierende) oder PermitMailbox (Zugriff für MitarbeiterInnen) muss vorhanden sein, sonst wird überhaupt niemandem der Zugriff erlaubt.

Nachdem diese Art der Authentifizierung nur mit Secure HTTP (https) funktioniert, ist ein zusätzlicher Eintrag für Verbindungen ohne Secure HTTP (http) erforderlich. Im obigen Beispiel (Redirect permanent) werden solche Verbindungen automatisch an den Secure Server weitergeleitet.

Erklärung

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/ - Weiterleitung nach https
</IfDefine>

<IfDefine SSL> - Der folgende Teil wird nur bei einer https-Verbindung ausgewertet

AuthName "Uni intern - Zutritt nur für berechtigte User" - Frei wählbarer Text, der über der Passwortabfrage erscheint

AuthType Basic - Zwingende Angabe

PerlAuthenHandler AuthGeneric - Zwingende Angabe

PerlSetVar PermitUnet yes - Allen u:accounts für Studierende Zugriff gewähren

PerlSetVar PermitMailbox yes - Allen u:ccounts für MitarbeiterInnen Zugriff gewähren

PerlSetVar Services INFO - Zugriff für u:accounts mit Light-User-Berechtigung (nur in Verbindung mit PermitMailbox yes)

require valid-user - Zwingende Angabe

</IfDefine> - Ende der https-Anweisungen

Zugriff für u:account-BenutzerInnen, die in einer Liste stehen

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/
</IfDefine> 

<IfDefine SSL>
AuthName "Nur Berechtigte"
AuthType Basic
PerlAuthenHandler AuthGeneric
PerlSetVar PermitMailbox yes
PerlSetVar Userlist /u/www/pugilist/.htuser
PerlSetVar Services INFO
require valid-user
</IfDefine>

Die Datei /u/www/<Name>/.htuser muss unbedingt innerhalb des html-Verzeichnisses liegen und enthält eine Liste von u:account-Usernamen (einer pro Zeile, aber ohne Passwörter!), z.B.:

hohhoh8
pugilis5
srbm5
horvatk2

Dann können nur diese u:account-BenutzerInnen mit ihren u:account-Passwörtern auf das Verzeichnis zugreifen.

Zugriff für Angehörige eines Instituts

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/
</IfDefine>

<IfDefine SSL>
AuthName "Pugilisten"
AuthType Basic
PerlAuthenHandler
AuthGeneric PerlSetVar
PermitMailbox yes
PerlSetVar AuthClass PUGIL
PerlSetVar Services INFO
require valid-user
</IfDefine>

Hier wird der Zugriff auf eine Klasse von BenutzerInnen eingeschränkt, die einem bestimmten Kriterium genügen: z.B. 'alle Angehörigen des Instituts für Pugilistik', 'alle Habilitierten der Fakultät für Informatik' oder 'alle Pugilistikstudierenden im zweiten Studienabschnitt'.

Um eine solche Klasse - wie im obigen Beispiel die Klasse PUGIL einzurichten, kontaktieren Sie bitte per E-Mail den Helpdesk: Die entsprechende Klasse muss von uns in der Datenbank definiert werden. Alle Wünsche dieser Art können wir zwar nicht erfüllen, die Datenbank ist aber recht flexibel.

Zugriff mit der WWW-UserID (nur auf www.univie.ac.at verfügbar)

Oft ist es von Vorteil, ein Verzeichnis auf dem Webserver www.univie.ac.at durch die WWW-UserID und das WWW-Passwort zu schützen. Anstatt den Usernamen und das kryptisierte Passwort noch einmal in der .htuser-Datei abzuspeichern, wird die Verwendung des AuthUnix-Moduls empfohlen: Bei Änderungen des Passwortes kann es dann zu keinen Inkonsistenzen kommen.

Das folgende Beispiel einer .htaccess-Datei illustriert die Verwendung dieses Moduls:

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/
</IfDefine>

<IfDefine SSL>
AuthName "Nur ich und sonst niemand"
AuthType Basic
PerlAuthenHandler AuthUnix
require valid-user
</IfDefine>

Das AuthUnix-Modul wird unter anderem dazu verwendet, die Zugriffs-Statistiken zu schützen.

Kombinieren von Methoden

Manchmal ist es notwendig, dass verschiedene BenutzerInnengruppen auf eine passwortgeschützte Seite zugreifen können - beispielsweise Studierende mit ihrer u:account-UserID, aber auch externe Vortragende, die über keine BenutzerInnenberechtigung der Universität Wien verfügen.

Das folgende Beispiel einer .htaccess-Datei zeigt die die notwendigen Eintragungen:

<IfDefine !SSL>
Redirect permanent / https://www.univie.ac.at/
</IfDefine>

<IfDefine SSL>
AuthName "Nur ich und sonst niemand"
AuthType Basic require valid-user

# Zugriff für Studierende
PerlAuthenHandler AuthGeneric
PerlSetVar PermitUnet Yes
PerlSetVar TryAuthUserFile Yes

# Zugriff für Externe
AuthUserFile /u/home/<Name>/.htpasswd
</IfDefine>

Durch die Zeile PerlSetVar TryAuthUserFile Yes wird bewirkt, dass das Modul AuthGeneric bei unbekannten Usernamen keine Fehlermeldung erzeugt, sondern die Authentifizierung an den Mechanismus für das AuthUserFile weitergibt. Daraus ergibt sich, dass die Usernamen im AuthUserFile nicht mit gültiger u:account-UserID übereinstimmen dürfen. Analog dazu kann auch das Modul AuthUnix mit AuthUserFile kombiniert werden.

URLs via mod_rewrite umschreiben

Wenn in einer .htaccess-Datei mod_rewrite oder ein Redirect verwendet wird, so ist der Localpart der URL anzugeben, d.h. der Teil hinter http://www.univie.ac.at. Weiters muss bei Verwendung von mod_rewrite immer die RewriteBase in der Form RewriteBase /<URL-Teil>/ angegeben werden.

Ein Beispiel zur Erläuterung: Das Institut für Pugilistik hat einen Account pugi und eine Webseite, die unter www.univie.ac.at/pugilistik/ erreichbar ist. Dort hat sich die HTML-Datei: alteseite.html geändert in: neueseite.html.

RewriteEngine On
RewriteBase /pugilistik/
# Für Studierende: /<u:account-UserID>/
# Für MitarbeiterInnen: /<vorname>.<nachname>/
RewriteRule ^alteseite\.html$ neueseite.html [R=301,L]

Obiges Script bewirkt eine Umschreibung des URL-Teils alteseite.html in neueseite.html.

Weiteres Beispiel:

Der ursprüngliche HTML-Dateiname soll in der URL als Parameter mitgegeben werden. Dies kann dann z.B. von einem Script ausgewertet werden.

RewriteEngine On
RewriteBase /zufallr0/
RewriteRule ^(.*)\.html$ ?q=$1 [R=301,L]

Dadurch wird irgendwas.html zu ?q=irgendwas.

URL-Weiterleitungen mittels Redirect

Wenn in einer .htaccess-Datei Anfragen mittels Redirect weitergeleitet werden, muss der URL-Teil (hier im Beispiel pugilistik) angegeben werden.

RedirectPermanent /pugilistik/alteseite.html http://pugi.univie.ac.at

KontaktFeedback