tomcat
QuickTipp: Apache Tomcat 7 bestimmte IP Adressen erlauben oder sperren
Auch im Tomcat ist es möglich einen Schutz auf Basis von IP Adressen für bestimmte Webseiten zu definieren. Im Apache funktioniert der IP Zugriffschutz via .htaccess Datei. Im Tomcat gibt es zwar keine .htaccess Dateien allerdings ist es über die server.xml Konfigurationsdatei sehr einfach einen IP Adressen Schutz einzubauen
Tomcat Zugriff nur von localhost erlauben:
Die Einstellung RemoteAddrValve erlaubt die Verwendung von Regular Expressions (RegEx), wodurch es ziemlich einfach ist bestimmte IP Bereiche zu verwenden. Folgender Bereich wird zB. für den localhost auf IPv4 und IPv6 Basis angewendet. Bedeutet also dass nur die localhost IP Range 127.x.x.x und die IPv6 localhost IP 0:0:0:0:0:0:0:1 zugelassen sind. (Werte werden durch | (pipe) getrennt:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|0:0:0:0:0:0:0:1"/>
Tomcat Zugriff nur von bestimmten IP Adressen erlauben
Hier ist ein weiteres Beispiel damit die Verwendung der Regular Expressions (RegEx) verdeutlicht wird. Also werden jetzt zB:. nur IP Adressen aus dem Bereich 192.168.x.x und 10.x.x.x und die externe IP Adresse 8.8.8.8 zugelassen. Der Valve Wert dafür würde so aussehen:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.186\.\d+\.\d+|10\.\d+\.\d+\.\d+|8.8.8.8"/>
Tomcat Zugriff von bestimmten IP Adressen sperren bzw. verweigern
Natürlich ist es auch möglich bestimmte IP Adressen oder Bereiche explizit zu sperren. Dazu wird nicht der Wert “allow” sondern “deny” verwendet. In folgendem Beispiel wird der Zugriff vom IP Bereich 10.10.x.x und der IP 8.8.8.8 auf unseren Host verweigert:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="10\.10\.\d+\.\d+|8.8.8.8"/>
Den Valve Wert in die server.xml einbauen
Dazu wird die entsprechende Tomcat Konfigurationsdatei (server.xml) editiert und an der benötigten Stelle (Engine, Host, oder Context) der valve Eintrag hinzugefügt. An meinem Beispiel füge ich den Eintrag in der Hosts Konfiguration hinzu damit die Einstellung für den gesamten Hosteintrag vhost.domain.com gilt.
<Host name="vhost.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path=""
docBase="/usr/local/tomcat/webapps/examples"
debug="0" reloadable="true" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
</Host>
Weitere Infos direkt in der Tomcat Documentation
QuickTipp: Tomcat 7 Directory Listing aktivieren
Im Apache Tomcat ist standardmäßig das Auflisten von Dateien in einem Verzeichnis (directory listing) deaktiviert. Wer das Feature jedoch benötigt kann es ganz einfach in der Serverkonfiguration aktivieren
Dazu wird die Datei /usr/local/tomcat/conf/web.xml (Verzeichnis kann natürlich je nach verwendetem Installationspfad abweichen) mit dem Lieblingseditor editiert und der “param-name” Wert für listings auf “true” gesetzt. In folgendem Beispiel Zeile 10:
vi /usr/local/tomcat/conf/web.xml
<servlet>
<pre> <servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Der Tomcat muss im Anschluss neu gestartet werden damit die Änderung greift:
/etc/init.d/tomcat stop /etc/init.d/tomcat start
Link: Tomcat 7 default Servlet
HowTo: Tomcat 7 Installation via mod_jk und Apache vHosts unter Debian
Da der Apache Webserver wesentlich leistungsfähiger und flexibler als der integrierte Webserver des Tomcat ist, ist es sinnvoll diesen auch einzusetzen. Zusätzlich können wir auf die Apache Module zurückgreifen und das vHost Management verwenden. Die Lösung wird via dem Apache Modul mod_jk realisiert, welches sämtliche Webserveranforderungen über das AJP Protokoll an den Tomcat weiterleitet.
Vorbereitung
*) Apache Tomcat 7 Installation wie in diesem HowTo beschrieben
*) Apache Webserver Installation (mod_jk kann auch in bestehende Installationen integriert werden)
aptitude install apache2
Installation und Konfiguration des mod_jk Apache Moduls
Das mod_jk Apache Modul kann bequem über das Debian Repository installiert werden:
aptitude install libapache2-mod-jk
Debian installiert dabei bereits die entsprechende Beispielkonfiguration mit, welche wir für unsere Zwecke editieren. Wenn die Tomcat Installation noch bei der Standardinstallation belassen wurde, müssen nur die ersten beiden Werte angepasst werden.
vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/local/tomcat workers.java_home=/usr/lib/jvm/java-6-sun ps=/ worker.list=ajp13_worker worker.ajp13_worker.port=8009 worker.ajp13_worker.host=localhost worker.ajp13_worker.type=ajp13 worker.ajp13_worker.lbfactor=1
In folgendem Schritt erstellen wir die Apache Modul Konfigurationsdatei für mod_jk mit folgenden Werten:
vi /etc/apache2/conf.d/mod-jk.conf
JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel error JkShmFile /var/log/apache2/jk-runtime-status
HowTo: Tomcat 7 StandAlone unter Debian Squeeze und Wheezy installieren
Da der Apache Tomcat 7 noch nicht in den Standardrepositories und auch nicht in den Backports von Debian enthalten ist, zeige ich in diesem Tutorial wie man den Tomcat 7 als Standalone Variante ganz einfach unter Debian Squeeze und Wheezy installiert. Ergänzend dazu folgt noch ein Tutorial zur Einbindung in den Apache Webserver via mod_jk
Vorbereitung
Damit der Tomcat unter Debian läuft benötigen wir Java. Wie die Installation funktioniert ist hier beschrieben:
*) Java 6 Installation
*) Java 7 Installation
Tomcat 7 downloaden und entpacken
Die aktuellste Apache Tomcat Version (bei meinem Stand: 7.0.37) von der Herstellerwebseite downloaden und entpacken. Ich verwende wie immer das Verzeichnis /usr/src
cd /usr/src wget http://www.eu.apache.org/dist/tomcat/tomcat-7/v7.0.37/bin/apache-tomcat-7.0.37.tar.gz tar -xzvf apache-tomcat-7.0.37.tar.gz
Linux User und Gruppe für Tomcat anlegen
In folgenden Schritten legen wir einen eigenen Linux User (tomcat) + zugehöriger Gruppe (tomcat) für unseren Tomcat Server an. Das Home Verzeichnis des Users wird dabei auf das Installationsverzeichnis unseres Tomcat gesetzt. Ich verwende /usr/local/tomcat, kann aber auch auf ein anderes Verzeichnis geändert werden. Zusätzlich geben wir den User in die Gruppe www-data welche vom Apache verwendet wird.
groupadd tomcat useradd -g tomcat -d /usr/local/tomcat tomcat usermod -G www-data tomcat
Tomcat 6 mit MOD_JK (Apache Tomcat Connector) unter Windows in IIS Integrieren
Um den Tomcat Webserver unter Windows in den IIS zu integrieren, bedarf es einiger manueller Konfigurationsarbeit, welche ich in diesem HowTo genauer beschreiben möchte
Damit Microsofts IIS (Internet Information Services) mit dem Tomcat spricht und den Inhalt der Tomcat Instanz ausliefern kann, gibt es das “Apache Tomcat Connector” Plugin (Beim Apache Webserver auch als mod_JK bezeichnet). Das Plugin implementiert dem IIS das notwendige AJP (Apache JServ Protocol).
Ich persönlich bin eigentlich eher abgeneigt gegen Windows bzw. Windows Web Servern, da ich in der Linux Welt zuhause bin. Wenn es dennoch sein muss und die Anforderung zur Integration des Tomcats in den IIS besteht, muss man über seinen Schatten springen und eine entsprechende Lösung implementieren. Der Guide beschränkt sich hierbei auf den IIS6 unter Windows Server 2003
Voraussetzungen:
- Eine installierte Tomcat Instanz: egal ob auf dem selben Server und ob Windows oder Linux
- Der AJP 1.3 Connector muss in der server.xml des Tomcats aktiviert sein (StandardPort ist 8009)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> - Der AJP 1.3 Connector Port (8009) muss von dem entsprechenden Windows Server erreichbar sein
Download der IIS Erweiterung:
Der “Apache Tomcat Connector” kann direkt von der Homepage der Apache Software Foundation heruntergeladen werden. Ich verwende hier die aktuelle stable Version “jk-1.2.30″ für 32bit. Die benötigte Datei trägt den Namen isapi_redirect-1.2.30.dll. Direktlink. Bei einem 64bit System ist unbedingt die 64bit Version zu empfehlen, da sonst der ISAPI Filter nicht geladen wird.
Die Datei kann natürlich in ein beliebiges Verzeichnis gelegt werden. Ich habe aber gerne alle Komponenten beisammen und lege sie daher in mein tomcat/bin Verzeichnis: (D:\apache-tomcat-6.0.26\bin)
Registry Keys und Konfigurationsfiles erstellen
Unter Windows ist es leider notwendig bestimmte Registry Keys und Konfigurationsdateien manuell zu erstellen und anzupassen. Für Schreibfaule habe ich ein Paket mit den Registry Keys und den Configfiles zusammengestellt welches ihr hier downloaden könnt. Ihr müsst diese dann lediglich noch für eure Bedürfnisse anpassen. Wer die Keys manuell erstellen will, der kann hier weiterlesen:
Letzte Beiträge
- Icinga 1.9 Installation unter Debian squeeze + wheezy – aktuellste Version
- QuickTipp: klassischen GNOME Desktop (classic GNOME) unter Ubuntu installieren
- Debian-Ubuntu apt-get: The Following Packages Were Automatically Installed And Are No Longer Required
- Debian 7.0 Wheezy veröffentlicht – Das sind die Neuerungen
- Apache Webserver Directory Listing (Verzeichnisauflistung) deaktivieren / aktivieren


