Keywords: main

Subsections

- 2.1 Apache 1.2
  - 2.1.1 Installation
    - Installation zum Start des Servers beim Booten
  - 2.1.2 Konfiguration
    - Änderungen für die Standard-Konfiguration
  - 2.1.3 Apache & SSL
    - 2.1.3.1 Installation
- 2.2 Roxen 1.0
  - 2.2.1 Installation
    - Beenden der Installation
    - Installation zum Start des Servers beim Booten
  - 2.2.2 Konfiguration
    - Einrichten eines virtuellen Servers

# 2 Web-Server

Einer der wichtigsten Grundgedanken war es unter anderem, festzustellen in wie weit die Anbindung von Datenbanken an das Internet Web-Server unabhängig ist. Deshalb wurden für die Tests die folgenden beiden Web-Server ausgewählt.

- Apache 1.2
- Roxen 1.0

Es stellte sich jedoch bald heraus, daß die meisten frei verfügbaren Datenbanken nebst Web-Interfaces speziell auf den Web-Server Apache zugeschnitten sind. Aus diesem Grund wird in den weiteren Kapiteln bei der Installations- und Konfigurationsbeschreibung der Datenbanken und Web-Interfaces nur noch auf den Apache Web-Server eingegangen.

Parallel dazu stellte Christoph Metten[1] bei der Ausarbeitung seiner Diplomarbeit fest, daß der Web-Server Roxen zum Teil große Probleme mit CGI-Programmen hatte.

Aus diesen Gründen ist die Untersuchung auf Unabhängigkeit schon zu Beginn eingestellt worden. Der Web-Server Roxen wurde außerdem nicht mehr weiter verwendet. Das Kapitel 2.2 geht trotzdem auf die Installation von Roxen bis zur Entscheidung ``pro Apache'' ein.

# 2.1 Apache 1.2

Einer der am häufigsten eingesetzten Web-Server unter UNIX ist der Web-Server Apache. Deshalb, und weil die meisten WWW-Interfaces speziell auf den Apache zugeschnitten wurden (sie lassen sich zum Teil direkt als Apache-Module kompilieren), kommt hier vorwiegend der Web-Server Apache in seiner Version 1.2 zum Einsatz.

Die Installation des Servers gestaltet sich je nach verwendetem Modul und Datenbank etwas anders. Daher wird im Weiteren nur die Standard-Installation von Apache 1.2 beschrieben. Auf eine Beschreibung der Installation, Konfiguration und Wirkungsweise der einzelnen im Paket enthaltenen Module wird hier verzichtet. Diese kann im Online-Manual[4] von Apache unter http://www.apache.org nachgelesen werden.

Soll der Web-Server mit einem Datenbank-Web-Interface installiert werden, so beachte man die Querverweise (gekennzeichnet durch ) auf die Installationsbeschreibungen der einzelnen Datenbank-Web-Interfaces.

## 2.1.1 Installation

Source-Quellen: http://www.apache.org
Die Standard-Installation des Apache Web-Servers erfolgt in folgenden Schritten:

- Entpacken der Sourcen mit
  `tar xvfz apache_1.2.3.tar.gz`

Danach muß der Web-Server zum Kompilieren vorkonfiguriert werden. Dies ist deshalb notwendig, da Apache einige optionale Module unterstützt, von denen der Kompiler wissen muß, welche er mitkompilieren soll. Außerdem müssen einige plattformabhängige Einstellungen getroffen werden.

Hierfür sind folgende Schritte durchzuführen:

- Wechseln in das Apache Source-Code Verzeichnis
  `cd apache_1.2.3/src`
- Kopieren der Datei Configuration.tmpl
  `cp Configuration.tmpl Configuration`
- Anschließend kann die Datei Configuration entsprechend den Wünschen des Benutzers angepasst werden. Sie gliedert sich in drei große Abschnitte:
  Makefile configuration:
  Für den Einsatz des Apache Moduls PHP/FI sind die unter Kapitel 4.2.3 (S. ) beschriebenen Änderungen vorzunehmen.
  Rules configuration:
  Module configuration:
  Änderungen für PHP/FI siehe im oben genannten Kapitel.
  Für die Standard-Installation wurde nichts geändert.
