Kontakt aufnehmen

Apache: Verzeichniseinstellungen

Mit dem Apache Server lassen sich sehr gut umfangreiche Verzeichniseinstellungen tätigen. Wie das ganze funktioniert wird in diesem Kapitel vorgestellt. Wie einzelne Verzeichnise geschützt werden, folgt ausführlich im Kapitel zum Thema Sicherheit ausführlich beschrieben.

<Directory>

Mit dem Directory-Container können Einstellungen auf ein bestimmtes Verzeichnis im Systempfad getätigt werden. Sollte dieses Verzeichnis nicht unterhalb des DocumentRoot liegen muss es mit Alias in das DocumentRoot eingegliedert werden. Zusätzlich können bei der Pfadangabe Regular Expressions verwendet werden.

Alias /domain1/ /usr/local/domain1/htdocs/
<Directory /usr/local/domain1/htdocs>
   # ... Einstellungen für das Verzeichnis ...
</Directory>

<Location>

Der Location-Container entspricht dem Directory-Container mit dem Unterschied, dass kein Verzeichnis des Dateisystems sondern eineURL(also virtuelles Verzeichnis) benannt wird.

<Location /abc>
# ... Einstellungen für das Verzeichnis http://hostname/abc ...
</Location>

<File>

Der File-Container bezieht sich, wie der Name schon sagt, auf bestimmte Dateien innerhalb des DocumentRoot oder der Container <Location> und <Directory>. Mit Ihm können Konfigurationen für Dateien angelegt werden.

<File *.shtml>
  Option Include
  Order deny,allow
  deny from all
  allow from *.domain1.org
</File>

Dies würde allen Usern die Ihre Rechner in der domain1.org haben den Zugriff auf shtml Dateien erlauben.

Alias

Mit Alias kann ein Verzeichnis das außerhalb des DocumentRoot liegt in die Dokumentenstruktur eingebunden werden. Und mit <Location> können dann dort Einstellungen getätigt werden.

# Syntax: Alias Verzeichnisname Pfad-zum-reelen-Verzeichnis
Alias /secured /usr/local/sicherheitsbereich
<Location /secured>
   # ... Einstellungen ...
</Location>

DirectoryIndex

Mit dem DirectoryIndex wird bestimmt nach welcher Datei der Webserver suchen soll wenn nur ein Verzeichnis aber keine Datei angefordert wird (also www.meinserver.de/abc/ z.B.).

DirectoryIndex index.html index.html.var index.php index.shtml

AllowOverride

Mit dieser Direktive wird bestimmt wie der Apache Webserver mit externen Konfigurationsdateien umgehen soll. Dieses betrifft nicht die per Include eingebundenen Dateien sondern .htaccess-Dateien mit denen der Apache zusätzlich konfiguriert werden kann. Die Möglichkeiten der Einstellungen sind durch die folgenden Parameter auf bestimmte Bereiche beschränkt:
None - Deaktiviert die Verwendung von externen Konfigurationsdateien
All - Aktiviert alle Einstellungen die in externen Konfigurationsdateien erlaubt sind
AuthConfig - Aktiviert Authentifizierungseinstellungen (AuthType)
FileInfo - Aktiviert Einstellungen auf gespeicherte Dateien (ErrorDocument)
Indexes - Aktiviert Einstellungen des Verzeichnisindexes (AddIcon)
Limit - Aktiviert Zugriffseinstellungen. (Allow, Deny)
Options - Aktiviert Einstellungen für Verzeichnisverhaltensweisen (Options)

Options

Die Direktive Options bestimmt die Einstellungen die das Verhalten von Verzeichnissen zuständig sind. Damit kann zum Beispiel ein automatischer Index in einem Bilderverzeichnis und SSI für bestimmte Verzeichnisse an oder abgeschaltet werden. Folgende Optionen sind möglich:
None - Keine Option für das entsprechende Verzeichnis wird gesetzt
All - Die Optionen ExecCgi, FollowSymLinks, Includes und Indexes sind eingeschaltet
ExecCgi - Erlaubt die Ausführung von CGI Skripten in dem Verzeichnis
FollowSymLinks - Unter Linux/Unix wird einem Symbolischen Link im DocumenRoot gefolgt
SymLinksIfOwnerMatch - Dieselbe Option wie FollowSymLinks nur mit dem Zusatz das nur dem Link gefolgt wird wenn die Besitzrechte von Link und Ziel identisch sind
Includes - Erlaubt die Ausführung von SSI
IncludesNoExec - Erlaubt die Ausführung von SSI , verbietet die Einbindung von Skripten (#include) und die Ausführung von externen Programmen (#exec)
Indexes - Bestimmt ob ein Verzeichnisindex bei fehlender Indexdatei angezeigt werden soll oder nicht (bei nein wird ein 403 Statuscode zurückgesendet)
MultiViews - Damit erzeugt der Apache eine alternative Liste der verfügbaren Dateien, wenn die angeforderte Datei nicht vorhanden ist. Dies kann dazu genutzt werden um sehr leicht mehrere Sprachen einer Webseite zu erzeugen

Order, Allow, Deny

Mit Order läßt sich einstellen in welcher Reihenfolge die Direktiven Allow und Deny abgearbeitet warden. Mögliche Optionen sind allow,deny | deny,allow | Mutual-failure (kein Leerzeichen nach dem Komma!). Allow,deny erlaubt erst den Zugriff und schränkt ihn anschließend ein. Dies kann genutzt werden um bestimmte Clients auszusperren, etwa Suchroboter. Deny,allow sperrt erst den Zugriff und erlaubt dann einzelnen Clients den Zugriff. Im Intranet eine Firma kann somit der Zugriff für alle gesperrt werden und wird dann für den Einkauf wieder geöffnet. Mutual-failure ist identisch mit allow,deny aber erlaubt nur Clients den Zugriff die bei allow erlaubt sind und nicht in deny stehen.
Die Direktiven Allow und Deny funktionieren dabei nach der gleichen Syntax: Angegeben wird eine IP, IPv6, Hostname oder Teile daraus. Außerdem können Umgebungsvariablen verwendet werden. Trifft ein Fall auf den jeweiligen Clienten zu wird der Zugang erlaubt bzw. verwehrt. Beispiel:

Order allow,deny
allow from all
deny from .googlebot.com
# erlaubt den Zugriff aller Clients mit der 
# Ausnahme von *.googlebot.com.
Order deny,allow
deny from all
allow from .domain1.de
# verbietet allen den Zugriff und erlaubt ihn von 
# Clients der domain1.de.

.htaccess, AccessFileName

Mit AccessFileName kann festgelegt werden in welcher Datei nach Verzeichniskonfigurationen gesucht wird (siehe auch AllowOverride). Standardmäßig lautet diese .htaccess (Punkt-htaccess; kein Dateiname, nur Suffix) und wird durch eine entsprechende <File> Direktive vor unerlaubtem Zugriff geschützt. In der Datei können die Einstellungen angegeben werden die über AllowOverride erlaubt sind. Um ein Verzeichnis zu schützen kann folgende .htaccess Datei verwendet werden.

#Einstellung in der httpd.conf
AccessFileName .htaccess
<Files ~ "^.ht">
  Order allow,deny
  Deny from all
</Files>

#Inhalt von .htaccess
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /usr/local/apache2/conf/.htpasswd
require valid-user

Damit wird das Verzeichnis in dem sich die .htaccess befindet geschützt. Es wird ein User und ein Passwort benötigt. Diese Daten entnimmt der Webserver der Datei .htpasswd.

.htpasswd

Diese Datei enthält eine Liste bekannter User mit Ihren Passwörtern. Sie kann mit dem Tool htpasswd oder htpasswd.exe erzeugt werden welches sich im bin Verzeichnis des Apache Webservers findet.

steffen:$apr1$Nc/.....$U4gmrmy1lx/3mBlCx4JJ0.
root:$apr1$Tr/.....$uLleeTRsGId08332E4Xyo1
chef:$apr1$is/.....$CYOrUXYjHZL6CeKdBpvVJ1

So könnte der Inhalt einer Passwortdatei aussehen.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Virtuelle Server

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern