Unterabschnitte

Der HTTP-Server Apache2

Einleitung

Mit dem Apache-HTTP-Server kann man selbst Webseiten auf eisfair bereitstellen, auch Seiten mit dynamischen Inhalten (PHP, Perl) stellen damit kein Problem dar.

Das Apache-Package stellt nur den eigentlichen Webserver bereit; um PHP benutzen zu können, muss das APACHE2_PHP5-Package installiert werden.

Allgemeine Konfiguration

APACHE2_PORT
Auf diesem Port läuft Apache und nimmt Anfragen entgegen.

Standardeinstellung: APACHE2_PORT='80'

APACHE2_SERVER_NAME
Hier wird der Name angegeben unter dem der Apache-Webserver im Browser später aufgerufen wird. Es muss ein FQDN (Full qualified domain name) angegeben werden. D.h. Hostname + Domainname.

Ist der Hostname vom eisfair z.B. obelix und der Domainname home.lan, so muss als Server-Name obelix.home.lan angegeben werden

APACHE2_SERVER_ADMIN
Die Email-Adresse des Serverbetreibers; diese wird auf den Seiten eingefügt, die vom Server in Fehlerfällen generiert werden.

APACHE2_DOCUMENT_ROOT
Hier wird das Verzeichnis eingestellt, in dem die Website liegt. Wenn es auserhalb von /var/www/ liegt muss das HOME-Directory des Users wwwrun angepasst werden, damit auf das Verzeichnis noch per FTP zugegriffen werden kann.

Standardeinstellung: APACHE2_DOCUMENT_ROOT='/var/www/htdocs'

APACHE2_DIRECTORY_INDEX
Diese Seite wird aufgerufen, wenn keine Datei in der URL angegeben wird z.B. nur http://192.168.0.1/ dann wird automatisch umgeleitet auf http://192.168.0.1/index.html.

Wenn PHP installiert wird, wird (in der Konfiguration nicht sichtbar) automatisch index.php hinzugefügt.

Standardeinstellung: APACHE2_DIRECTORY_INDEX='index.html index.htm'

APACHE2_HOSTNAME_LOOKUPS
Normalerweise werden in der Logfile nur die IP-Adressen gespeichert, die auf den Server zugegriffen haben. Wenn man diese Variable auf yes setzt werden statt den IP-Adressen, die Hostnames in die Logfile geschrieben. Das Auflösen der IP-Adressen in DNS-Namen ist allerdings ein zeitaufwendiger Prozess; auf einem Server, der eine hohe Last hast, ist die Einstellung APACHE2_HOSTNAME_LOOKUPS='no' empfohlen.

Die IP-Adressen können beim Auswerten der Logfiles immer noch in (evt. veraltete) DNS-Namen aufgelöst werden.

Standardeinstellung: APACHE2_HOSTNAME_LOOKUPS='no'

APACHE2_VIEW_DIRECTORY_CONTENT
Wenn in der URL nur ein Verzeichnis angegeben ist und dort keine Index-Datei aus APACHE2_DIRECTORY_INDEX liegt, wird bei der Einstellung yes der Verzeichnis Inhalt angezeigt.

Standardeinstellung: APACHE2_VIEW_DIRECTORY_CONTENT='no'

APACHE2_ENABLE_SSI
Legt fest, ob Server Side Includes (SSI) verwendet werden. Server Side Includes sind eine Möglichkeit, Seiten dynamisch zusammenzubauen. Für weitere Informationen siehe http://www.apacheweek.com/features/ssi.

APACHE2_ACCESS_CONTROL
Die IPs bzw. Hosts die hier angegeben werden haben Zugriff auf den Apache. Für die Virtual Hosts muss dies extra eingestellt werden. Jeder Rechner hat Zugriff, wenn die Variable auf 'all' steht.

Folgende Beispiele illustrieren die Formate der Parameter:

Standardeinstellung: APACHE2_ACCESS_CONTROL='all'

APACHE2_ERROR_LOG
Alle Errors, die der Apache dem User liefert oder die sonst auftreten können (z.B. Fehler in Modulen) werden in dieser Datei gespeichert.

Standardeinstellung: APACHE2_ERROR_LOG='/var/www/log/error_log'

APACHE2_ACCESS_LOG
Alle Zugriffe werden in diese Datei geloggt. Standardeinstellung: APACHE2_ACCESS_LOG='/var/www/log/access_log'

APACHE2_SCRIPT_DIR
Hier wird der reelle-Pfad vom CGI-Verzeichnis angegeben. Alle CGI-Scripts müssen in dieses Verzeichnis gelegt werden, da ansonsten der Quelltext von dem Script angezeigt wird. Man kann auch über die Variable APACHE2_DIR_n_CGI CGI-Ausführung in einem anderen Verzeichnis erlauben, aber dies wird aus Sicherheitsgründen nicht empfohlen.