- Wenn der Apache Web-Server in ein anderes Directory als /usr/local/ installiert werden soll, dann sind in der Datei ./httpd.h noch weitere Änderungen vorzunehmen. Diese sind in unserem Beispiel:
  das `HOME`-Verzeichnis (oder `ROOT`-Verzeichnis) des Web-Servers
  `#define HTTPD_ROOT "/usr/local/etc/httpd"`
  ändern in
  `#define HTTPD_ROOT "/soft/apache-1.2/bin/httpd"`
  und das `ROOT`-Verzeichnis für die HTML-Dateien
  `#define DOCUMENT_LOCATION "/usr/local/etc/httpd/htdocs"`
  ändern in
  `#define DOCUMENT_LOCATION "/soft/apache-1.2/html"`
- Soll das W3-Auth Modul von Mini SQL verwendet werden, so ist der Source-Code an dieser Stelle wie in Kapitel 4.1.7 (S. ) erklärt zu patchen.
- Im nächsten Schritt kann das "Configure" Skript ausgeführt werden:
  `./Configure`
  Es generiert eine neue Versionen des Makefile und von modules.c
- zu guter Letzt wird der Server mit `make` kompiliert.

Leider befindet sich das Binary des Servers nach dem Kompilieren im Source-Code-Directory und kann nicht wie gewohnt mit `make install` in ein vordefiniertes Directory installiert werden, um von dort jederzeit über die Kommandozeile gestartet werden zu können.

Darum wurde der Server händisch in das Verzeichnis /soft/apache-1.2 installiert. Dies geschah mit:

> `cd /soft
> mkdir apache-1.2
> cd apache-1.2
> mkdir bin
> mkdir conf
> mkdir html
> mkdir logs
> cd html
> mkdir icons
> cp /usr/src/packages/apache_1.2.3/icons/* ./icons
> cd /usr/src/packages/apache_1.2.3/src
> cp ./httpd /soft/apache-1.2/bin/
> cd ..
> cd ./conf
> cp ./access.conf-dist /soft/apache-1.2/conf/access.conf
> cp ./http.conf-dist /soft/apache-1.2/conf/http.conf
> cp ./srm.conf-dist /soft/apache-1.2/conf/srm.conf
> cp ./mime.types /soft/apache-1.2/conf/`

### Installation zum Start des Servers beim Booten

Beim Booten eines Systems sollten alle wichtigen Dämon-Prozesse automatisch gestartet werden. Hierzu bedarf es eines kleinen Shell-Skriptes (Anhang A.4, S. ), welches von /etc/init.d beim Booten des Systems genutzt wird.

Unter S.u.S.e.-LINUX wird das Skript wie nachstehend eingebunden:

- Plazieren des Skriptes ins Verzeichnis /sbin/init.d/
- wenn nötig, anpassen der Variablen
  `apachehome=/soft/apache-1.2
  wwwuser=nobody
  killallwww=yes
  pidfile=$apachehome/logs/httpd.pid`

  Variablen:
  apachehome - Installationsverzeichnis des Web-Servers
  wwwuser - UserID des Web-Servers
  killallwww - sollen alle Prozesse die unter 'wwwuser' laufen beim Beenden des Web-Servers mit beendet werden
  pidfile - Datei, welche die pid des Web-Servers enthält (wird zum Beenden des Servers verwendet)

- Setzten eines Start- und Stop-Links auf das Skript aus dem Verzeichnis des entsprechenden Runlevels; z.B.
  `ln -s /sbin/init.d/apache /sbin/init.d/rc2.d/S50.apache
  ln -s /sbin/init.d/apache /sbin/init.d/rc2.d/K01.apache`

Beim nächsten Booten wird der Web-Server dann automatisch gestartet.

## 2.1.2 Konfiguration

Eine detailierte Konfigurationsbeschreibung kann im Online-Manual[4] von Apache nachgelesen werden. Lediglich die für die Standard-Installation notwendigen Änderungen in den Konfigurations-Dateien werden jetzt beschrieben.

Erforderliche Änderungen an den Konfigurations-Dateien für den Gebrauch eines WWW-Interfaces werden in den durch gekennzeichneten Kapiteln erleutert.

