.htaccess: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Zeile 49: Zeile 49:


Erstellen der neuen versteckten Zugriffsregelndatei ".htaccess" im zu schützenden Verzeichnis. Die Verwaltung der Nutzerzugriffe für das entsprechende Verzeichnis wird dann ab sofort durch den [[Apache HTTP Server]] erfolgen. Dabei werden folgende Parameter eingesetzt:
Erstellen der neuen versteckten Zugriffsregelndatei ".htaccess" im zu schützenden Verzeichnis. Die Verwaltung der Nutzerzugriffe für das entsprechende Verzeichnis wird dann ab sofort durch den [[Apache HTTP Server]] erfolgen. Dabei werden folgende Parameter eingesetzt:
* <b>AuthUserFile</b> verweist mit vollem Pfad auf den Standort der Passwortdatei (üblicherweise ".htpasswd").
 
* <b>AuthGroupFile</b> verweist mit vollem Pfad auf den Standort der Gruppenzugriffsdatei (üblicherweise ".htgroup"). Ist keine solche notwendig, kann der Wert auf "/dev/null" gesetzt werden.
{| class=wiki width=100%
* <b>AuthName</b> speichert einen benutzerdefinierte Zeichenkette, die bei Erscheinen des Authentifizierungsdialogs angezeigt wird.
! Parameter !! Beschreibung
* <b>AuthType</b> bestimmt die Authentifizierungsmethode. "Basic" nutzt die Standardauthentifizierung, welche zwar effektiven Passwortschutz bietet, aber nicht gegen Abhören schützt, da Passwörter hier unverschlüsselt gesendet werden. Zudem besteht kein Schutz gegen einen [[Brute Force-Angriff]].
|-
* <b>Limit</b> kontrolliert, welchen Benutzern Zugriff gewährt wird, welche Art von Zugang sie erhalten können (z. B. "GET", "POST", "PUT") und die Reihenfolge, in der diese Regeln ausgewertet werden. Die folgenden vier Direktiven ermöglichen eine genauere Zugriffskontrolle:
| <tt>AuthUserFile</tt> || Standort der Passwortdatei (üblicherweise ".htpasswd") mit voller Pfadangabe.
** <b>require</b> legt fest, welche Benutzer oder Gruppen auf das passwortgeschützte Verzeichnis zugreifen können. Gültige Eingaben sind ausdrücklich benannte Benutzer oder Benutzergruppen oder jeder gültige Benutzer, der in der Passwortdatei ".htpasswd" erscheint. Beispielsweise schränkt "Require user mik" den Zugriff auf den Benutzer "mik" ein.
|-
** <b>allow</b> kontrolliert, welche Rechner auf das passwortgeschützte Verzeichnis zugreifen können. Mit "allow from rechner1 rechner2" wird der Zugriff für die genannten Rechnern erlaubt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
| <tt>AuthGroupFile</tt> || Standort der Gruppenzugriffsdatei (üblicherweise ".htgroup") mit voller Pfadangabe. Ist keine solche notwendig, kann der Wert auf "/dev/null" gesetzt werden.
** <b>deny</b> kontrolliert, welche Rechner nicht auf das passwortgeschützte Verzeichnis zugreifen können. Mit "deny from rechner1 rechner2" wird der Zugriff für die genannten Rechnern gesperrt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
|-
** <b>order</b> kontrolliert die Reihenfolge, in welcher der Apache HTTP Server die Zugriffsregeln auswertet. Im Fall von "deny, allow" werden also zuerst die "deny"-Regeln ausgewertet.
| <tt>AuthName</tt> || Eine benutzerdefinierte Zeichenkette, die bei Erscheinen des Authentifizierungsdialogs angezeigt wird.
|-
| <tt>AuthType</tt> || Die Authentifizierungsmethode. "Basic" nutzt die Standardauthentifizierung, welche zwar effektiven Passwortschutz bietet, aber nicht gegen Abhören schützt, da Passwörter hier unverschlüsselt gesendet werden. Zudem besteht kein Schutz gegen einen [[Brute Force-Angriff]].
|-
| <tt>Limit</tt> || Angabe der zugriffsberechtigten Benutzer, welche Art von Zugang sie erhalten können (z. B. "GET", "POST", "PUT") und die Reihenfolge, in der diese Regeln ausgewertet werden. Die folgenden vier Direktiven ermöglichen eine genauere Zugriffskontrolle:
 
{| class=wiki
! Direktive !! Beschreibung
|-
| <tt>require</b> || Angabe der Benutzer oder Gruppen, die auf das passwortgeschützte Verzeichnis zugreifen können. Gültige Eingaben sind ausdrücklich benannte Benutzer oder Benutzergruppen oder jeder gültige Benutzer, der in der Passwortdatei ".htpasswd" erscheint. Beispielsweise schränkt "Require user mik" den Zugriff auf den Benutzer "mik" ein.
|-
| <tt>allow</tt> || Angabe der Rechner, die auf das passwortgeschützte Verzeichnis zugreifen können. Mit "allow from rechner1 rechner2" wird der Zugriff für die genannten Rechnern erlaubt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
|-
| <tt>deny</tt> || Angabe der Rechner, die nicht auf das passwortgeschützte Verzeichnis zugreifen können. Mit "deny from rechner1 rechner2" wird der Zugriff für die genannten Rechnern gesperrt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
|-
| <tt>order</tt> || Angabe der Reihenfolge, in welcher der Apache HTTP Server die Zugriffsregeln auswertet. Im Fall von "deny, allow" werden also zuerst die "deny"-Regeln ausgewertet.
|}
 
|}
 
Eine Konfiguration könnte wie folgt aussehen.


  $ <b>vi .htaccess</b>
  $ <b>vi .htaccess</b>

Version vom 6. August 2009, 08:55 Uhr

Die Datei .htaccess (engl. hypertext access, dt. Hypertext-Zugriff) ist eine Konfigurationsdatei, in der auf Webrechnern mit NCSA-kompatibler Webserver-Software (z. B. Apache HTTP Server) verzeichnisspezifische Einstellungen vorgenommen werden können. Beispielsweise lässt sich dort ein Zugriffsschutz für ein Verzeichnis oder einzelne Dateien einrichten. Aber auch Fehlerseiten oder interne Verknüpfungen ("rewrite rules") lassen sich hierüber einstellen, ohne den Webserver neu starten zu müssen: Änderungen in der Datei ".htaccess" treten sofort in Kraft. In diesen Dateien vorgenommene Einstellungen gelten im Gegensatz zu zentralen Konfigurationsdateien (z. B. "httpd.conf") nur für das Verzeichnis, in dem sie gespeichert sind, sowie allen Unterverzeichnissen. Sie können in den Unterverzeichnissen jedoch wieder überschrieben werden.

Konfiguration

Es gibt drei Konfigurationsdateien.

.htaccess Die Zugriffsdatei, die Zugriffsregeln (allow, deny), den Standort der Konfigurationsdateien, die Authentifizierungsmethode und anderes speichert.
.htgroup Die Gruppendatei, die Informationen über die Mitglieder einer Gruppe speichert. Die Datei wird nur benötigt, wenn eine Gruppenzugriffskontrolle implementiert werden soll.
.htpasswd Die Passwortdatenbank, welche die Paare aus Benutzername und Passwort speichert.

Damit die ".htaccess"-Dateien Einstellungen verändern dürfen, muss der Apache HTTP Server in der Datei "/etc/apache2/sites-available/default" entsprechend konfiguriert werden.

$ sudo vi /etc/apache2/sites-available/default
<Directory /var/www/>
  Options       Indexes FollowSymLinks MultiViews
  AllowOverride AuthConfig
  Order         allow,deny
  allow         from all
</Directory>

Nach einem Neustart von Apache funktionieren nun die selbst erstellten ".htaccess"-Dateien.

$ sudo /etc/init.d/apache2 restart

Anwendungsbeispiele

Standardauthentifizierung

Die Passwortdaten werden aus Sicherheitsgründen nicht in der Datei ".htaccess" gespeichert, sondern in einer separaten Datei. Diese Datei darf sich auch ausserhalb der öffentlich zugänglichen Webverzeichnisse befinden. In einem geeigneten Verzeichnis wird mit htpasswd (unter Umständen "htpasswd2") eine versteckte neue Passwortdatei (hier ".htpasswd") mit dem Benutzer "mik" erzeugt.

$ cd /home/mik
$ /usr/bin/htpasswd -c .htpasswd mik
New password: 
Re-type new password: 
Adding password for user mik

Für jeden weiteren Benutzer wird die Eingabe ohne den Schalter "-c" wiederholt (der steht für "create" und erzeugt die Datei).

$ /usr/bin/htpasswd .htpasswd abc

