Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


SSI

Installation/Konfiguration ] Status/Info ] UserDir ] Virtuelle Hosts ] Authentifizierung ] CGI ] mod_perl ] PHP ] [ SSI ] SSL ] WebDAV ] Log-Dateien ] ht://Dig ]


Hinter dem Begriff: SSI (Server Side Includes) steht ein Mechanismus, durch den ein Dokument vor der Auslieferung an einen Browser vom Apache auf Include-Anweisungen hin untersucht wird. Beispielsweise kann ein Dokument über eine Include-Anweisung in ein anderes Dokument eingebunden werden, oder einem Dokument wird der Inhalt einer Umgebungsvariablen hinzugefügt. Auf der Client-Seite ist von all dem nichts zu bemerken.
Auf diese Weise lassen sich wiederkehrende Elemente wie Menüleisten, Fußzeilen oder Adressen ganz einfach in eine beliebig große Zahl von Seiten einbetten. Muss später etwas verändert werden, brauchen nur die ausgelagerte Elemente angepasst zu werden, nicht jedoch die Seiten selbst. SSI ist nicht vom Browser abhängig, da es vom Server verarbeitet wird. Ein SSI-Befehl ist folgendermaßen aufgebaut:

Syntax:   <!--#element attribut=wert attribut=wert ... -->

Die folgende SSI-Anweisung gibt z.B. den Inhalt der Variablen 'DATE_LOCAL' aus:

<!--#echo var="DATE_LOCAL" -->

Die Einbindung in HTML-Kommentare ist nötig, damit der Server SSI-Befehle erkennen kann. Außerdem werden so die Befehle nicht direkt auf der Seite angezeigt, selbst wenn der Server SSI nicht unterstützt.

Aktivierung von SSI

Standardmäßig ist der Apache2-Webserver unter Debian nicht für SSI konfiguriert, jedoch schon gewissermaßen vorbereitet. Damit SSL unterstützt wird, müssen die Konfigurationsdateien angepasst werden. Als erstes ist die Hauptkonfigurationsdatei: 'apache2.conf' anzupassen:

Auszug aus: /etc/apache2/apache2.conf (ca. ab Zeile: 202 und 343)

...

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

...
...

# To use server-parsed HTML files
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

<FilesMatch "\.shtml(\..+)?$">
    SetOutputFilter INCLUDES
</FilesMatch>

...

Damit auch Seiten wie: 'index.shtml' beim Wechseln in ein Verzeichnis sofort angezeigt werden, sollte der Direktive: 'DirectoryIndex' um 'index.shtml' erweitert werden.
Weiterhin sollten die Zeilen: 'AddType text/html .shtml' und 'AddOutputFilter INCLUDES .shtml' oberhalb der Zeile: '<FilesMatch "\.shtml(\..+)?$">' eingefügt werden. Mit den beiden Zeilen wird dem Webserver mitgeteilt, dass alle Dateien mit der Endung '.shtml' als html-Seiten behandelt werden und durch den SSI-Prozessor geparst werden.

Als nächstes ist festzulegen in welchen Verzeichnissen bzw. virtuellen Webs die Verwendung von SSI möglich sein soll. Dazu ist die entsprechende Konfigurationsdatei im Verzeichnis: '/sites-available' in diesem Beispiel die Datei: 'default' zu verändern:

Auszug aus: /etc/apache2/sites-available/default (ca. Zeile: 11)

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews +IncludesNOEXEC
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
        #       RedirectMatch ^/$ /apache2-default/
        </Directory>

...

Die eigentliche Freigabe geschieht mit der Options-Anweisung. Dabei gibt es drei Möglichkeiten:

  • Mit der Option '-Include' oder 'None' werden keine SSL-Anweisungen interpretiert.
  • Mit der Option '+Includes' werden alle SSL-Anweisungen interpretiert.
  • Mit der Option 'IncludesNOEXEC' werden alle SSL-Anweisungen mit Ausnahme der EXEC-Anweisungen interpretiert.

Als letzter Schritt ist das Modul: 'include', welches für SSI zuständig ist zu aktivieren. Am einfachsten kann dieses mit auf der Kommandozeile mit:

a2enmod include

erledigt werden. Der Apache-Server ist daraufhin neu zu starten.

Anmerkungen

Um zu überprüfen ob der Web-Server nun SSI versteht, sollte man eine kleine Testdatei erzeugen. Diese Testdatei sollte die Endung: '.shtml' besitzen und in ein SSI-fähiges Verzeichnis auf dem Web-Server eingebracht werden. Hier ein kleines Beispiel mit SSI:

SSI-Testprogramm: printenv.shtml

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.72 [en] (WinNT; I) [Netscape]">
   <title>SSI-Testpage -printenv-</title>
</head>
<body>
<tt>SSI-Testpage -printenv-<br>
=======================</tt>
<pre><!--#printenv --></pre>
</body>
</html>

Bei der Testdatei handelt es sich um eine einfache html-Datei die nur eine parameterlose SSI-Anweisung: ('<!--#printenv -->') enthält.
Durch Aufruf mittels Browser mit: 'http://<localhost>/printenv.shtml' sollten alle Variablen und deren Werte, die per SSI verfügbar sind, ausgegeben werden.

Diese Anweisung: ('<!--#printenv -->') erleichtert zwar das Debuggen, enthält aber auch Informationen für mögliche Angreifer. Diese Anweisung sollte daher nicht in Dokumenten enthalten sein, die öffentlich zugänglich sind.

Weitere Infos

Homepage: Apache Software Foundation http://www.apache.org/
Dokumentation zum Apache HTTP Server Version 2.0 http://httpd.apache.org/docs-2.0/
Apache Module mod_include http://httpd.apache.org/docs-2.0/mod/mod_include.html
Apache Tutorial: Introduction to Server Side Includes http://httpd.apache.org/docs/2.2/howto/ssi.html
SSI - Server Side Includes http://de.selfhtml.org/servercgi/server/ssi.htm
Apache Week: Using Server Side Includes http://www.apacheweek.com/features/ssi
Dokumentation zu: Server Side Includes (SSI) http://www.netztrainer.de/ssi/ssi.html
Dokumentation: 'Server-parsed html' http://www.mnieberg.de/tips/server-parsed.htm

Home ] Nach oben ] Installation/Konfiguration ] Status/Info ] UserDir ] Virtuelle Hosts ] Authentifizierung ] CGI ] mod_perl ] PHP ] [ SSI ] SSL ] WebDAV ] Log-Dateien ] ht://Dig ]

letzte Änderung: 28. Januar 2008

 

Copyright © 2004 Norbert Eusterholz