### Änderungen für die Standard-Konfiguration

Hierzu sind in den Dateien

- access.conf
- http.conf
- srm.conf

im Verzeichnis /soft/apache-1.2/conf nur ein paar kleine Änderung vorzunehmen. Diese sind:

- access.conf
  ändern der DocumentRoot in
  `<Directory /soft/apache-1.2/html>`
  festlegen des Verzeichnisses für die CGI-Skripten wie folgt
  `<Directory /soft/apache-1.2/html/cgi-bin>`
- http.conf
  Bestimmung des ServerRoot-Verzeichnisses
  `ServerRoot /soft/apache-1.2`
- srm.conf
  ändern der DokumentRoot in
  `DocumentRoot /soft/apache-1.2/html`

  Änderungen in der Datei srm.conf für den Einsatz des W3-mSQL Interface Paketes siehe Kapitel 4.1.7 (Seite ).
  Änderungen in der Datei srm.conf für den Einsatz des Apache Moduls PHP/FI stehen in Kapitel 4.2.3 (S. ).

## 2.1.3 Apache & SSL

Source-Quellen: http://www.algroup.co.uk
Bekanntlich bietet das http Protokoll keine Datensicherheit bei der Übertragung. Es überträgt Daten (HTML Seiten) in ihrer ursprünglichen Form - also unverschlüsselt. Für manche Art von Daten, die nicht jedem zugänglich sein sollen, wenn er in der Leitung lauscht, ist es jedoch unumgänglich, sie zu verschlüsseln.

Für den Web-Server Apache gibt es daher einen zusätzlichen Patch, der es ihm ermöglicht, Web-Seiten über das https Protokoll verschlüsselt zu übertragen. Dabei bedient er sich der SSL (Secure Socket Layer) Technik.

Vor der Installationbeschreibung jedoch noch ein wichtiger Hinweis! In vielen teilen der Welt ist der Export/Imoprt von Cryptographischer Software verboten. Vor dem Einsatz sollte man sich unbedingt mit den landestypischen Gesetzen vertraut machen.

### 2.1.3.1 Installation

Bevor der SSL Zusatz für Apache installiert werden kann, müssen einige Voraussetzungen gegeben sein.

- Source-Code des Web-Servers Apache in der Version 1.2.0 (oder höher)
- SSLeay 0.6.1 (oder höher) oder 0.8.0 (oder höher) im Source-Code
- und der entsprechende Patch für den Web-Server ...

Sind all diese Voraussetzungen gegeben, kann mit der Installation begonnen werden.

- Wechseln in das Apache Source-Code Verzeichnis
- entpacken des Patches mit
  `tar xvfz apache_1.2.0+ssl_1.8.tar.gz`
- anschließend den Apache Source-Code patchen mit
  `patch < SSLpatch`
- Der Web-Server kann jetzt wie gewohnt mit `make` kompiliert werden.
  Hinweis: In der Datei ./src/Configuration (im Apache Source-Verzeichnis) müssen alle SSL* Parameter auf das SSLeay Source-Verzeichnis verweisen; nicht auf die installierte Version von SSLeay!
- Aus der Datei ./SSLconf/conf/httpd.conf müssen jetzt nur noch die benötigten SSL Parameter in die httpd.conf Datei des Web-Servers kopiert und entsprechend angepaßt werden.
- zum Abschluß kann mit `make certificate` ein eigenes Test-Zertifikat erstellt werden.

Der Web-Server sollte jetzt das https Protokoll beherschen und die Dateien verschlüsselt übertragen. Ob damit jedoch alle Sicherheitsrisiken ausgeschlossen sind mag jedoch bezweifelt werden.

Zur eigenen Gewissensprüfung sind einige Fragen aus der im Patch enthaltenen Datei SECURITY frei ins Deutsche übertragen:

- SSL selbst ist nicht unbedingt sicher. Die Menschen denken es sei sicher, Sie auch?
- Wurde dieser SSL Code richtig implementiert?
- Haben die Autoren der verschiedenen Komponenten vielleicht Hintertürchen eingebaut?
- Ist Ihr System physikalisch sicher?
- Wie haben Sie Ihre Zertifikate, Schlüssel und so weiter erhalten - sicher?
- und so weiter ....

