Wie sicher ist Glassfish standalone?

Apache, Lighttpd, nginx, Cherokee
theoracle
Posts: 5
Joined: 2003-09-28 18:29

Wie sicher ist Glassfish standalone?

Post by theoracle » 2010-04-17 15:05

Hallo allerseits,

Ich betreibe einen Rootserver und überlege Glassfish v3 als Webserver zu verwenden. Meine Frage zielt nicht auf einen Vergleich zwischen Tomcat und Glassfish. Ist es sinnvoll Glassfish hinter einem Apache Proxy zu betreiben, oder kann man den GF guten Gewissens auch standalone betreiben. Ich habe gehört man betreibt den standardmäßig hinter einem Apache und das würde einen Sicherheitsvorteil bringen, aber wenn ja welchen?

Grüße
Theoracle

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: Wie sicher ist Glassfish standalone?

Post by daemotron » 2010-04-17 16:05

Es geht dabei nicht ausschließlich um Sicherheit, sondern auch um Performance. Zum Thema Sicherheit: Apache ist halt ein "bisschen" ausgereifter und länger am Markt, die Wahrscheinlichkeit kritischer Bugs ist beim Indianer also geringer als bei Glassfish (zumindest rein statistisch gesehen; Glassfish ist auch komplexer als Apache (exotische Module mal nicht mitgerechnet), und Complexity breeds Bugs...). Außerdem kann man Apache mit Modulen wie mod_security & Co. aufrüsten, wenn man möchte.

Den Hauptnutzen für einen Reverse Proxy vor (Java-) Applikationsservern sehe ich allerdings darin, statischen Content (Stylesheets, Grafiken & Co.) von einem schlanken, schnellen Server wie Lighttpd oder eben dem Proxy selbst servieren zu lassen - bei solchen Dingen sind Applikationsserver im allgemeinen recht unperformant und verbraten unverhältnismäßig viele Ressourcen. Außerdem kann so recht leicht ein Load Balancing auf mehrere Appserver-Backends implementiert werden.

P. S. nur einfach Apache als Reverse Proxy vor Glassfish zu klemmen bringt keinen Zugewinn an Sicherheit. Ein Reverse Proxy ohne weitere Filtermechanismen würde Requests ja unbesehen an sein Backend durchreichen, auch solche, die potenziell bösartiger Natur sind.
Last edited by daemotron on 2010-04-17 16:08, edited 1 time in total.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

Kurushiyama
Posts: 1
Joined: 2010-06-20 13:34

Re: Wie sicher ist Glassfish standalone?

Post by Kurushiyama » 2010-06-20 14:21

matzewe01 wrote:Allerdings beides auf einem host zu betreiben, das ist ziemlicher Quatsch. Man sollte eine solche "Architektur" auch physisch trennen.


Stimmt so nur bedingt. Einen lighttpd zum servieren von statischem Content kann man ruhig auch auf der selben Maschiene betreiben - der Ressourcenverbrauch des lighty wird durch die Ressourceneinsparung beim Glassfish deutlich aufgewogen.

Einen Apachen würde ich allerdings nicht einsetzen - am allerwenigsten zur Absicherung. Wenn man sich da teilweise die Security Announces allein von Debian anschaut, ist der Apache eine schlechte Wahl. Da sollte man ein Level tiefer gehen und sich mal mit SELinux auseinandersetzen.

Ansonsten kann ich Dir folgende Kombination empfehlen:

  • varnish: Ein http-Accelerator, mit dem hervorragend Bild-, JavaScript- und Stylesheetdateien gecacht werden können. Das kannst Du über den Dateityp regeln. Vorteil des ganzen ist, das Du die Leistung Deiner Maschine voll ausnutzen kannst, indem Du das RAM soweit wie möglich ausnutzt. Illegale Zugriffe können teilweise schon hier abgefangen werden.

  • Lighty Sehr leichtgewichtiger und vor allem sehr schneller Webserver, der (bei Bedarf) trotzdem sehr komplex konfiguriert werden kann. Den würde ich so einsetzen, dass er die statischen Inhalte selbst verteilt und die dynamischen Inhalte vom Glassfish bezogen werden. Du kannst sehr fein einstellen, welche Zugriffe überhaupt an den Glassfish weitergereicht werden. Ausserdem würde ich ihn chrooted einsetzen; wirklich sicherer macht ihn das nicht, aber stellt zumindest das durschnittliche Skriptkiddie vor ein paar Probleme.

    Wenn Dir das zu komplex ist, lässt ihn einfach weg und lässt varnish einfach alle statischen Dateien cachen; dann werden die statischen Inhalte nur vom Glassfish geladen, wenn sie ihre Lebenszeit im Cache überschritten haben.

  • Glassfish: Nutzt Du ja eh schon.

Gegen Dinge wie SQL-Injections etc, welche die Applikationslogik und/oder Implementierung angreifen, nutzt Dir das allerdings alles nix - eine dumme Applikation kannst Du eben nicht intelligent machen.

Um potentiellen Schaden so gering wie möglich zu halten, hier noch ein paar Tipps:

  1. Eigentlich eine Selbstverständlichkeit, aber ich erlebe immer wieder das Gegenteil: Offsite-Backups. Sprich: mindestens einmal am Tag sollte ein Skript ein Backup der Daten machen, die für die Applikation einzigartig sind: Datenbank, Konfigurationsdateien usw. Diese sollten dann entweder auf einem Backupserver /-Space gespeichert werden, der sich nicht auf der selben Maschine wie die Applikation befindet. Du könntest Dir die entsprechenden Dateien zum Beispiel auch verschlüsselt auf einen Google- oder Hotmail-Account schicken lassen.

  2. Rootkitsuche: Teilweise merkst nicht mal ohne weiteres, dass Dein Server gehackt wurde, denn der Angreifer will ja nicht, dass Du ihn vom Netz nimmst. Deswegen solltest einmal täglich nach rootkits suchen lassen, die meisten Skriptkiddies untersuchen das System nicht genug, um dagegen Maßnahmen zu ergreifen. Ich empfehle da entweder rkhunter oder chkrootkit. Wenn Du's auf die Spitze treiben willst, nimm Tripwire

  3. BruteForce-Blocker: Ich habe die besten Erfahrungen mit denyhosts gemacht - Du profitierst dabei von der Tatsache, das bekannte IP-Adressen, die schon häufiger dazu genutzt wurden, Einbrüche zu versuchen, gleich mitgesperrt werden.
    Vorsicht: Mit dem Ding kann man sich auch selbst aussperren, deshalb empfehle ich DRINGEND, statt Passworte Schlüssel zur Authentifizierung zu verwenden.

Gruß,

Kurushiyama

EditP.S.: Um Deine ursprüngliche Frage zu beantworten: Es würde den Vorteil bringen, das der Apache besser abzusichern ist als der Glassfish. Automagisch passiert das allerdings nicht.
Last edited by Kurushiyama on 2010-06-20 14:29, edited 1 time in total.