Standardeinstellung: APACHE2_SCRIPT_ALIAS='/var/www/cgi-bin'

APACHE2_ALIAS
Hier können Verzeichnisse, die nicht unterhalb von APACHE2_DOCUMENT_ROOT liegen, öffentlich zugänglich gemacht werden.

Beispiel: Man hat ein Verzeichnis /home/user/bilder/ und möchte dieses öffentlich erreichbar machen, so muss APACHE2_ALIAS_n_DIRECTORY auf /home/user/bilder/ gesetzt werden. Den Wert von APACHE2_ALIAS_n_ALIAS kann man sich dann aussuchen. Wenn dieser Wert z.B. auf ``MyPics'' gesetz wird, könnte man eine Datei in diesem Verzeichnis mit http://[eis]/MyPics/[datei] aufrufen.

APACHE2_ERROR_DOCUMENT_x_ERROR
Ein Webserver liefert bei Fehlern bestimmte Statuscodes. Eine Auflistung aller Codes ist auf dieser Website zu finden: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

APACHE2_ERROR_DOCUMENT_x_DOCUMENT
Wenn ein Fehler auftritt wird nicht die Fehlerseite vom Apache angezeigt sondern die hier angegebene HTML-Seite. Es können auch CGI- oder PHP-Scripts angegeben werden.

APACHE2_DIR_x_PATH
Hier muss der reelle Pfad angegeben werden für den die u.g. Parameter gelten.

APACHE2_DIR_x_AUTH_NAME
Wenn APACHE2_DIR_x_AUTH_N nicht gesezt ist, kann man dies Variable ignorieren. Wenn allerdings die Authentication genutzt werden soll wird der Inhalt dieser Variable im Fenster des Browser angezeigt, wo man Benutzername und Passwort eingeben muss.

APACHE2_DIR_x_AUTH_x_USER
Hier kann der User angegeben werden, der sich in den geschüzten Bereich einloggen kann. Die Passwort und Benutzername Abfrage geschieht über den Brwoser.

APACHE2_DIR_x_AUTH_x_PASS
Das Passwort für den Benutzer in APACHE2_DIR_x_AUTH_x_USER wird hier angegeben. Momentan wird dieses noch im Klartext in der Konfigurationsdatei abgespeichert, in den späteren Versionen vom Apache-Package wird sich dies aber noch ändern.

APACHE2_DIR_x_ACCESS_CONTROL
Der Syntax dieser Variable wird bei APACHE2_ACCESS_CONTROL erklärt. Die hier angegebene Zugriffserlaubnis bezieht sich dann nur auf APACHE2_DIR_x_PATH

APACHE2_DIR_x_CGI
Entweder darf hier 'no' angegeben werden oder '.pl', '.cgi' o.ä. Aber nicht 'yes'! Steht diese Variable nicht auf 'no', dann können CGI-Scripts mit den Endungen, die in der Variable stehen ausgeführt werde. Wenn ein CGI-Script aufgerufen wird, dessen Endung nicht in APACHE2_DIR_x_CGI steht, wird der Quelltext angezeigt.

APACHE2_DIR_x_SSI
Hier darf 'yes' oder 'no' eingetragen werden. Wenn 'yes' eingetragen ist, dann können SSI Scripts mit der Endung .shtml ausgeführt werden. Aber nur in dem in APACHE2_DIR_x_PATH angegebem Pfad.

APACHE2_DIR_x_VIEW_DIR_CONTENT
Diese Variable ist in APACHE2_VIEW_DIRECTORY_CONTENT erklärt. Bezieht sich aber nur auf den in APACHE2_DIR_x_PATH angegebenem Pfad.

APACHE2_DIR_x_WEBDAV
Schaltet WebDAV ein oder aus. WebDAV ist eine Dateifreigabe über HTTP und wird z.B. für gemeinsam genutze Terminkalender genutzt (z.B. Mozilla Sunbird)

Virtual Hosts

Mit Virtual Hosts kann man mehrere Domainnamen oder/und mehrere IP-Adressen auf einem Apache hosten.

Beispiel: Unter www.eisfair.net wurde die Domain meinesubdomain.eisfair.net registriert. Nun hat kann man seinen Eis z.B. unter folgenden Domains erreichbar machen asterix.meinesubdomain.eisfair.net und obelix.meinesubdomain.eisfair.net. Denn dank DNS-Wildcard zeigen alle Domains, die man in der Form xxx.meinesubdomain.eisfair.net z.B. in seinen Browser eingibt auf die IP-Adresse des Eisfairs. folgendermassen aussehen:

APACHE2_VHOST_1_ACTIVE='yes' # Should the VHost be active?
APACHE2_VHOST_1_IP='*' # '*' or ip address
APACHE2_VHOST_1_PORT='80' # Port
APACHE2_VHOST_1_SERVER_NAME='asterix.meinesubdomain.eisfair.net' # server name
APACHE2_VHOST_1_SERVER_ALIAS='*.asterix.meinesubdomain.eisfair.net' # server alias, may be empty
APACHE2_VHOST_1_SERVER_ADMIN='wwwadmin@asterix.meinesubdomain.eisfair.net' # email of webmaster
APACHE2_VHOST_1_DOCUMENT_ROOT='/var/www/asterix/htdocs' # document root
APACHE2_VHOST_1_SCRIPT_DIR='/var/www/asterix/cgi-bin/' # directory to use
APACHE2_VHOST_1_ERROR_LOG='/var/www/asterix/log/error_log' # error log
APACHE2_VHOST_1_ACCESS_LOG='/var/www/asterix/log/access_log' # access log
APACHE2_VHOST_1_ACCESS_CONTROL='all' # controls who get stuff
APACHE2_VHOST_1_SSL='no' # activate SSL
APACHE2_VHOST_1_SSL_PORT='443' # activate SSL
APACHE2_VHOST_1_SSL_FORCE='no' # redirect to https://
APACHE2_VHOST_1_SSL_CERT_NAME='apache-asterix.meinesubdomain.eisfair.net' # Name of the cert.

APACHE2_VHOST_2_ACTIVE='yes' # Should the VHost be active?
APACHE2_VHOST_2_IP='*' # '*' or ip address
APACHE2_VHOST_2_PORT='80' # Port
APACHE2_VHOST_2_SERVER_NAME='obelix.meinesubdomain.eisfair.net' # server name
APACHE2_VHOST_2_SERVER_ALIAS='*.obelix.meinesubdomain.eisfair.net' # server alias, may be empty
APACHE2_VHOST_2_SERVER_ADMIN='wwwadmin@obelix.meinesubdomain.eisfair.net' # email of webmaster
APACHE2_VHOST_2_DOCUMENT_ROOT='/var/www/obelix/htdocs' # document root
APACHE2_VHOST_2_SCRIPT_DIR='/var/www/obelix/cgi-bin/' # directory to use
APACHE2_VHOST_2_ERROR_LOG='/var/www/obelix/log/error_log' # error log
APACHE2_VHOST_2_ACCESS_LOG='/var/www/obelix/log/access_log' # access log
APACHE2_VHOST_2_ACCESS_CONTROL='all' # controls who get stuff
APACHE2_VHOST_2_SSL='no' # activate SSL
APACHE2_VHOST_2_SSL_PORT='443' # activate SSL
APACHE2_VHOST_2_SSL_FORCE='no' # redirect to https://
APACHE2_VHOST_2_SSL_CERT_NAME='apache-obelix.meinesubdomain.eisfair.net' # Name of the cert.

APACHE2_VHOST_x_ACTIVE
Hier wird angeben, ob der betreffende VirtualHost aktiv sein soll.

APACHE2_VHOST_x_IP
Wenn diese Variable auf * gesetzt ist (Standardeinstellung), kann dieser Virtual Host über jede IP-Adresse erreicht werden, die an die NICs gebunden sind. Gibt man hier eine IP-Adresse ein, ist der Virtual Host nur über die eingegeben IP-Adresse erreichbar. Dies nennt mann dann IP-Based Virtual Hosts.

APACHE2_VHOST_x_SERVER_NAME
Hier muss der Hostname des Virtual Hosts angegeben werden. Es muss ein Full Qualified Domain Name (FQDN) sein. D.h. der Hostname muss den Host-Anteil plus den Domainnamen enthalten.

Beispiel: APACHE2_VHOST_x_SERVER_NAME='eis.meinedomain.de'

APACHE2_VHOST_x_SERVER_ALIAS
Hier können zusätzliche Hostnamen angegeben werden.

Beispiel: APACHE2_VHOST_x_SERVER_ALIAS='www.meinedomain.de *.eis.meinedomain.de'

APACHE2_VHOST_x_SERVER_ADMIN
Die Email-Adresse des Serverbetreibers; diese wird auf den Seiten eingefügt, die vom Server in Fehlerfällen generiert werden.

Beispiel: APACHE2_VHOST_x_SERVER_ADMIN='wwwadmin@meinedomain.de'

APACHE2_VHOST_x_DOCUMENT_ROOT
In dem hier angegeben Verzeichnis liegen die HTML-Dateien die dieser Virtual Host zur Verfügung stehen soll.

Beispiel: APACHE2_VHOST_x_DOCUMENT_ROOT='/var/www/meinedomain.de/htdocs/'

APACHE2_VHOST_x_SCRIPT_DIR
Hier muss das reelle Verzeichnis angegeben werden, in dem die CGI-Scripts für diesen VirtualHost liegen

Beispiel: APACHE2_VHOST_x_SCRIPT_DIR='/var/www/meinedomain.de/cgi-bin/'

APACHE2_VHOST_x_ERROR_LOG
In die hier angebene Datei werden die Fehler, welche für diesen Virtual Host auftreten geschrieben. z.B. Zugriffsfehler wie ein 404 - Not Found

Beispiel: APACHE2_VHOST_x_ERROR_LOG='/var/www/meinedomain.de/log/error_log'

APACHE2_VHOST_x_ACCESS_LOG
In die hier angegebe Datei werden die erfolgten Zugriffe geschrieben.

Beispiel: APACHE2_VHOST_x_ACCESS_LOG='/var/www/meinedomain.de/log/access_log'

APACHE2_VHOST_x_ACCESS_CONTROL
Die Adressen die hier angegeben werden, haben Zugriff auf den Server. Wenn alle Rechner Zugriff haben sollen, dann muss hier ``all'' angegeben werden.

Siehe auch APACHE2_ACCESS_CONTROL

Für Ergänzungen an der httpd.conf gibt es den Menü-Punkt 'Append commands to the httpd.conf'.

SSL

SSL (Secure Socket Layer) stellt eine sichere, verschlüsselte Verbindung zwischen Server und Client her. Der Einsatzort ist meist beim Online-Banking oder bei Online-Shops, wo vertrauliche Daten übermittelt werden müssen.

Um SSL einsetzten zu können, müssen zwei Zertifikat erstellt werden. Dies geschiet mit der Hilfe des Pakets ,,certs`` von Jürgen Edner. (Das Paket wird automatisch bei der Apache-Installation gedownloadet und installiert).

Wenn die Variable APACHE2_SSL in der Apache-Konfiguration gesetzt worden ist und noch keine Zertifikate bestehen, wird man dazu aufgefordert, eine ,,passphrase`` einzugeben. Diese Eingabe sollten Sie sich unbedingt merken, da sie zu einem späteren Zeitpunkt nocheinmal gebraucht wird.

Es folgen weitere Eingaben, wie z.B. die Örtlichkeit oder Ihre Email-Adresse für Rückfragen (Diese Angaben können vom Client, der auf Ihrer Website surft abgerufen werden)

WICHTIG: Wenn Sie nach ,,Common Name`` gefragt werden, müssen Sie den Namen Ihres Servers eingeben! (z.B. ,,www.karl-egon.eisfair.net,,) Ansonsten wird das Zertifikat vom Browser des Clients als Nicht-Vertrauenswürdig eingestuft.

Dies ist ebenfalls der Fall, wenn Sie namebased Virtualhosts (mehrere Domainnamen zeigen auf eine IP-Adresse) einsetzten. Das erstellte Zertifikat ist nur für den Virtualhost gültig, bei dem der ,,Common Name``, den Sie bei der Erstellung des Zertifikates eingegeben haben, gleich dem Servernamen ist.

Nimda & CodeRed

Der Nimda-Wurm versucht eine Sicherheitslücke im ISS (Internet Information Server von Microsoft) zu benutzen. Einem Linux-System kann dieser Wurm absolut nichts anrichten. Wenn der eisfair gescannt wird, erscheinen u.a. diese Einträge in der Logfile. Mehrere Einträge pro Minute können durchaus möglich sein.

GET /scripts/root.exe?/c+dir
GET /MSADC/root.exe?/c+dir
GET /c/winnt/system32/cmd.exe?/c+dir
GET /d/winnt/system32/cmd.exe?/c+dir
GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir
GET /_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir
GET /_mem_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir
GET /msadc/..%5c../..%5c../..%5c/..\xc1\x1c../..\xc1\x1c../..\xc1\x1c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..\xc1\x1c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..\xc0/../winnt/system32/cmd.exe?/c+dir
GET /scripts/..\xc0\xaf../winnt/system32/cmd.exe?/c+dir
GET /scripts/..\xc1\x9c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%35c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%35c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..%2f../winnt/system32/cmd.exe?/c+dir

Andere merkwürdige Einträge können durch CodeRed entstehen, ein ähnlicher Wurm. Wenn dies der Fall sein sollte, einfach einen Teil der Logeinträge bei Google eingeben, meist wird dort dann der verursachende Wurm gefunden.

Jens Vehlhaber 2008-03-25