Bei Beantwortung dieser Fragen wird man schnell erkennen, daß es `` das Sicherheitssystem '' leider gar nicht geben kann.

Eine einzige, definitive Sicherheit bietet der Apache-SSL jedoch: mit einem selbst erstellten Zertifikat ist es dem Microsoft Internet Explorer nicht möglich die verschlüsselten Seiten anzuzeigen! Er erkennt das Zertifikat einfach als nicht von einer autorisierten Zertifikierungsstelle erstellt, und verweigert den Zugriff.

# 2.2 Roxen 1.0

Für die Wahl des Web-Servers Roxen war besonders sein Browser gesteuertes Konfigurationsmenü verantwortlich. Dieses ermöglicht dem Administrator ohne umständliches editieren von Config-Dateien eine einfache, übersichtliche Konfiguration des Servers.

## 2.2.1 Installation

Source-Quellen: CD-Rom (c't freeware & shareware '97)

Die Installation der Quellen erweist sich als sehr einfach. Hierzu sind folgende Schritte durchzuführen.

- Die Quellen werden mit
  `tar xvfz roxen.tgz`
  entpackt.
- anschließend werden die Quellen über das Shell-Skript ./configure konfiguriert; durch den Parameter `-prefix` wird das gewünschte Installationsverzeichnis übergeben.

  `./configure -prefix=/soft`
  Dadurch wird ein plattformspezifisches Makefile generiert.

- durch die Eingabe von

  `make`
  wird der Web-Server übersetzt

- und anschließend mit

  `make install`
  in das vorher angegebene Verzeichnis installiert.

### Beenden der Installation

Nach erfolgreicher Installation der Quellen wird weiter wie nachstehend vorgegangen:

- wechseln in das Verzeichnis
  `cd /soft/roxen/server/`
  und starten des Skriptes Install durch
  `./install`
  Das Installationsskript fragt daraufhin nach dem vollen Hostname und sucht dann nach einem freien Administrationsport. (Diesen sollte man sich unbedingt aufschreiben, da nur über diesen Port der Server administriert werden kann.) Weiter wird nach dem Standard-Browser gefragt. Die Eingabe dieses kann aber auch entfallen.
- zum Schluß gibt das Skript noch einmal die volle Administrations-URL an. Zum Beispiel:
  `http://knudsen.taunus.ford:18830/`
- Jetzt kann der Server mit
  `cd /soft/roxen/server/
  ./start`
  gestartet werden.

Wenn der Server ordnungsgemäß gestartet ist, kann mit der Konfiguration (Kapitel 2.2.2, S. ) fortgefahren werden.

### Installation zum Start des Servers beim Booten

Soll der Server automatisch gestartet werden wenn das System bootet, so sind noch einige weitere Konfigurationsschritte - ähnlich wie beim Web-Server Apache - durchzuführen.

Als erstes jedoch sollte der Web-Server als eigener System-Benutzer laufen; niemals darf er als 'root' laufen, da sonst Hacker über eventuelle Security-Bugs im Server das ganze System lahmlegen können. Dazu muß aber ein eigener neuer Benutzer angelegt sein. Diesem sollten außerdem alle Rechte an allen relevanten Dateien gegeben werden.

Jetzt kann der Server in die Bootsequenz des Systems eingebunden werden. Für LINUX (sowie alle anderen UNIX-Systeme) kann das mitgelieferte Skript roxen/tools/init.d_roxen genutzt werden. Es wird von /etc/init.d zum Starten genutzt.

Dabei wird wie folgt vorgegangen:

- kopieren der Datei roxen/tools/init.d_roxen nach /sbin/init.d/
  `cp /soft/roxen/tools/init.d_roxen /sbin/init.d/`
- ändern folgender Zeilen in der Datei init.d_roxen
  `wwwuser=>>login-name<<
  pidfile=/tmp/roxen_pid:>>uid<<`
  >>login-name<< : Benutzername unter dem Roxen laufen soll (z.B. wwwserver)
  >>uid<< : uid des entsprechenden Benutzers (z.B. 9999)
