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 desDocumentRoot
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>
DerLocation
-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>
DerFile
-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>
Alias
MitAlias
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 demDirectoryIndex
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 DirektiveOptions
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
gefolgtSymLinksIfOwnerMatch - 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
MitOrder
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
MitAccessFileName
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
.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
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Virtuelle Server
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project