====== Zugriffskontrolle mittels .htaccess ======
===== Die Funktionsweise von .htaccess-Anweisungen =====
.htaccess-Dateien sind versteckte Dateien, welche seitens des Apache-Webservers vor dem eigentlichen Seitenaufruf verarbeitet werden. Die hier hinterlegten Anweisungen können, je nach Serverkonfiguration, das Verhalten des Webservers maßgeblich verändern; so können .htaccess-Dateien unter anderem ein Rewriting mittels mod_rewrite definieren, aber auch Anweisungen zum Caching (Expires) geben.
===== Passwort-Schutz für Dateien und Verzeichnisse =====
Innerhalb des Dokumentenstammverzeichnisses (Beispiel: ''/web/username/www/subscriptionname'') des betreffenden Webspace-Abonnements kann eine .htaccess-Datei angelegt werden, um den Zugriff auf eine Datei oder den gesamten Ordner einzuschränken.
Hierfür kann eine vorbereitete .htaccess-Datei per SFTP hochgeladen werden.
**Beispiel:**
AuthName "Protected Directory"
AuthType Basic
AuthUserFile /web/username/files/.htpasswd
require valid-user
Nach der Erstellung der .htaccess-Datei kann in einem durch den Browser nicht erreichbaren Verzeichnis, beispielsweise dem ''files''-Verzeichnis, eine Datei angelegt werden, welche die eigentlichen Authentifizierungsinformationen enthält. In diesem Beispiel wird diese Datei ''.htpasswd'' genannt.
==== Erstellen der Passwort-Datei über die Shell ====
Unter Linux-basierenden Systemen kann der Passwort-Hash bequem über die Shell generiert werden.
htpasswd -c .htpasswd username
Die Routine erfragt ein gewünschtes Passwort für den hier angegebenen Nutzer ''username''; dieses Passwort wird nun in der Datei ''.htpasswd'' in Form eines Hashes gespeichert.
Unter login.gwdg.de weicht der Befehl leicht vom Standard ab:
htpasswd2 -c .htpasswd username
**Beispiel:**
username:laA94KcLcE53
==== Nutzen von Online-Tools zur Erstellung einer .Htpasswd-Datei ====
Sollte keine Shell zur Verfügung stehen, so bietet die GWDG eine Möglichkeit zur Erstellung einer ''.htpasswd''-Datei:
[[http://tools.vweb.gwdg.de/generator | htaccess/htpasswd-Generator]]
**Beispiel:**
username:laA94KcLcE53
===== Zugriff auf IP-Adressen oder IP-Bereiche beschränken =====
Um den Zugriff auf eine bestimmte IP-Adresse oder einen IP-Bereich zu beschränken, kann dem Apache-Webserver eine entsprechende Anweisung gegeben werden:
**Beispiel (einzelne IP/Apache 2.2):**
order deny,allow
deny from all
allow from 123.123.123.123
**Beispiel (IP-Bereich/Apache 2.2)**
order deny,allow
deny from all
allow from 123.123.123.0/24
**Beispiel (einzelne IP/Apache 2.4)**
Require ip 123.123.123.123