- Setzen eines Start- und Stop-Links auf die Datei init.d_roxen aus dem Verzeichnis des entsprechenden Runnlevels; z.B.
  `cd /sbin/init.d
  ln -s ./init.d_roxen ./rc2.d/S60.init.d_roxen
  ln -s ./init.d_roxen ./rc2.d/K06.init.d_roxen`

Anschließend kann das System neu gebootet werden. Der Web-Server startet jetzt automatisch.

## 2.2.2 Konfiguration

Nachdem der Server gestartet wurde, kann er mittels eines Browsers (z.B. Netscape) konfiguriert werden. Hierzu wird die Administrations-URL (S. ) benötigt. Jetzt meldet sich der Server für die erste Konfiguration.

Als erstes wird ein Benutzername und ein Paßwort eingegeben (Abbildung 2.1, S. ), um nicht authorisierten Personen den Zugriff auf das Konfigurations-Interface zu verweigern. Weiter kann der Zugriff auf bestimmte IP-Pattern begrenzt werden.

Abbildung 2.1: Die ersten Konfigurations-Eingaben

Wird z.B. unter IP-Pattern die IP-Nummer 194.95.108.* eingegeben, so können nur Rechner deren IP-Nummer mit 194.95.108 beginnt auf das Konfigurations-Interface zugreifen.

Nach Betätigen des Buttons Use these values meldet sich der Server mit seinem eigentlichen Konfigurationsmenü. Jetzt kann mit der eigentlichen Konfiguration begonnen werden.

### Einrichten eines virtuellen Servers

Über New Virtual Server wird ein neuer virtueller Server eingerichtet. Diesem Server muß als erstes ein Name vergeben werden (z.B. Server 1). Dann wird ihm ein Konfigurations Typ zugeordnet (z.B. Standard configuration- alle relevanten Module bereits vorkonfiguriert). Durch klicken des Buttons Add It wird der neue virtuelle Server angelegt.

Unter dem Menüpunkt Server variables können noch einige Grundeinstellungen vorgenommen werden; nachstehend werden jedoch nur die für die Tests zu verändernden Einstellungen beschrieben.

- Listen ports:
  Über diesen Menüpunkt werden dem Server die Ports mitgeteilt, an denen auf Requests warten soll.
  Erstes Feld: die Portnummer (in unserem Fall 80 (standard http Port))
  Zweites Feld: das Protokoll (http)
  Drittes Feld: an welches Interface das Protokoll gebunden wird (ANY - an alle)
  Im vierten Feld können noch einige SSL-Parameter übergeben werden (nähere Informationen dazu siehe Benutzerhandbuch Roxen[5]).
- Server URL:
  URL an der der Server seine Startseite findet (z.B. http://knudsen.taunus.ford/).

Nach diesen Einstellungen erfolgt die individuelle Konfiguration des Servers. Für die zum Testen benötigte Konfiguration wurden folgende Module der Systemumgebung angepasst:

- User Filesystrem:
  Es sagt dem Server, wo er die HTML-Dateien der im System gültigen Benutzer findet. Hierbei können mehrere Parameter gesetzt werden, die online bei der Konfiguration oder im Benutzerhandbuch[5] erklärt werden.
  In unserem Fall wurde der Parameter Mount Point auf / gesetzt und
  der Parameter Public Directory auf 'public_html '.
- Filesystem:
  Über Filesystem wird ein virtuelles Filesystem initialisiert, welches ein oder mehrere logische Verzeichnisse des Hosts in einem Web-Verzeichnisbaum dem Internet zur Verfügung stellt. Auch hier sind mehrere Parameter setzbar.
  Wichtig sind jedoch Mount Point (für das virtuelle Filesystem; z.B. /) und Search Path (für das echte Filesystem; z.B. /soft/roxen/html). Diese Parameter sind dazu entsprechend anzupassen.

Um jedoch serverseitige CGI-Programme ausführen zu können, müssen noch ein paar weitere Schritte durchgeführt werden.

- CGI - executable support:
  Hier seien nur die beiden wichtigsten Parameter zum Ausführen von CGI-Programmen erwähnt. Mit CGI - bin path wird der virtuelle Webpfad gesetzt (z.B. /cgi-bin/) und unter Search Path das Verzeichnis im Filesystem des Host (z.B. /soft/roxen/cgi-bin/).