Apache

Ansprechpartner

k3t
Mathias

1. TODO

2. Installation

Installiert wird das Paket apache2.

3. Firewall

Die Details der Firewall-Konfiguration sind auf einer separaten Seite beschrieben.

4. Module

Modul

Zweck

Dokumentation

expires (optional)

Wiki: Ablaufdatum für statische Inhalte setzen (Performance)

https://httpd.apache.org/docs/2.4/mod/mod_expires.html

headers

HTTP-Header für Serverantwort setzen (Sicherheit)

https://httpd.apache.org/docs/2.4/mod/mod_headers.html

macro

Makro-Unterstützung in den Konfigurationsdateien

https://httpd.apache.org/docs/2.4/mod/mod_macro.html

ssl

HTTPS-Verbindungen aktivieren

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

wsgi (optional)

Wiki: WSGI-Schnittstelle einsetzen; ersetzt CGI

http://code.google.com/p/modwsgi

Bitte beachten:

Bei aktiviertem wsgi Modul reicht ein Reload von Apache nicht aus. Wegen der zusätzliche Daemon-Prozesse muss es ein Restart sein!

5. X.509-Zertifikat und TLS-Konfiguration

Für TLS wird das Modul mod_ssl eingesetzt. Alle VirtualHosts verwenden dieselbe Konfiguration von mod_ssl. Details siehe unten bei den Sites-Konfigurationen. Die Auswahl und Reihenfolge der cipher suites wird auf einer separaten Seite erläutert.

Das Zertifikat für

wurde von Let's Encrypt beglaubigt. Wir nehmen dafür das certbot packet, welches die Zertifikate automatisch erneuert. Als Emailadresse ist bei certbot admin@lug-in.de hinterlegt.

Das Zertifikat muss in der Apache Konfiguration eingebunden werden, certbot setzt die Optinen in die Site-Configs automatisch ein, da wir die SSL-Optionen selbst setzen, kann man den Import der letsencypt cipher config wieder rausnehmen. Das Zertifikat liegt im pfad /etc/letsencrypt/live/lug-in.de/.

6. /etc/apache2/apache2.conf

Die Hauptkonfigurationsdatei /etc/apache2/apache2.conf bleibt beinahe unverändert. Durch den mit der Apache-Version 2.4 neu eingeführten Mechanismus mit Konfigurationsdateien in /etc/apache2/conf-{available,enabled} können wir die für die LUG IN spezifischen Änderung und Anpassungen teilweise in die Datei lug-in.conf auslagern.

Konfigurationsabschnitte, bei denen es auf die Reihenfolge der Verarbeitung durch Apache ankommt, müssen trotzdem in apache2.conf bleiben:

Zum Aktivieren macht man Folgendes:

7. /etc/apache2/conf-available/lug-in.conf

Die Konfigurationsdatei wird aktiviert.

$ a2enmod lug-in

8. /etc/apache2/conf-available/ssl_opts.conf

<IfModule mod_ssl.c>
   # parts from cipherlist.eu
   SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
   # Requires Apache 2.4.36 & OpenSSL 1.1.1
   SSLProtocol -all +TLSv1.3 +TLSv1.2
   SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
   # Older versions
   # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
   SSLHonorCipherOrder On
   Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
   Header always set X-Frame-Options DENY
   Header always set X-Content-Type-Options nosniff
   # Requires Apache >= 2.4
   SSLCompression off
   SSLUseStapling on
   SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
   # Requires Apache >= 2.4.11
   SSLSessionTickets Off

</IfModule>

Die Konfigurationsdatei wird aktiviert.

$ a2enmod ssl_opts

9. /etc/apache2/envvars

Die Datei enthält einige Umgebungsvariablen für Apache. Für das MoinMoin-Wiki, genauer, für dessen CGI-/WSGI-Prozesse, wird die Variable MOINLOGGINGCONF benötigt. Die Variable kann nicht per SetEnv-Anweisung gesetzt werden, da sie dann nicht an die Python-Kind-Prozesse durchgereicht wird!

Die bestehenden Umgebungsvariablen werden nicht verändert. Wir ergänzen nur:

# Moinmoin wiki logging configuration; for details see
# /usr/share/pyshared/MoinMoin/log.py
export MOINLOGGINGCONF=/etc/moin/logging.conf

10. Sites

Die Konfiguration für Sites befinden sich in /etc/apache2/sites-available. Hier sollten die einzelnen Konfigurationsdateien dokumentiert werden.

Auch hier gilt, dass nach jeder Änderung mit service apache2 reload die Konfiguration neu geladen bzw. mit service apache2 restart der Webserver neu gestartet werden muss.

10.1. default.conf

Die Apache Standardseite ist deaktiviert.

$ a2dissite default

10.2. lug-in-wiki.conf (MoinMoin)

Ansprechpartner

k3t
Mathias

Diese Site stellt das MoinMoin Wiki bereit.

Das Wiki wird im Normalfall über ein Python-Skript /usr/share/moin/server/moin.cgi per CGI angesprochen. Dies ist nicht besonders schnell, weil bei jedem Zugriff auf das Wiki erst die Python-Instanz geladen und initialisiert werden muss. Deswegen ersetzen wir den CGI-Anschluss durch einen WSGI-Anschluss, so dass immer eine gewisse Anzahl von Python-Instanzen im Speicher bereit stehen, um Anfragen sofort bearbeiten zu können.

Dies erledigt das Apache-Modul wsgi, das über das Paket libapache2-mod-wsgi installiert wird. Das alternative Paket python-flup wird nicht benötigt.

Wir erstellen die Konfiguration so, dass immer ein Fallback auf CGI möglich ist, falls wider Erwarten irgendwelche Probleme mit WSGI auftreten sollten. Das ist dann zwar langsam, funktioniert aber. In diesem Fall muss lediglich mit

$ a2dismod wsgi

das Modul wsgi deaktiviert und Apache neu gestartet werden.

Die Konfiguration steht in der /etc/apache2/sites-available/lug-in-wiki.conf

Bemerkungen zur Konfiguration:

Aktivieren der Site:

$ a2ensite lug-in-wiki

Bitte beachten:

Bei Änderungen an der WSGI-Konfiguration reicht ein Reload von Apache nicht aus. Wegen der zusätzliche Daemon-Prozesse muss es ein Restart sein!

Weitere Informationen:

10.3. lug-in-www.conf (Drupal)

Ansprechpartner

jackhammer

Diese Seite stellt die Startseite der LUG-IN bereit. Diese Seite läuft unter Drupal.

Die Konfiguration enthält VirtualHost-Einträge für HTTP sowie HTTPS.

Die Konfiguration steht in /etc/apache2/sites-available/lug-in-www.conf.

Bemerkungen zur Konfiguration:

Aktivieren der Site:

$ a2ensite lug-in-www

10.4. lug-in-cloud.conf (Nextcloud)

Ansprechpartner

jackhammer

Für den Nextcloud-Server stellen wir natürlich auch eine eigene Sites-Datei her, damit das mit dem VirtualHost auch klappt.

Bemerkungen zur Konfiguration:

Aktivieren der Site:

$ a2ensite lug-in-cloud

10.5. lug-in-lists.conf (GNU Mailman)

Ansprechpartner

jackhammer

Startseite des GNU Mailman, Details siehe unter Mailman.

Die Konfiguration enthält VirtualHost-Einträge für HTTP und HTTPS.

Die Konfiguration in /etc/apache2/sites-available/lug-in-lists.conf.

Aktivieren der Site:

$ a2ensite lug-in-lists

11. Scanner

Die Konfiguration von Web-Servern kann über verschiedene Scanner überprüft werden:


CategoryDocumentation

Dokumentation/Apache (last edited 2022-02-13 18:26:12 by sabine)