mod_jk und SELinux

Tomcat cluster hinter einem Apache HTTPd

Um einen oder mehrere Apache Tomcats hinter einen Apache HTTPd zu betreiben, gibt es verschiedene Protokolle. Ein häufig genutztes Protokoll ist das AJP/1.3-Protokoll (Apache JServ Protocol), da es Load-Balancing unterstützt. Da die SSL-Terminierung bereits im Webserver durchgeführt wird, sollte dieses Betriebsszenario nur verwendet werden, wenn der Kommunikationskanal zwischen HTTPd und Tomcat sicher ist.

mod_jk

mod_jk

Das AJP/1.3-Protokoll unterstützt Tomcat von hause aus, für HTTPd wird es von mod_jk implementiert. Dieses Setup ist relativ einfach und wird von vielen Firmen so betrieben. Soweit die Theorie. In der Praxis wollte dies auf einer Distribution mit SELinux nicht funktionieren und ich fand folgenden Logeintrag:

connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=13)

Die Debug-Ausgaben von mod_jk ergaben, dass eine Verbindung zu 127.0.0.1:8009 fehlschlug. Zuerst hatte ich IPv6 in Verdacht. Also habe ich es erstmal deaktiviert:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

Dies brachte keine Besserung. Der Service lief jetzt zwar unter IPv4, telnet klappte, aber der Apache HTTPd wollte sich trotzdem nicht verbinden. Dann fand ich folgenden Logeintrag

[error] init_jk::mod_jk.c (3235): Initializing shm:/var/log/httpd/jk-runtime-status.16551 errno=13. Load balancing workers will not function properly.

Eine kurze Recherche ergabe, dass SELinux dazwischen funkt. Ich weiß nicht, warum SELinux bei manchen Distribution per Default aktiviert ist. Es zwar für die Sicherheit gut, aber bisher war die Toolunterstützung nicht leicht eingängig. Für einen Einsteiger ist es sehr schwierig, ohne einfache Übersicht (egal ob GUI oder Log-Datei) den Fehler zu finden und einzugrenzen. Meine Lösung ist es in der Datei ‚/etc/selinux/config‘ folgende Zeile einzufügen.

SELINUX=disabled

Anschließend funktioniert alles. Hinweis: Damit wird SELinux vollständig abgeschaltet. Für ein Entwicklungssystem im sicheren Netz ist dies vertretbar, diese Lösung sollte auf keinen Fall auf einem produktiv genutzen Server genutzt werden.

Copyright © christophbrill.de, 2002-2017.