Verzeichnisschutz

Diese Anleitung hilft Ihnen, Verzeichnisse und Dateien Ihres Webspaces mit erweiterten Methoden vor unerwünschtem Zugriff zu schützen.

Um Verzeichnisse vor unbefugten Zugriffen zu schützen, steht Ihnen die Datei .htaccess zur Verfügung. Folgende Beispiele illustrieren, welche Einträge dazu in der Datei .htaccess erforderlich sind.

 Hinweis

Wenn Sie einen Single-Sign-On-Passwortschutz für u:accounts einrichten möchten, lesen Sie in der Anleitung Single-Sign-On für Webseiten nach.

Verzeichnisse schützen

Wenn Sie den Zugriff auf ein Unterverzeichnis Ihres Webspace durch ein Passwort schützen wollen, sind folgende Schritte notwendig:


1. Erstellen der Datei .htaccess

Erstellen Sie (mit einem Text-Editor wie Notepad – nicht mit Word, OpenOffice etc.) eine Datei mit dem Namen .htaccess sowie folgendem Inhalt und legen Sie diese Datei in das zu schützende Verzeichnis:

AuthName "Zugriff nur mit Username und Passwort"
AuthType Basic
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user

  • Der Wert unter AuthName ist ein beliebiger Text, der bei der Passwortabfrage erscheint und unter Anführungszeichen stehen muss.

Speichern Sie diese Datei anschließend in dem zu schützenden Verzeichnis (Ordner).

Die Datei .htaccess sowie prinzipiell alle Dateien, deren Name mit einem Punkt beginnt, sind versteckt und vor Webzugriffen geschützt, man erhält immer die Antwort Forbidden. Aus Sicherheitsgründen sollten Sie Dateien mit Passwörtern, Konfigurationsdateien und dergleichen .htpasswd.htuser oder .htconf nennen.

 Hinweis

Wenn die Shibboleth-Einstellung im Webspace-Admin aktiviert ist, muss im Filesystem im Verzeichnis conf.d/ eine Datei mit Namen httpd.conf und mit dem Inhalt ShibCompatValidUser On angelegt, und der Webspace danach neu gestartet werden.

 Hinweis

Wenn Sie Schwierigkeiten haben, unter Windows einen Dateinamen zu vergeben, der mit einem Punkt beginnt gehen Sie folgendermaßen vor:

  1. Erstellen Sie eine Text-Datei (textdatei.txt). Am besten mittels Notepad (nicht mit Word, OpenOffice etc.).
  2. Fügen Sie den Inhalt ein.
  3. Laden Sie die Datei auf Ihren Webspace und benennen Sie sie mit Ihrem SSH-/SCP-/SFTP-Programm um in: .htaccess bzw. .htpasswd.

2. Erstellen der Datei .htpasswd

Die Datei .htpasswd enthält in jeder Zeile einen Nutzernamen und das dazugehörige, verschlüsselte Passwort. Um die Datei nicht aus dem Internet aufrufbar zu machen, legen Sie diese Datei im selben Verzeichnis wie dem html/-Ordner (Basisverzeichnis) an.

Beispiel einer .htpasswd-Datei:

Franz:$2y$10$1gQzatdJxDX4N5K1e.xcp.XV1DW0GgJ9v3zh..jMnH.ybVcvXtRhK
Karin:$2y$10$Yg6xRriQ1Z92EhH3asTib.B4aL5/8.5Rns.JZ.jap/bzTAYEvaWCS
Martin:$2y$10$05qzyktYWK7nat6jIu8UiuCzu228/BpCI/toXVyRKAc3tGNiB7zTu

 

Passwort-Generator

Mit diesem Formular können Sie Ihre Passwörter verschlüsseln:



  1. Tragen Sie jeden Nutzer*innennamen mit dem dazugehörigen Passwort in die Zeilen ein.
  2. Klicken Sie auf Passwörter generieren.
  3. Sie erhalten die kodierten Daten.


Speichern Sie danach die mit diesem Formular generierten Zeilen in eine Datei mit dem Namen .htpasswd im Basisverzeichnis ab. Zusammen mit der .htaccess-Datei ist Ihr Verzeichnis damit vor unerwünschten Zugriffen geschützt.

Zugriff beschränken

