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
In WordPress-Webspaces werden einige Zugriffsschutz-Funktionen nicht unterstützt. Daher empfehlen wir die von WordPress erstellte .htaccess-Datei nicht zu verändern.
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:
- Erstellen Sie eine Text-Datei (textdatei.txt). Am besten mittels Notepad (nicht mit Word, OpenOffice etc.).
- Fügen Sie den Inhalt ein.
- 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:
- Tragen Sie jeden Nutzer*innennamen mit dem dazugehörigen Passwort in die Zeilen ein.
- Klicken Sie auf Passwörter generieren.
- 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. 78.104.
# Datennetz der Uni Wien - IPv6
Require ip 2001:62a::/31
# Uni Wien-Hostname univie.ac.at
Require host univie.ac.at
Damit darf nur von Rechnern aus zugegriffen werden, deren IPv4-, oder IPv6-Adresse aus dem kommt Pool der Universität Wien kommt oder deren Hostname mit univie.ac.at endet. Alle anderen erhalten die Fehlermeldung: 403 Forbidden.
Hinweis
Kommentare mit "#" davor dürfen nur in einer eigenen Zeile eingetragen werden.
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"