Pentaho: Online mit dem Demo-Server

Als Erstes: Passwörter ändern

Auf dem frisch installierten Demo-Server sind vier Benutzer mit allseits bekannten Passwörtern angelegt. Das muss natürlich geändert werden, bevor der Server von außen erreichbar ist. Die Login-Informationen kommen aus der Datei C:/pentaho/pentaho-demo/jboss/server/default/deploy/pentaho.war/WEB-INF/applicationContext-acegi-security-memory.xml. Dort findet sich folgender Abschnitt:

<bean id=“userMap“ class=“java.lang.String“></bean>
<constructor-arg type=“java.lang.String“></constructor-arg>
<!– case matters –>
<value></value>
<!–DATA[<–>
joe=password,ceo,Admin,User,Authenticated
suzy=password,cto,is,User,Authenticated
pat=password,dev,User,Authenticated
tiffany=password,dev,devmgr,User,Authenticated
]]>

Hier werden also sowohl die Passwörter als auch die Gruppenzugehörigkeiten zugewiesen. Alle Passwörter lauten im Urzustand „password“. Ich nenne den ersten User „admin“ anstatt „Joe“ und gebe ihm ein Passwort meiner Wahl. Bei den anderen Benutzern setze ich kryptische Passwörter. Natürlich kann man die anderen Accounts auch einfach löschen, ich behalte sie aber noch bei, um später benutzerabhängige Berechtigungen testen zu können.

Zweitens: JBOSS-JMX-Konsole sperren

In einer Standard-Installation des JBOSS-Servers ist die sogenannte JMX-Konsole frei zugänglich. Dies ist auch in der mit dem Pentaho-Demo-Server ausgelieferten Version der Fall. Da es über diese Konsole für einen Angreifer möglich ist, Systembefehle mit den Berechtigungen des JBOSS-Servers auszuführen, muss dieses Sicherheitsloch gestopft werden.

In der Datei C:\pentaho\pentaho-demo\jboss\server\default\deploy\jmx-console.war\WEB-INF\web.xml muss der folgende Abschnitt gefunden und die hier rot markierten Zeilen gelöscht werden:

<!– A security constraint that restricts access to the HTML JMX console
to users with the role JBossAdmin. Edit the roles to what you want and
uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
secured access to the HTML JMX console.

<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
–>

Im gleichen Verzeichnis muss in der Datei jboss-web.xml ebenfalls ein Kommentar entfernt werden:

<!– Uncomment the security-domain to enable security. You will
need to edit the htmladaptor login configuration to setup the
login modules used to authentication users.

<security-domain>java:/jaas/jmx-console</security-domain>
–>

Damit ist dann schon mal ein Passwort-Schutz aktiviert, jetzt muss nur noch das Standard-Login (User: admin, Passwort: admin) abgeändert werden. Das passiert in der Datei C:\pentaho\pentaho-demo\jboss\server\default\conf\props\jmx-console-users.properties. Hier kann man zum Beispiel die Zeile admin=admin durch keinerechte=haha ersetzen. Nun kann sich ein User „keinerechte“ mit dem Passwort „haha“ anmelden, er bekommt aber danach nur die Meldung zu sehen, dass er nicht über die nötigen Rechte verfügt, die Konsole zu sehen. Das liegt daran, dass der User „keinerechte“ nicht der Rolle „JBossAdmin“ zugeordnet ist. Sicher ist sicher.

Drittens: Auf externer Adresse erreichbar machen

Bisher reagiert das Ganze nur auf Anfragen an localhost. Angenommen, man hat die Installation auf einem Server ohne grafischen Desktop durchgeführt, dann möchte man sicherlich von einem anderen Rechner aus auf das Webinterface zugreifen. Dazu muss mindestens das Folgende passieren:

JBOSS dazu bringen, auf die externe IP-Adresse zu hören

Wenn es auf einem Server läuft und extern erreichbar sein soll, gehe ich mal von einem Linux-Server aus. Dort findet sich in der Datei /pentaho/pentaho-demo/start-pentaho.sh diese Zeile:

sh run.sh

An diese Zeile wird die IP angehängt:

sh run.sh -b 192.168.100.100

Damit JBOSS auch wieder beendet werden kann, muss auch in der Datei /pentaho/pentaho-demo/stop-pentaho.sh diese Zeile geändert werden:

./shutdown.sh -S

Daraus würde dann in unserem Beispiel:

./shutdown.sh -s 192.168.100.100 -S

Ändern der Pentaho-Basis-URL

Damit in den generierten HTML-Dateien die Verknüpfungen zu CSS-Dateien und sonstigen Inhalten stimmen, muss der BI-Server die Basis-URL kennen. Diese wird in der Datei /pentaho/pentaho-demo/jboss/server/default/deploy/pentaho.war/WEB-INF/web.xml definiert. Der betreffende Abschnitt sieht so aus:

<context-param>
<param-name>base-url</param-name>
<param-value>http://localhost:8080/pentaho/</param-value>
</context-param>

Das Wörtchen localhost muss hier also durch die externe IP-Adresse oder den Domain-Namen ersetzt werden.

Viertens: Das Ganze per SSL erreichbar machen

Die SSL-Konfiguration hat mit dem JBOSS-Server nicht viel zu tun, denn in der Praxis übernimmt diesen Part normalerweise ein vorgeschalteter Webserver, der als Proxy fungiert. Ich beschreibe den Aufbau anhand eines Apache2-Servers.

2 Reaktionen zu “Pentaho: Online mit dem Demo-Server”

  1. Klaus

    Gibt es eine Möglichkeit den JBoss Server per default mit einem Login zu versehen. Also bevor man auf den Content zugreifen kann, sei es Pentaho, JMX-Console oder welche Anwendung auch immer noch auf den JBoss liegt, vorher ein Basic Login durchzuführen?

  2. colorfool

    Eine häufig zu findende Konfiguration ist, dass man an der vorderen Front einen normalen Apache-Webserver laufen hat. Dieser gibt dann mit Hilfe von mod_jk lediglich bestimmt Requests an der JBoss weiter, der ansonsten von außen gar nicht zu erreichen ist.

    Im JBoss kann natürlich auch für Sicherheit gesorgt werden, wobei ich so aus dem Stehgreif jetzt nicht wüsste, wie man das allgemein gültig für alle Applikationen einrichtet. Wie man eine einzelne Applikation gezielt mit einer Authentifizierung versieht, findet sich hier:
    http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureAWebApplicationInJBoss

Einen Kommentar schreiben