Es ist möglich, den Zugriff zu einem Verzeichnis aufgrund der IP-Adresse oder des Hostnamens einzuschränken. Dazu muss die Datei .htaccess im jeweiligen Verzeichnis, das beschränkt werden soll, zum Beispiel folgende Zeilen enthalten:

# Datennetz der Uni Wien - IPv4
Require ip 131.130. 77.80.
# Datennetz der Uni Wien - IPv6
Require ip 2001:62a:4::/48
# Hostname univie.ac.at
Require host univie.ac.at

 

Damit darf nur von Rechnern aus zugegriffen werden, deren IP-Adresse mit 131.130. oder 77.80. beginnt oder aus einer IPv6-Adresse der Universität Wien oder deren Hostname mit univie.ac.at endet. Alle anderen erhalten die Fehlermeldung: 403 Forbidden.

Einzelne Dateien schützen

Mit der <Files>-Direktive in der .htaccess-Datei ist es auch möglich, einzelne Dateien vor dem Zugriff aus dem Internet zu schützen.

Beispiel:

<Files "config.php">
   Require all denied
</Files>

Inhalt eines Verzeichnisses auflisten

Um eine automatische Auflistung des Inhalts eines Verzeichnisses, das kein index.html, index.PHP oder index.CGI (abhängig vom gewählten Webspace) enthält, zu erhalten, müssen Sie nur Folgendes in die Datei .htaccess des Verzeichnisses eintragen:

Options +Indexes
IndexIgnore *.gif datei.txt

Nach dem optionalen IndexIgnore können Sie Dateien und/oder Datei-Endungen angeben, die von der Auflistung ausgeschlossen sind.

Danach wird nach Aufruf des Verzeichnisses in Ihrem Browser der Inhalt in Listenform angezeigt.

 Hinweis

In diesem Ordner darf sich keine Datei index.html, index.PHP oder index.CGI Datei (je nach angelegtem Webspace) befinden. Sollte dies doch der Fall sein, wird die index-Seite anstatt der Liste angezeigt.

Eigene MIME-Typen definieren

Mit Hilfe der Datei .htaccess können auch zusätzliche MIME-Typen definiert werden. Das heißt anhand der Endung des Dateinamens stellt der Server fest, um welche Art von Datei es sich handelt und schickt entsprechende Informationen an den Browser.

Je nach Konfiguration des Browsers kann dann eine eigene Applikation gestartet, ein Plug-in im Browser aktiviert oder die Datei gespeichert werden. Eine große Anzahl von MIME-Typen sind vordefiniert. Durch entsprechende Direktiven können neue Typen definiert oder bestehende Typen umdefiniert werden. Etwa:

AddType application/x-wordperfect .wpi
AddType text/html .html

Mit der letzten Einstellung wird das Server-Parsing von HTML-Dokumenten unterbunden, der MIME-Typ ist nicht mehr text/x-server-parsed-html.

Die beschriebenen Einträge können in einer .htaccess-Datei auch kombiniert werden.

URLs via mod_rewrite umschreiben

Beispiel 1

Das Institut für Pugilistik hat eine Webseite, die unter pugilistik.univie.ac.at erreichbar ist. Dort hat sich im Startverzeichnis die HTML-Datei alteseite.html geändert in neueseite.html.

RewriteEngine On
RewriteBase "/"
RewriteRule "^alteseite\.html$" "neueseite.html" [R=301,L]

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

Beispiel 2

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

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

Dadurch wird irgendwas.html zu ?q=irgendwas.

 Hinweis

Es ist möglich mit einer allgemeinen mod_rewrite-Anweisung einen vorhandenen Shibboleth-Verzeichnisschutz außer Kraft zu setzen. Wenn Sie Shibboleth einsetzen, beachten Sie das "Shibboleth.sso"-Verzeichnis von der Zugriffsbeschränkung auszunehmen.

Beispiel: RewriteCond definiert eine Bedingung, von der abhängig gemacht wird, ob die folgende RewriteRule-Regel ausgeführt wird oder nicht.

RewriteEngine On
RewriteBase "/"
RewriteCond "%{REQUEST_URI}" "!^Shibboleth.sso"
RewriteRule "^(.*)$" "https://pugilistik.univie.ac.at/$1" [R=301,L]

URLs mittels Redirect weiterleiten

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

RewriteEngine On
RewriteBase "/"

RedirectPermanent "/alteseite.html" "https://pugilistik.univie.ac.at"