Mit dem Apache-HTTP-Server kann man selbst Webseiten auf eisfair bereitstellen, auch Seiten mit dynamischen Inhalten (PHP, Perl, Python) stellen damit kein Problem dar.
Das Apache-Paket stellt den eigentlichen Webserver bereit.
PHP wird in den Versionen PHP-FPM und APACHE2_PHP bereitgestellt und muss den Anforderungen entsprechend installiert werden.
Auch andere Skriptsprachen erfordern die entsprechenden Pakete und eventuell zusätzliche Treiber.
Das Apache2-Paket benötigt weitere Pakete, die Aufzählung ist nicht
abschliessend und die Namen eventuell nicht vollständig:
Das apache2-Paket wird über das Setup-Menü installiert.
Wird eine ältere Paketversion vorgefunden, so wird deren Konfiguration
gesichert und das alte Paket deinstalliert bevor die neuen Programmdateien
installiert werden und die Konfiguration übernommen wird.
Bei einer Neuinstallation wird automatisch die Standardkonfiguration erstellt. Nach Beendigung dieses Schrittes werden die Konfigurationsdateien generiert und der httpd- Prozess gestartet.
Das Menü des apache2 Paketes im Setup-Programm ist wie folgt aufgebaut:
4. | Service administration |
x. | Apache2 Webserver |
x. | Read Apache Documentation | |||
x. | Configuration |
x. | Edit Apache Configuration | |||
x. | Advanced configuration file handling | |||
x. | Append commands to the httpd.conf (experts only!) | |||
Dieser Punkt bietet die Möglichkeit, manuell Kommandos in die | ||||
Konfigurationsdatei des Apache einzutragen. | ||||
x. | Modules configuration | |||
Über diesen Punkt können Module, wie z.B. die PHP Erweiterung | ||||
administriert und konfiguriert werden. |
x. | Server Handling (start, stop) |
x. | Show status | |||
x. | Restart service | |||
x. | Stop service | |||
x. | Start service |
Die Konfiguration von Apache2 unter eisfair erfolgt über den Menüpunkt „Edit configuration“ im Paketmenü. Die vorgenommenen Änderungen werden nach Beenden des Editors automatisch übernommen.
In der Konfigurationsdatei, die über das Menü zugänglich ist, sind die in den folgenden Unterabschnitten beschriebenen Parameter vorhanden.
Standardeinstellung: START_APACHE2='no'
Standardeinstellung: APACHE2_PORT='80'
Ist der Hostname vom eisfair z.B. obelix und der Domainname home.lan, so muss als Server-Name obelix.home.lan angegeben werden
- Off: Apache erzeugt keine Informationsfußzeile.
- On: Es wird eine Fußzeile ohne E-Mail-Adresse generiert.
- Email: Es wird eine Fußzeile mit E-Mail-Adresse generiert.
Standardeinstellung: APACHE2_SERVER_SIGNATURE='On'
Standardeinstellung: APACHE2_DOCUMENT_ROOT='/var/www/htdocs'
Standardeinstellung: APACHE2_SSL='no'
Standardeinstellung: APACHE2_SSL_PORT='443'
apache2_php | ⇒ | 'prefork' | |
php-fpm | ⇒ | 'event' oder 'worker' |
Standardeinstellung: APACHE2_MPM='prefork'
Standardeinstellung: APACHE2_SSL_LOGDIR='/var/www/log/'
Standardeinstellung: APACHE2_SSL_OSCP='no'
Wenn PHP installiert wird, wird (in der Konfiguration nicht sichtbar) automatisch index.php hinzugefügt.
Standardeinstellung: APACHE2_DIRECTORY_INDEX='index.html index.htm'
Die IP-Adressen können beim Auswerten der Logdateien immer noch in (evtl. veraltete) DNS-Namen aufgelöst werden.
Standardeinstellung: APACHE2_HOSTNAME_LOOKUPS='no'
Standardeinstellung: APACHE2_VIEW_DIRECTORY_CONTENT='no'
Gültige Werte: yes, no
Standardeinstellung: APACHE2_ACCESS_CONTROL_TYPE_ALL='yes'
Gültige Werte: yes, no
Standardeinstellung: APACHE2_ACCESS_CONTROL_TYPE_IP='no'
Beispiel: 10 192.168.6 192.168.6.1 192.168.6.0/24
Gültige Werte: IP Adresse
Standardeinstellung: APACHE2_ACCESS_CONTROL_IP=''
Gültige Werte: yes, no
Standardeinstellung: APACHE2_ACCESS_CONTROL_TYPE_HOST='no'
Gültige Werte: Hostname, Domain
Standardeinstellung: APACHE2_ACCESS_CONTROL_HOST=''
Gültige Werte: yes, no
Standardeinstellung: APACHE2_ACCESS_CONTROL_TYPE_LOCAL='no'
Gültige Werte: yes, no
Standardeinstellung: APACHE2_ENABLE_HTTP2='no'
Standardeinstellung: APACHE2_ERROR_LOG='/var/www/log/error_log'
Standardeinstellung: APACHE2_ACCESS_LOG='/var/www/log/access_log'
Standardeinstellung: APACHE2_SCRIPT_ALIAS='/cgi-bin'
Standardeinstellung: APACHE2_SCRIPT_ALIAS_DIR='/var/www/cgi-bin'
Standardeinstellung: APACHE2_ERROR_DOCUMENT_N='0'
Beispiel: APACHE2_ERROR_DOCUMENT_x_ERROR='404'
Beispiel: APACHE2_ERROR_DOCUMENT_x_DOCUMENT='/404error.html'
Gültige Werte: basic, digest
Standardeinstellung: APACHE2_DIR_x_AUTH_TYPE='basic
Gültige Werte: yes, no
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_TYPE_ALL='yes'
Gültige Werte: yes, no
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_TYPE_IP='no'
Beispiel: 10 192.168.6 192.168.6.1 192.168.6.0/24
Gültige Werte: IP Adresse
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_IP=''
Gültige Werte: yes, no
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_TYPE_HOST='no'
Gültige Werte: Hostname, Domain
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_HOST=''
Gültige Werte: yes, no
Standardeinstellung: APACHE2_DIR_x_ACCESS_CONTROL_TYPE_LOCAL='no'
Mit Virtual Hosts kann man mehrere Domainnamen und/oder mehrere IP-Adressen auf einem Apache hosten.
Beispiel:
Unter www.eisfair.net wurde die Domain meinesubdomain.eisfair.net
registriert. Nun hat kann man seinen eisfair -Server 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 eisfair -Servers.
APACHE2_VHOST_1_ACTIVE='yes'
APACHE2_VHOST_1_IP='*'
APACHE2_VHOST_1_PORT='80'
APACHE2_VHOST_1_SERVER_NAME='asterix.meinesubdomain.eisfair.net'
APACHE2_VHOST_1_SERVER_ALIAS='*.asterix.meinesubdomain.eisfair.net'
APACHE2_VHOST_1_SERVER_ADMIN='wwwadmin@asterix.meinesubdomain.eisfair.net'
APACHE2_VHOST_1_DOCUMENT_ROOT='/var/www/asterix/htdocs'
APACHE2_VHOST_1_SCRIPT_DIR='/var/www/asterix/cgi-bin/'
APACHE2_VHOST_1_ERROR_LOG='/var/www/asterix/log/error_log'
APACHE2_VHOST_1_ACCESS_LOG='/var/www/asterix/log/access_log'
APACHE2_VHOST_1_ACCESS_CONTROL='all'
APACHE2_VHOST_1_SSL='no'
APACHE2_VHOST_1_SSL_PORT='443'
APACHE2_VHOST_1_SSL_FORCE='no'
APACHE2_VHOST_1_SSL_CERT_NAME='apache-asterix.meinesubdomain.eisfair.net'
APACHE2_VHOST_2_ACTIVE='yes'
APACHE2_VHOST_2_IP='*'
APACHE2_VHOST_2_PORT='80'
APACHE2_VHOST_2_SERVER_NAME='obelix.meinesubdomain.eisfair.net'
APACHE2_VHOST_2_SERVER_ALIAS='*.obelix.meinesubdomain.eisfair.net'
APACHE2_VHOST_2_SERVER_ADMIN='wwwadmin@obelix.meinesubdomain.eisfair.net'
APACHE2_VHOST_2_DOCUMENT_ROOT='/var/www/obelix/htdocs'
APACHE2_VHOST_2_SCRIPT_DIR='/var/www/obelix/cgi-bin/'
APACHE2_VHOST_2_ERROR_LOG='/var/www/obelix/log/error_log'
APACHE2_VHOST_2_ACCESS_LOG='/var/www/obelix/log/access_log'
APACHE2_VHOST_2_ACCESS_CONTROL='all'
APACHE2_VHOST_2_SSL='no'
APACHE2_VHOST_2_SSL_PORT='443'
APACHE2_VHOST_2_SSL_FORCE='no'
APACHE2_VHOST_2_SSL_CERT_NAME='apache-obelix.meinesubdomain.eisfair.net'
Beispiel:
APACHE2_VHOST_x_SERVER_NAME='eis.meinedomain.de'
Beispiel:
APACHE2_VHOST_x_SERVER_ALIAS='www.meinedomain.de *.eis.meinedomain.de'
Beispiel:
APACHE2_VHOST_x_SERVER_ADMIN='wwwadmin@meinedomain.de'
Beispiel:
APACHE2_VHOST_x_DOCUMENT_ROOT='/var/www/meinedomain.de/htdocs/'
Beispiel:
APACHE2_VHOST_x_SCRIPT_DIR='/var/www/meinedomain.de/cgi-bin/'
Beispiel:
APACHE2_VHOST_x_ERROR_LOG='/var/www/meinedomain.de/log/error_log'
Beispiel:
APACHE2_VHOST_x_ACCESS_LOG='/var/www/meinedomain.de/log/access_log'
Siehe auch APACHE2_ACCESS_CONTROL
Standardeinstellung: APACHE2_VHOST_x_SSL='no'
Standardeinstellung: APACHE2_VHOST_x_SSL_PORT='443'
Gültige Werte: ”debug”, ”info”, ”notice”, ”warn”, ”errer”, ”crit”, ”alert”, ”emerg”
Standardeinstellung: APACHE2_LOG_LEVEL='warn'
Gültige Werte: Nummerischer Wert
Standardeinstellung: APACHE2_LOG_COUNT='10'
Gültige Werte: ”daily”, ”weekly”, ”monthly”
Standardeinstellung: APACHE2_LOG_INTERVAL='weekly'
Gültige Werte: Nummerischer Wert
Standardeinstellung: APACHE2_MAX_KEEP_ALIVE_TIMEOUT='15'
Gültige Werte: Nummerischer Wert
Standardeinstellung: APACHE2_MAX_KEEP_ALIVE_REQUESTS='100'
Gültige Werte: Nummerischer Wert
Standardeinstellung: APACHE2_MAX_CLIENTS='256'
Gültige Werte: Nummerischer Wert
Standardeinstellung: APACHE2_MAX_REQUESTS_PER_CHILD='10000'
Standardeinstellung: APACHE2_MOD_CACHE='no'
Für Ergänzungen an der httpd.conf gibt es den Menü-Punkt 'Append commands to the httpd.conf'.
Es ist möglich, dass apache2 Paket mit eigenen Module zu erweitern. Hierbei gibt es grundsätzlich zwei unterschiedliche Arten von Erweiterungen. Die eine Möglichkeit ist die Erweiterung des httpd um Module (z.B. PHP, mod_jk). Bei der zweiten Möglichkeit handelt es sich um alle Möglichkeiten, die sich nicht auf httpd Module beziehen.
Im folgenden wird kurz beschrieben, wie Erweiterungspakete aufgebaut sein müssen bzw. was zu beachten ist um ein lauffähiges Erweiterungspaket zu erstellen.
Für die Erstellung eines Modul Erweiterungspaketes sind im allgemeinen die folgenden Schritte notwendig:
Die für die Übersetzung von eigenen Modulen benötigten HEADER-Dateien können mit Hilfe des apache2-dev Paketes installiert werden.
Das übersetzte httpd-Modul ist vorzugsweise unter /usr/local/apache2/modules abzulegen. Es kann jedoch auch jedes andere Verzeichnis, das vom httpd zu erreichen ist, gewählt werden.
Damit das httpd-Modul beim Starten geladen wird, ist eine Datei <module>.load und ggf. eine Konfigurationsdatei <module>.conf zu erstellen. Die Datei <module>.load muss unter /etc/apache2/mods-available abgelegt werden. Die ggf. notwendige Konfigurationsdatei des Moduls ist mit dem Namen <module>.conf unter /etc/apache2/mods-available abzulegen. Beim Erstellen der Konfiguration wird für alle vorhandenen *.load Dateien ein symbolischer Link unter /etc/apache2/mods-enabled angelegt. Sämtliche *.load und die zugehörigen Konfigurationsdateien unter /etc/apache2/mods-enabled werden beim Start des httpd eingelesen.
Beispiel <module>.conf:
LoadModule php5_module /usr/local/apache2/modules/libphp5.so
Beispiel <module>.conf:
DirectoryIndex index.php index.php3 index.php4 index.php5 AddType application/x-httpd-php .php .php3 .php4 .php5 AddType application/x-httpd-php-source .phps
Da es zur Zeit unterschiedliche Versionen des apache2 Paketes gibt, die
nicht zu einander binärkompatibel sind (Version 1.2.x enthält httpd-2.0.x;
Version 1.3.x enthält httpd-2.2.x) muss jedes Modul Erweiterungspaket
selbst die Informationen liefern können, ob es zu der jeweiligen httpd
Version passt. Hierzu ist in der Datei <module>.sh unter
/var/install/config.d/ die Funktion check_httpd zu implementieren. Diese
Funktion muss 0 zurückliefern, wenn das Erweiterungspaket zu dem
installierten apache2 Paket passt. Andernfalls muss diese Funktion 1
zurückliefern.
Beispiel für eine Implementierung dieser Funktion:
#------------------------------------------------------------------ # check httpd version #------------------------------------------------------------------ httpd_version=2.2.9 check_httpd () { needed_version=${httpd_version} httpd_installed="`/usr/local/apache2/bin/httpd -v | sed '2,$d; s#^.*/##'`" case ${httpd_installed} in ${needed_version%.*}*) # nothing to do retval=0 ;; *) echo mecho -n "The installed package, " mecho --info -n "'apache2_php5', " mecho "works only" mecho "for a Apache2 package that has been included" mecho "the httpd version '${needed_version%.*}.xx'." echo mecho --info "Please install the recent version." echo anykey retval 1 ;; esac }
Damit das Erweiterungspaket über die Modulkonfiguration des apache2 Paketes
konfiguriert werden kann muss eine Menü-Datei angelegt werden, die
folgendem Namensschema entspricht:
setup.services.apache2.config.modules.<module>.menu
Um zusätzliche Einträge in die Konfigurationsdatei des apache2 vorzunehmen,
die nicht mit Hilfe der Modulkonfigurationsdateien unter
/etc/apache2/mods-available bzw. /etc/apache2/mods-enabled vorgenommen
werden können, kann im Erweiterungspaket eine Datei httpd.conf.<module>.sh
angelegt werden. Diese Datei muss unter /var/install/config.d/ abgelegt
werden. Beim Erstellen der apache2 Konfiguration werden automatische
sämtliche Dateien, die obigem Namensschema entsprechen ausgeführt und die
Ausgabe dieser Dateien wird in die Konfigurationsdatei httpd.conf
übernommen.
Es ist aber vorzuziehen, dass die Modulkonfiguration über die *.conf
Dateien vorgenommen wird, die unter /etc/apache2/mods-available liegen.
Für die Erstellung eines solchen Erweiterungspaketes sind im allgemeinen die folgenden Schritte notwendig:
Das übersetzte httpd-Modul ist vorzugsweise unter /usr/local/apache2/modules abzulegen. Es kann jedoch auch jedes andere Verzeichnis, das vom httpd zu erreichen ist, gewählt werden.
Da es zur Zeit unterschiedliche Versionen des apache2 Paketes gibt, die
nicht zu einander binärkompatibel sind (Version 1.2.x enthält httpd-2.0.x;
Version 1.3.x enthält httpd-2.2.x) muss jedes Modul Erweiterungspaket
selbst die Informationen liefern können, ob es zu der jeweiligen httpd
Version passt. Hierzu ist in der Datei <module>.sh unter
/var/install/config.d/ die Funktion check_httpd zu implementieren. Diese
Funktion muss 0 zurückliefern, wenn das Erweiterungspaket zu dem
installierten apache2 Paket passt. Andernfalls muss diese Funktion 1
zurückliefern.
Auch wenn ein Erweiterungspaket keine Module mitbringt, die von der
verwendeten httpd Version abhängen, muss die Funktion innerhalb des
Erweiterungspaketes implementiert werden. Es reicht dann jedoch leere
Implementierung.
Beispiel für eine Implementierung dieser Funktion:
#------------------------------------------------------------------ # check httpd version #------------------------------------------------------------------ check_httpd () { retval 0 }
Damit das Erweiterungspaket über die Modulkonfiguration des apache2 Paketes
konfiguriert werden kann muss eine Menü-Datei angelegt werden, die
folgendem Namensschema entspricht:
setup.services.apache2.config.modules.<module>.menu
Um zusätzliche Einträge in die Konfigurationsdatei des apache2 vorzunehmen,
die nicht mit Hilfe der Modulkonfigurationsdateien unter
/etc/apache2/mods-available bzw. /etc/apache2/mods-enabled vorgenommen
werden können, kann im Erweiterungspaket eine Datei httpd.conf.<module>.sh
angelegt werden. Diese Datei muss unter /var/install/config.d/ abgelegt
werden. Beim Erstellen der apache2 Konfiguration werden automatische
sämtliche Dateien, die obigem Namensschema entsprechen ausgeführt und die
Ausgabe dieser Dateien wird in die Konfigurationsdatei httpd.conf
übernommen.
Es ist aber vorzuziehen, dass die Modulkonfiguration über die *.conf
Dateien vorgenommen wird, die unter /etc/apache2/mods-available liegen.
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 geschieht mit der Hilfe des Pakets „certs“ von Jürgen Edner. (Das Paket wird automatisch bei der Apache-Installation heruntergeladen 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 noch einmal gebraucht wird.
Es folgen weitere Eingaben, wie z.B. die Örtlichkeit oder Ihre E-Mail-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 Name Based Virtual Hosts (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.
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 Logdatei. Mehrere Einträge pro Minute können d urchaus 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/..x5c../winnt/system32/cmd.exe?/c+dir
GET /_vti_bin/..x5c../..x5c../..x5c../winnt/system32/cmd.exe?/c+dir
GET /_mem_bin/..x5c../..x5c../..x5c../winnt/system32/cmd.exe?/c+dir
GET /msadc/..x5c../..x5c../..x5c/..\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/..x35c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..x35c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..x5c../winnt/system32/cmd.exe?/c+dir
GET /scripts/..x2f../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.