Die Passwortdatei (hier ".htpasswd") ist eine Textdatei, welche in zwei durch Doppelpunkte getrennte Felder aufgeteilt ist, den Benutzernamen und das verschlüsselte Passwort:

$ more /home/mik/.htpasswd
mik:fGG7koK2Isa6s

Erstellen der neuen versteckten Zugriffsregelndatei ".htaccess" im zu schützenden Verzeichnis. Die Verwaltung der Nutzerzugriffe für das entsprechende Verzeichnis wird dann ab sofort durch den Apache HTTP Server erfolgen. Dabei werden folgende Parameter eingesetzt:

Parameter Beschreibung
AuthUserFile Standort der Passwortdatei (üblicherweise ".htpasswd") mit voller Pfadangabe.
AuthGroupFile Standort der Gruppenzugriffsdatei (üblicherweise ".htgroup") mit voller Pfadangabe. Ist keine solche notwendig, kann der Wert auf "/dev/null" gesetzt werden.
AuthName Eine benutzerdefinierte Zeichenkette, die bei Erscheinen des Authentifizierungsdialogs angezeigt wird.
AuthType Die Authentifizierungsmethode. "Basic" nutzt die Standardauthentifizierung, welche zwar effektiven Passwortschutz bietet, aber nicht gegen Abhören schützt, da Passwörter hier unverschlüsselt gesendet werden. Zudem besteht kein Schutz gegen einen Brute Force-Angriff.
Limit Angabe der zugriffsberechtigten Benutzer, welche Art von Zugang sie erhalten können (z. B. "GET", "POST", "PUT") und die Reihenfolge, in der diese Regeln ausgewertet werden. Die folgenden vier Direktiven ermöglichen eine genauere Zugriffskontrolle:
Direktive Beschreibung
require Angabe der Benutzer oder Gruppen, die auf das passwortgeschützte Verzeichnis zugreifen können. Gültige Eingaben sind ausdrücklich benannte Benutzer oder Benutzergruppen oder jeder gültige Benutzer, der in der Passwortdatei ".htpasswd" erscheint. Beispielsweise schränkt "Require user mik" den Zugriff auf den Benutzer "mik" ein.
allow Angabe der Rechner, die auf das passwortgeschützte Verzeichnis zugreifen können. Mit "allow from rechner1 rechner2" wird der Zugriff für die genannten Rechnern erlaubt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
deny Angabe der Rechner, die nicht auf das passwortgeschützte Verzeichnis zugreifen können. Mit "deny from rechner1 rechner2" wird der Zugriff für die genannten Rechnern gesperrt. Anstelle des Rechnernamens ist auch eine vollständige oder partielle IP-Adresse möglich.
order Angabe der Reihenfolge, in welcher der Apache HTTP Server die Zugriffsregeln auswertet. Im Fall von "deny, allow" werden also zuerst die "deny"-Regeln ausgewertet.

Eine Konfiguration könnte wie folgt aussehen.

$ vi .htaccess
AuthAuthoritative Off
AuthName          mik
AuthType          Basic
AuthUserFile      /home/mik/.htpasswd
require           valid-user
#<Files *.php>
#Require user mik
#</Files>

Eine andere Konfiguration könnte wie folgt aussehen.

AuthUserFile  /home/mik/.htpasswd
AuthGroupFile /dev/null
AuthName      mik
AuthType      Basic
<Limit GET POST>
require user mik
</Limit>

Soll eine ganz bestimmte Datei auf diesem Wege geschützt werden, so kann folgender Trick angewendet werden. Die Datei "xyz.php" wird dabei geschützt, fordert die Eingabe von Benutzername und Passwort und leitet den Nutzer dann auf das ungeschützte Skript weiter.

<meta http-equiv="refresh" content=0; url=/script/xyz.php">

Digest-basierte kryptographische Authentifizierung

In diesem Fall können mit Sniffern daherkommende Angreifer keine Passwörter ernten.

Erzeugen einer neuen Passwortdatenbank mit MD5-Digest-Authentifizierung unter dem Namen ".htdigest" mit dem Benutzer "mik".

$ cd /home/mik/public_html
$ /usr/sbin/htdigest2 -c .htdigest [AuthName-in-.htpasswd] mik

Anpassung der Zugriffsregelndatei.

$ vi .htaccess
AuthUserFile /home/mik/public_html/.htpasswd
AuthGroupFile /dev/null
AuthDigestFile /home/mik/public_html/.htdigest
AuthName mik
AuthType Digest
<Limit GET POST>
require user mik
</Limit>

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen