info@a-coding-project.de

Apache: Wichtige Module

Im folgenden wollen wir Ihnen noch die weiteren wichtigen Module vorstellen, deren Einsatz sich durchaus lohnen kann.

Mod_UserDir

Mit dem Modul mod_userdir lässt sich sehr einfach für verschiedene User Platz auf dem Webserver zur Verfügung stellen. Dabei braucht dies nur einmal Konfiguriert werden und alle Userdirectory die auf dem System liegen werden über den Webserver nach außen zugänglich gemacht. Beispiel:

LoadModule userdir_module modules/mod_userdir.so
UserDir "/usr/local/apache2/users/*"
<Directory /usr/local/apache2/users/*>
  Options -Includes
  Order deny,allow
  deny from all
  allow from lokalesnetz.lan
</Directory>

Anschließend gibt es für alle Verzeichnisse Usernamen innerhalb von /usr/local/apache2/users/ einen eigenen Bereich auf dem Server der dann unter http://localhost/~verzeichnisname zu erreichen ist. Durch <Directory /usr/local/apache2/users/*> wird die Einstellung gesetzt die kein SSI und nur den Zugriff aus dem lokalen Netz (LAN) erlaubt. Das Userverzeichnis lässt sich auch hervorragend an die vorhandene Struktur anpassen, etwa mit UserDir /home/*/public_html. Damit haben alle vorhanden Systemuser einen Webbereich.

Mod_WebDav

Das Modul mod_webdav stellt DAV (Web-based Distributed Authoring and Versioning) für den Apache Webserver zur Verfügung. Es wird damit eine Freigabe nach dem DAV-Standard erzeugt, auf die mit einem DAV Client (etwa Adobe GoLive) zugegriffen werden kann. Auch der normale Windows Explorer kann darauf zugreifen. Bei der Benutzung von WebDAV sollte das entsprechende Verzeichnis unbedingt mit Username und Passwort geschützt werden oder noch besser ist die Verwendung von einem virtuellen Host mit SSL und in Verbindung mit mod_auth_digest.

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
DavLockDB /usr/local/apache2/webdav
Alias /dav /usr/local/apache2/htdocs
<Location /dav>
  Dav On
  ForceType text/plain
</Location>

Mod_auth_basic und mod_auth_digest

Mit dem Modulen mod_auth_basic und mod_auth_digest lässt sich eine Authentifizierung über HTTP realisieren. Dazu sendet der Server den Status 401 und verlangt Authentifizierung. Stimmt dieses mit den Einträgen in den Passwortfiles überein lässt der Server den Client in das Verzeichnis. Folgende Direktiven sind dann verfügbar:
AuthGroupFile - definiert die Datei in der Benutzergruppen aufgelistet sind. In dieser Datei steht der Gruppenname gefolgt von einem Doppelpunkt und den zugehörigen Gruppenmitglieder.
AuthUserFile - definiert die Datei in der die Benutzer und dazugehörigen Passwörter gespeichert sind. Diese lässt sich mit dem Programm htpasswd im bin Verzeichnis erzeugen.
Require - definiert autorisierte User die Zugriff auf das geschützte Verzeichnis haben. Mit "Require User USERNAME" und "Require Group GROUPNAME" kann der Zugriff für einzelne User und Gruppen festgelegt werden. Bei "Requiere valid-user" wird nur ein User benötigt der in AuthUserFile existiert.
AuthName - definiert den Namen des geschützten Bereiches
AuhType - bestimmt die Art der Authentifizierung. Dabei gibt es die Methoden Basic und Digest. Bei der Basic Methode werden die Daten im Klartext übertragen, deshalb sollte diese Methode nur mit SSL verwendet werden. Digest verschlüsselt den Namen und das Passwort während der Übertragung so das Angreifer diese nicht im Klartext mitlesen können. Digest erfordert das Modul mod_auth_digest und hat zusätzliche Konfigurationseinstellungen.
AuthDigestAlgorithm - definiert die Art der Verschlüsselung. Im Moment wird nur MD5 vollständig unterstützt.
AuthDigestDomain - damit können mehrere Bereiche definiert werden für den eine Anmeldung gültig ist
AuthDigestFile - wie schon AuthUserFile stehen hier die Benutzer mit den dazugehörigen Passwörter drinnen. Zur Erzeugung gibt es das Programm htdigest im bin Verzeichnis.
AuthDigestGroupfile - wie schon AuthGroupFile werden hier die Gruppen definiert
Beispiel für Auth-Basic:

AuthType Basic
AuthName "Geschützter Bereich"
AuthGroupFile /usr/local/apache2/auth_files/Group_File
AuthUserFile /usr/local/apache2/auth_files/User_File
Require valid-user

#Die Datei GroupFile
Administratoren: Jens 
Mitarbeiter: Peter Paul

#Die Datei UserFile
Jens:$apr1$XD4.....$kSLA3HVQwIvCWxt6LaWjy1
Peter:$apr1$2E4.....$oxrobYMZQRQwwYomVUTfp1
Paul:$apr1$ME4.....$jWrrJXCtQia5oPEFw0mvi.

Beispiel für Auth-Digest:

AuthType Digest
AuthName "Geschützter Bereich"
AuthDigestDomain /secured 
AuthDigestDomain secured.domain1.org 
AuthDigestGroupFile /usr/loacl/apache2/auth_files/Digest_Group_File
AuthDigestUserFile /usr/local/apache2/auth_files/Digest_User_File

#Die Datei Digest_Group_File
Administratoren: Jens
Mitarbeiter: Peter Paul

#Die Datei Digest_User_File
Jens:Admin Bereich:c1941b1402a27bc115d3a2ab696b4b5b
peter:Einkaufsbereich:0880a0c0ce7ec965fb44126a13357889
paul:Einkaufsbereich:746cd89a48d0c90a65caeff7644dabfd

Für eine umfangreiche Userverwaltung empfiehlt sich das Modul mod_auth_dbm oder mod_auth_mysql nutzen. Diese benutzen zur Verwaltung der User und Gruppen eine Datenbank welche sich schneller nach den gewünschten Merkmalen durchsuchen lässt als eine Textdatei.

Mod_autoindex

Diese beiden Module erlauben die Gestaltung der automatisch generierten Indexseiten und alles was dazugehört. So lassen sich die Icons für verschiedene Dateitypen und auch die Beschreibung anpassen.
Die Direktive IndexOptions bestimmt das aussehen der Verzeichnisliste. Dafür gibt es umfangreiche Möglichkeiten, einige davon sind hier aufgelistet. Für alle Einstellungen lohnt sich einen Blick in die Apache-Manual.
FoldersFirst - Verzeichnisse werden vor Dateien aufgelistet (> Apache 2.0.23)
IconHeight= und IconWidth= - bestimmt die Größe der Icons
IconsAreLinks - Icons können angeklickt werden
ScanHTMLTitles - Titel-Angaben von HTML-Dateien werden in der Beschreibung angezeigt.
IgnoreCase - damit wird nicht zwischen Groß und Kleinbuchstaben bei der Sortierung unterschieden
Um Dateien mit AddIcon und AddAlt zuzuordnen gibt es dabei 3 Methoden.
1. Es wird die Datei direkt über die Erweiterung zu geordnet (*.psd).
2. Die Datei wird über das MIME-Encoding zugeordnet (x-gzip).
3. Die Datei wird über ihren MIME-Typ zugeordnet (text/html)
Wir gehen im Folgenden von der 1. Form aus. Dabei können aber fast alle Anweisungen auch mit ByEncoding und ByType genutzt werden. Also AddIcon, AddIconByEncoding und AddIconByType.
AddIcon bestimmt welches Icon bei für eine bestimmte Datei angezeigt werden soll. Dabei können auch mehrere Erweiterungen angegeben werden. Für leere Zeilen und Verzeichnisse gibt es die Platzhalter ^^DIRECTORY^^ und ^^BLANKICON^^
Mit AddAlt kann der Alternativtext für das Icon bestimmt werden.
AddDescription legt den Erklärungstext fest, der hinter dem Dateinamen steht.
DefaultIcon legt das standardicon für Dateien die nicht in AddIcon enthalten sind fest.
HeaderName sucht die angegebene Datei im Verzeichnis und zeigt sie über der Verzeichnisliste an.
ReadmeName sucht die angegeben Datei im Verzeichnis und zeigt sie unter der Verzeichnisliste an.
IndexIgnore bestimmt welche Dateien in der automatischen Liste angezeigt werden.

AddIcon icons/bild.gif *.psd *.gif *.jpg
AddIcons icon/folder.gif ^^DIRECTORY^^
AddAlt "Bilder" *.psd *.gif *.jpg
AddDescription "Grafikdateien" *.psd *.gif *.jpg
DefaultIcon icons/default.gif
HeaderName willkommen.html
ReadmeName readme.html
IndexIgnore .htaccess geheim.html 

Mod_Rewrite

Mit dem Modul Rewrite lassen sich umfangreiche Regeln zur Umschreibung von Webseiten definieren. Das ganze ist dabei so komplex das alleine die regulären Ausdrücke etliche Seiten umfassen würden. Deshalb hier nur einige grundlegende Erläuterungen und der Verweis auf die Apache-Manual und das Kapitel mod_rewrite dort. Ein einfaches Beispiel:

RewriteEngine On
RewriteRule /~([^/]+)/?(.*) users/$1/$2 
ReWriteCond %{HTTP_USER_AGENT } ^Mozilla.*
ReWriteRule ^/index.html /index_mozilla.html [R=permanent]
RewriteLog logs/rewrite.log

Die Direktiven haben dabei folgende Bedeutung:
ReWriteEngine - schaltet das Umschreibungsmodul ein oder aus
ReWriteRule - definiert eine Regel für die Umschreibung. Dabei wird ein Suchmuster angegeben und ein Muster mit dem das gefundene ersetzt wird. Das Suchmuster kann dabei mit regulären Ausdrücken geschrieben werden. Der Ersetzungsstring kann einfachen Text oder aber auch Variablen des regulären Ausdruckes enthalten. Wobei $1 für das erste Klammerpaar steht und $2 für das zweite Klammerpaar usw..
ReWriteCond - eine ReWriteCond ist eine Art Voraussetzung für eine ReWriteRule. In Verbindung damit kann zum Beispiel für User die einen Mozilla-Browser benutzen eine Umschreibung erfolgen.
ReWriteLog - bestimmt eine Log-Datei in der umgeschriebene URL's protokolliert werden.

Obiges Beispiel würde eine angeforderteURLhttp://domain1.org/~userX/index.html nach http://domain1.org/users/userX/index.html umleiten.

Weiterlesen: ⯈ SSL

Über uns

Stefan Wienströer

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

Auch interessant