Archive for May, 2008

VirtualHosts,OpenBlueDragon with Tomcat 5.5, Apache2 (mod_jk) on Debian Etch

Coldfusion, Development, General, Linux, Systemadministration | Posted by sebastian
May 31 2008

Bereits im März hat New Atlanta eine OpenSource Version von BlueDragon angekündigt. Nun wurde sie unter OpenBlueDragon veröffentlicht. Da sich BlueDragon durchaus mit dem Coldfusion Server von Adobe messen kann, ist OpenBlueDragon ideal um Coldfusion in eine Linux/MySQL Umgebung zu integrieren und so eine direkte Konkurrenz zu der sonst üblichen PHP/MySQL Umgebungen werden.

Nach dieser Anleitung soll OpenBlueDragon mit Tomcat 5.5 unter Debian Etch installiert werden. Anschließend soll Tomcat mit mod_jk mit dem Apache2 verbunden werden.

Natürlich kann diese Anleitung auch verwendet werden, um nur den Tomcat zusammen mit Apache einzurichten. In diesem Fall müssen nur die OpenBlueDragon Abschnitte ausgelassen werden.

Es gibt verschiedene Gründe warum man Tomcat zusammen mit Apache einsetzt. Der Apache kann langsame Verbindugen Buffern, man kann mit weitere Funktionen benutzen wie PHP oder Perl, Apache Module stehen zur Verfügung wie mod_rewrite außerdem können die Virtuellen Hosts so konfiguriert werden, dass sie eigene Tomcat Instanzen benutzen.
.

Für die Installation von Tomcat wird jedoch zuerst noch das Sun Java JDK gebraucht. Um diese zu installieren mussen in der /etc/apt/sources.list die “non-free” Pakete hinzugefügt werden:

deb-src http://ftp.debian.org/debian/ main 

Anschließend kann mit

# aptitude update
# aptitude install sun-java5-jdk

das Sun Java JDK installiert werden.

Nun kann Apache Tomcat installiert werden:

# aptitude install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Um zu überprüfen ob Tomcat läuft, kann man folgende URL im Browser aufrufen: http://SERVER:8180

Als nächstes muss ein Benutzer konfiguriert werden, mit dem Tomcat verwaltet werden soll.

# /etc/init.d/tomcat5.5 stop
# vim /var/lib/tomcat5.5/conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="admin"/>
<role rolename="manager"/>
<role rolename="tomcat"/>
<user username="admin"
password="foobar"
roles="tomcat,admin,manager"/>
</tomcat-users>

# vim /etc/default/tomcat5.5
TOMCAT5_SECURITY=no
# /etc/init.d/tomcat5.5 start

Natürlich sollte das Passwort durch ein eigenes ersetzt werden ! Das deaktivieren von TOMCAT5_SECURITY ist notwendig um Zugriff auf die Administration zu erhalten. Sollte man die Administration nicht benötigen kann diesen Schritt natürlich weglassen oder nach dem festlegen der Einstellungen wieder aktivieren.

Nun kann man sich in den Tomcat Manager einloggen http://SERVER:8180/manager/html sowie in den Administrator http://SERVER:8180/admin

Dort kann im Abschnitt “Deploy” das openbluedragon.war Paket hochgeladen werden.

Nach dem Neustart von Tomcat “/etc/init.d/tomcat5.5 restart” findet man openbluedragon in der Applications List im Tomcat Manager.

Installation Apache2 mit Tomcat-Connector

Tomcat besitzt zwar einen eingebauten Webserver, jedoch ist der Apache2 Webserver wesentlich Leistungsfähiger.

Installation:

# aptitude install apache2 libapache2-mod-jk
# vim /etc/apache2/workers.properties

workers.tomcat_home=/usr/share/tomcat5.5
workers.java_home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.14
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
JK Konfigurationsdatai
# vim /etc/apache2/conf.d/jk.conf
<IfModule mod_jk.c>
    JkWorkersFile /etc/apache2/workers.properties
    JkLogFile /var/log/apache2/mod_jk.log
    JkLogLevel error
</IfModule>
# /etc/init.d/apache2 stop
# /etc/init.d/tomcat5.5 restart
# /etc/init.d/apache2 start

Nun soll ein neuer VirtualHost angelegt werden. Dieser muss im Apache und im Tomcat angelegt werden.

Verzeichnise vorbereiten:

# mkdir /var/www/vhost1
# mkdir /var/www/vhost1/htdocs
# mkdir /var/www/vhost1/logs

WEB-INF kopieren:

# cp /var/lib/tomcat5.5/webapps/openbluedragon/WEB-INF /var/www/vhost1/htdocs/

VirtualHost im Apache anlegen:

# vim /etc/apache2/sites-available/vhost1
<VirtualHost www.testsrv.local>
    JkMount /*.cfm default
    JkMount /*.cfc default
    JkMount /*.jsp default
    ServerName www.testsrv.local
    ServerAdmin servermaster@testsrv.local
    DocumentRoot /var/www/vhost1/htdocs
    ErrorLog /var/www/vhost1/logs/error.log
    CustomLog /var/www/vhost1/logs/access.log common
    <Location /WEB-INF/ >
      AllowOverride None
      deny from all
    </Location>
</VirtualHost>
# a2ensite vhost1
# /etc/init.d/apache2 reload

Bemerkung: Man könnte auch alle Dateien an den Tomcat weiterleiten “JkMount /*” oder alle Dateien innerhalb eines Verzeichnisses “JkMount /folder/*“.

Host im Tomcat anlegen:

# vim /etc/tomcat5.5/server.xml
<!-- www.testsrv.local -->
<Host name="www.testsrv.local" appBase="/var/www/vhost1"
      unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="htdocs" debug="0" reloadable="true"/>
      <Valve className="org.apache.catalina.valves.AccessLogValve"
             directory="/var/www/vhost1/logs"  prefix="tomcat_access_" suffix=".log"
             pattern="common" resolveHosts="false"/>
</Host>

Zum Schluss muss man den Tomcat sowie den Apache Server neu starten:

# /etc/init.d/tomcat5.5 restart
# /etc/init.d/apache2 restart

[UPDATE]

Von diesen Artikel ist eine neue Version Verfügbar Tomcat 6 mit Lenny und OpenBlueDragon auf Tomcat 6

VMWare Server 1.0.5 – Ubuntu Hardy Heron 8.04

Linux, Systemadministration | Posted by sebastian
May 30 2008

Der VMWare Server lässt sich unter Ubuntu 8.04 nicht mehr über den Paketmanager installieren. Man muss ihn deshalb manuell installieren. Dazu läd man sich zuerst den VMWare Server von der VMWare Webseite herrunter. Außerdem wird das vmware-any-any-update116 (482.8 KB) in der Version 1.1.6 benötigt, welches man in das entpackte VMWare Server Verzeichnis kopiert. Bevor man mit der eigentlichen Installation beginnen kann müssen aber zuerst noch einige andere Pakete installiert werden.

sudo aptitude install linux-headers-`uname -r` build-essential xinetd gcc-3.4

Danach kann man den VMWare Installer starten.

cd vmware-server-distrib
sudo ./vmware-install.pl

Die abgefragten Einstellungen können alle mit “Enter” bestätigt werden. Bis zu der Frage ob man das VMWare Konfigurationsskript (vmware-configure.pl) ausführen will, welche man mit “No” beantwortet.

Nun muss das vmware-any-any-update ausgeführt werden:

cd
cd vmware-any-any-update116
sudo ./runme.pl

Hier kann das VMWare Konfigurationsskript am Ende nun ausgeführt werden.

Zum Schluss müssen noch zwei lib-Dateien in das VMWare Verzeichnis kopiert werden, sonst lässt sich die VMWare Konsole nicht starten:



sudo cp /usr/lib/libpng12.so.0 /usr/lib/vmware/lib/libpng12.so.0
sudo cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1

Nun sollte man die Konsole starten können und der VMWare Server ist erfolgreich installiert.

Adobe Coldfusion 8 – Ubuntu Hardy Heron 8.04

Coldfusion, Development, Linux, Systemadministration | Posted by sebastian
May 21 2008

Adobe Coldfusion 8 lässt sich als 30 Tage Testversion oder als kostenlose Entwicklerversion von der Adobe Webseite herrunterladen. www.adobe.com

Der Apache 2 Webserver sollte bereits installiert und konfiguriert sein.

Bevor man mit der eigentlichen Installation beginnt, müssen noch einige erforderliche Pakete installiert werden:

sudo aptitude install libstdc++5 libstdc++6

Zusätzlich muss noch ein Symlink für die Bibliotheken angelegt werden:

sudo ln -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2

Nun kann man den Linux Installer starten, den man sich von der Adobe Webseite heruntergeladen hat.

sudo chmod +x coldfusion-801-lin.bin
sudo ./coldfusion-801-lin.bin

Der Installer stellt einige Fragen zu Pfaden sowie dem Installationsverzeichnis, für das ich “/opt/coldfusion” gewählt habe:

CHOOSE LOCALE BY NUMBER: 1
PRESS <ENTER> TO CONTINUE: <ENTER>
PRESS <ENTER> TO CONTINUE: <ENTER>
...
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): Y
Installation Choice: 3 (Developer Edition)
Choose one of the following options:: 1 (Server configuration)
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT: 2
Select an option: 2 (remove "Adobe LiveCycle Data Services ES")
Select an option: 5
ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT: /opt/coldfusion
INSTALL FOLDER IS: /opt/coldfusion IS THIS CORRECT? (Y/N): Y
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT: 2
Configure Webserver: 1 (Add Web Server Configuration)
Select "Apache" 1
Directory: /etc/apache2
File: /usr/sbin/apache2
File: /etc/init.d/apache2
Choice: 4 (Continue with installation)
Directory: (DEFAULT: /etc/htdocs): /var/www
User Name: (DEFAULT: nobody): <ENTER>
Password: <Your custom CF Password>
Enable RDS  (Y/N): Y
Password: <Your custom CF Password>
PRESS <ENTER> TO CONTINUE: <ENTER>
Press Enter to exit the installer: <ENTER>

Nach der Installation kann man den Coldfusion Server starten

sudo /opt/coldfusion/bin/coldfusion start

Damit der Coldfusion Server automatisch beim Systemstart mitgestartet wird, sind noch diese beiden Schritte notwendig:

sudo cp /opt/coldfusion/bin/coldfusion /etc/init.d
sudo update-rc.d coldfusion defaults

Damit ist der Coldfusion Server fertig installiert. Die Konfiguration und das Einspielen der neusten HotFixes erfolgt über den Coldfusion Administrator. (http://SERVER/CFIDE/administrator/index.cfm)

Webmin und SSH mit Fail2ban unter Debian absichern

Linux, Systemadministration | Posted by sebastian
May 19 2008

Fail2ban kann IP Adressen aufgrund einer bestimmten Anzahl fehlgeschlagener Loginversuche, für eine Einstellbare Zeit blockieren. D.h. es werden per “IPTables” alle Pakete von dieser Adresse verworfen. Auf diese Weise kann man sich vor Bruce-Force-Angriffen schützen, da nach einer festgelegten Anzahl von Loginversuchen, kein Zugriff mehr auf den Server möglich ist.

Installation:

aptitude install fail2ban

Die fehlgeschlagenen Loginversuche werden von Fail2ban durch Filterregeln ermittelt. Für ssh existiert bereits eine Filterregel, für webmin muss man selbst eine anlegen. Dazu kopiert man zuerst die Filterregel für ssh

cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/webmin.conf
vim /etc/fail2ban/filter.d/webmin.conf

und tauscht anschließend die Zeile mit der “failregex” durch diese aus

failregex = (?:(?:Invalid login|Non-existent login) as(?: [iI](?:llegal|nvalid) user)
?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) <HOST>

Nun kann man die fail2ban Konfiguration anpassen:

touch /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

und dort folgenden Inhalt einfügen:

[ssh]
enabled = true
port    = 22
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 3

[webmin]
enabled = true
port    = 10000
filter  = webmin
logpath  = /var/log/auth.log
maxretry = 3

Anschließend muss Fail2ban neu geladen werden, damit die Konfiguration übenommen wird.

fail2ban-client reload

Fail2ban legt für jeden Service eine eigene Chain in den INPUT IPTables an. In diesem Fall also “Run chain fail2ban-webmin” und “Run chain fail2ban-ssh“. In diesen Chains werdem alle IP Adressen vermerkt, welche die maximale Anzahl von Loginversuchen überschritten haben, und damit ausgesperrt sind. Wenn die “bantime” vorüber ist, werden die Einträge wieder entfernt. Man sperrt sich also selbst nicht für immer aus, wenn man mal selbst zuoft ein falsches Passwort eingegeben hat.

Natürlich kann man auf diese Weise noch weitere Dienste wie Apache usw. entsprechend absichern. Fail2ban liefert dafür bereits einige entsprechende Filter mit.