OpenBSD 5.6 heute als Webserver ?

sergeymkl

New Member
Hallo,

habe vor Jahren mal mit OpenBSD 3.8 einen wunderbar stabilen Webserver aufgesetzt, als mein PowerPC Mac mit OS X Server ersetzt werden sollte.

Es war meine erste OpenBSD-Installation, aber alles lief quasi "out of the box" perfekt und der Server überstand auch diverse Angriffsversuche - der Schaden, als das Passwort eines Kollegen durch Keylogger abhanden kam war nur auf seinen Account beschränkt.

Ich wählte gerade deswegen OpenBSD, weil hier das meiste "secure by default" ist, nützliche Security-Features chroot-ing und privilege-dropping bereits vorkonfiguriert sind, es sehr performant auf alter Hardware läuft und darüber hinaus alles relativ easy direkt in Config-Files konfiguriert wird, ohne viel Abstraktion.

Es war ein "OAMP" Server: OpenBSD + Apache 1.3.29 + PHP5 + MySQL und eine eigener SMS-Gateway-Backend-Daemon von mir in PHP.

Damals war Apache 1.3.29 mit chroot-ing und diversen Security Patches mit dabei. Jetzt ist nginx enthalten, angeblich auch mit chroot, habe noch nicht geschaut. Dieser soll ja ab nächster Version dann entfallen.

Soweit ich informiert bin ist aber weder der Apache2 noch der nginx in den Paketen mit Security Fixes oder chroot. Stimmt das?

Was sagt ihr dazu, welchen Rat gebt ihr mir:
Würdet ihr heute noch Apache 1.3.29 (apache-httpd-openbsd) einsetzen?
Würdet ihr Apache2 ohne chroot einsetzen? (bin eher abgeneigt)
Was bei zukünftigen OpenBSD-Releases wegen nginx machen?

Oder ist vielleicht FreeBSD jetzt die bessere Wahl ?


Falls doch OpenBSD - wie würdet ihr die Partitionen für einen Webserver konfigurieren?
Ich hatte damals ein eigenes /var/www, /home, swap und den Rest alles in einem.
 
Hallo,

Ich würde mir mal folgende Gedanken machen:
  • Wie gut kenne ich das System X,Y
  • Wie schnell werden Sicherheitsupdates geliefert?
  • Wie gross ist der Aufwand, um diese Updates zu installieren?
Diese Punkte (als Vorschlag) würde ich persönlich für mich selber gewichten und dann entscheiden. Du hast vielleicht andere Punkte welche dir wichtig sind.
 
Wie viele andere auch scheinst du - was löblich ist - auf Sicherheit Wert zu legen. Und wie viele andere auch scheinst du bei "Sicherheit" an OpenBSD zu denken - worüber man diskutieren könnte, aber keine Frage, OpenBSD gehört zu den soliden Betriebssystemen.

Und dann lese ich apache. Nun mag apache ja so einiges in Sachen Sicherheit machen und bieten ("mod_echt_total_secure"), was allerdings, um mal einen schönen Begriff von Bruce Schneier zu borgen, zumindest zum Teil eher unter "security theater" zu buchen sein dürfte als unter Sicherheit (wobei ich, das sei der Fairness halber angemerkt, maximal eine Tüte Gummibärchen darauf wetten würde, dass nginx wesentlich sicherer ist).
Und dann der Hammer. PHP. (Von mysql rede ich nicht weiter; das gehört ja quasi automatisch zu so einer Mischung).

Das ist OK, versteh mich nicht falsch. Wenn PHP und mysql das ist, was du brauchst oder gut kennst oder whatever, dann nimm's halt. Nur: Dann, um's bildlich zu sagen, scher dich nicht um ein Sicherheitsschloss für das Zelt, sondern achte lieber darauf, dass dieses wenigstens leidlich ordentlich und stabil aufgebaut ist.

Übersetzt: Mit PHP hast du eh ein ernst zu nehmendes Sicherheitsproblem und PHP Applikationen sind ja nicht zufällig der Ansatzpunkt für böse Cracker. Statt dir um apache vs. nginx oder FreeBSD (mMn stark unterschätzt in Sachen Sicherheit) vs. OpenBSD (mMn stark überschätzt in Sachen Sicherheit) einen Kopf zu machen, achte darauf, dass dein System möglichst sauber konfiguriert ist und geh ansonsten lieber noch 3 mal deinen PHP Code durch, achte auch pingelig auf Sicherheitsrelevante Details wie z.B. mysql per Unix (Domain) socket und nicht per TCP socket anzubinden und achte darauf, die libraries picobello up to date zu halten (soweit möglich mit PHP). Denn da, genau da setzen böse Jungs den Hebel an (und nicht bei FreeBSD oder OpenBSD).

Gutes Gelingen ;)
 
Ich würde mir mal folgende Gedanken machen:
  • Wie gut kenne ich das System X,Y
  • Wie schnell werden Sicherheitsupdates geliefert?
  • Wie gross ist der Aufwand, um diese Updates zu installieren?
Das würde ich voll und ganz unterstützen! Man kann heute auf nahezu allen Plattformen Webserver einigermaßen sicher laufen lassen - wenn man das System kennt, die entsprechenden Parameter einstellt und Updates einspielt bzw. Sicherheitshinweise berücksichtigt.

OpenBSD, z.B., unterstützt einen Release immer nur über zwei Releases hinweg. Nach 1 Jahr musst Du upgraden, wenn Du aktuell und sicher bleiben willst. Und OpenBSD ist dafür bekannt, dass Rückwärtskompatibilität keine hohe Priorität hat. Der Webserver im Basissystem von OpenBSD war in drei Releases drei mal ein anderer: Zunächst noch Apache 1.3, dann nginx und jetzt der aus relayd entsprungene eigene httpd. Klar, man kann weiterhin Apache 1.3 oder nginx verwenden, aber es ist nicht mehr im Basissystem enthalten. Mit FreeBSD - oder mit einer konservativeren Linux-Distribution wie Debian, RH/CentOS hättest Du da viel länger "Ruhe".

Und sollte Performance eine Rolle spielen, ist OpenBSD sicher nicht die erste Wahl als Webserver, schon gar nicht mit dem alten Apache 1.3, aber auch nicht mit dem neuen, eigenen httpd. Das sehen selbst deren Entwickler so, wie man z.B. von Reyk Floeter selbst hören konnte im BSD Now Interview. Performance steht einfach nicht im Fokus eines Webservers in OpenBSD's Basissystem.
 
Danke für eure Tipps!

Hallo,

Ich würde mir mal folgende Gedanken machen:
  • Wie gut kenne ich das System X,Y
  • Wie schnell werden Sicherheitsupdates geliefert?
  • Wie gross ist der Aufwand, um diese Updates zu installieren?
Diese Punkte (als Vorschlag) würde ich persönlich für mich selber gewichten und dann entscheiden. Du hast vielleicht andere Punkte welche dir wichtig sind.

Danke - was den ersten Punkt betrifft, würde ich sagen, dass ich Linux nicht besser als OpenBSD kenne und gerade deswegen auf OpenBSD setzen will, da ich hier Probleme selbst aktiv schaffen muss und nicht dran denken muss bereits per Default vorhandene zu stopfen. Fahrlässiger "Dummy-Admin" bin ich zwar keiner, pf habe ich bereits konfiguriert, aber mit einem echten eingefleischten Linux/BSD-Sysadmin, der sein Revier in und auswenig kennt kann ich mich nicht messen.

To ensure that novice users of OpenBSD do not need to become security experts overnight (a viewpoint which other vendors seem to have), we ship the operating system in a Secure by Default mode. All non-essential services are disabled. As the user/administrator becomes more familiar with the system, he will discover that he has to enable daemons and other parts of the system. During the process of learning how to enable a new service, the novice is more likely to learn of security considerations.

This in stark contrast to the increasing number of systems that ship with NFS, mountd, web servers, and various other services enabled by default, creating instantaneous security problems for their users within minutes after their first install.

...
Und dann der Hammer. PHP. (Von mysql rede ich nicht weiter; das gehört ja quasi automatisch zu so einer Mischung).
...
Übersetzt: Mit PHP hast du eh ein ernst zu nehmendes Sicherheitsproblem und PHP Applikationen sind ja nicht zufällig der Ansatzpunkt für böse Cracker. Statt dir um apache vs. nginx oder FreeBSD (mMn stark unterschätzt in Sachen Sicherheit) vs. OpenBSD (mMn stark überschätzt in Sachen Sicherheit) einen Kopf zu machen, achte darauf, dass dein System möglichst sauber konfiguriert ist und geh ansonsten lieber noch 3 mal deinen PHP Code durch, achte auch pingelig auf Sicherheitsrelevante Details wie z.B. mysql per Unix (Domain) socket und nicht per TCP socket anzubinden und achte darauf, die libraries picobello up to date zu halten (soweit möglich mit PHP). Denn da, genau da setzen böse Jungs den Hebel an (und nicht bei FreeBSD oder OpenBSD).
Gutes Gelingen ;)

Danke für den Tipp. Keine Sorge, PHP Exploitschleudern wie Joomla, phpBB (kennt wer noch PHPNuke? Das war arg) kommen nicht in Frage, sondern nur komplett selbstentwickelter Code mit allem, was dazugehört: Input-Sanitizing, Range-Checks, usw... MySQL war sowieso immer per Socket und nicht von aussen erreichbar.

Der PHP Core selbst ist nicht unsicher, soweit ich es weiss, den schlechten Ruf hat PHP doch von diversen schlampig programmierten CMSes die drauf laufen und die "php" im Namen tragen.

Das würde ich voll und ganz unterstützen! Man kann heute auf nahezu allen Plattformen Webserver einigermaßen sicher laufen lassen - wenn man das System kennt, die entsprechenden Parameter einstellt und Updates einspielt bzw. Sicherheitshinweise berücksichtigt.

OpenBSD, z.B., unterstützt einen Release immer nur über zwei Releases hinweg. Nach 1 Jahr musst Du upgraden, wenn Du aktuell und sicher bleiben willst. Und OpenBSD ist dafür bekannt, dass Rückwärtskompatibilität keine hohe Priorität hat. Der Webserver im Basissystem von OpenBSD war in drei Releases drei mal ein anderer: Zunächst noch Apache 1.3, dann nginx und jetzt der aus relayd entsprungene eigene httpd. Klar, man kann weiterhin Apache 1.3 oder nginx verwenden, aber es ist nicht mehr im Basissystem enthalten. Mit FreeBSD - oder mit einer konservativeren Linux-Distribution wie Debian, RH/CentOS hättest Du da viel länger "Ruhe".

Und sollte Performance eine Rolle spielen, ist OpenBSD sicher nicht die erste Wahl als Webserver, schon gar nicht mit dem alten Apache 1.3, aber auch nicht mit dem neuen, eigenen httpd. Das sehen selbst deren Entwickler so, wie man z.B. von Reyk Floeter selbst hören konnte im BSD Now Interview. Performance steht einfach nicht im Fokus eines Webservers in OpenBSD's Basissystem.

Sicherheit und Flexibilität (eigene Hardware, selbst konfiguriertes OS) geht vor Performance, ausserdem wird denke ich die meiste Performance bei Web-Apps durch ineffiziente Programmierung und aufgeblähten Code (Frameworks) und bei Servern durch Fehlkonfiguration usw... vergeudet. Laut Benchmarks ist nginx nur bei statischen Inhalten wesentlich schneller als Apache, bei PHP-generierten Seiten sind beide gleich schnell. Der damalige OpenBSD-3.8-Server war ein Dual-Pentium-III mit 512MB RAM und 10K-RPM Platten. Ich war erstaunt, dass das RAM und die CPU trotz 2000 Besuchern pro Tag niemals ausgereizt wurden und das Ding rock-stable lief..

Ich sehe mir mal noch FreeBSD wegen deines Tipps mit dem Support an, vielleicht wird's das.
 
Wenn ich dich richtig verstehe, dann hast du recht brauchbare Unix|linux Kenntnisse ohne in einem bestimmten System wirklich vertiefte Kenntnisse zu haben. Das ist doch eine recht brauchbare Basis und das lässt dich recht frei entscheiden.

Aufgrund reichlich Erfahrung auch mit OpenBSD und linux wäre meine Empfehlung für dich folgende:

Nicht OpenBSD und nicht linux sondern FreeBSD. Die BSDs mögen einen Tacken weniger nett wirken als linux, was aber bei dir egal ist, da du allemal genug Grundkenntnisse hast. Was Sicherheit angeht, so ist FreeBSD - in halbwegs kundigen Händen - nicht weniger gut als OpenBSD, im Zweifel eher besser. Sorry, aber da gebe ich wenig auf PR und "weiss doch jeder" sondern beurteile das ganz pragmatisch. Hint: "out of the box" ist eine Sache, halbwegs kenntnisreich konfiguriert ist eine ganz andere Sache und wird dann auch Potential interessant (z.B. Capsicum).
Die Versorgung mit updates ist bei FreeBSD sehr gut, ebenso wie genügend und erfahrene Augen des Sicherheitsteams.

Weiterhin wäre mein Rat, Hiawatha als web server einzusetzen. Grund: Obwohl Hiawatha performancemäßig in etwa in der selben Liga spielt wie bekanntere "high performance" http(s) server, wurde Hiawatha von Anfang an auf Sicherheit hin entwickelt. Und er kann auch die für dich nötigen Spielchen (FastCGI, PHP anbinden, ...).

Übrigens noch kurz zu Benchmarks. Vergiss es. Mit PHP sind so ziemlich alle server ähnlich "schnell" - ganz einfach deshalb, weil selbst ein drittklassiger Hobby http server Kreise um PHP läuft, sprich, die Barriere ist praktisch nie der server sondern PHP. Und mal ehrlich: >= 95% der sites, über die wir hier reden (inkl. deine) kommen doch eh nicht mal in die Nähe dessen, was selbst ein lausiger server schafft.
Du siehst das ganz richtig. Konzentrier dich auf Stabilität, Zuverlässigkeit, Sicherheit, ordentliches updating und gut isses. Die Performance dürfte allemal locker reichen, zumal du bedacht mit PHP umzugehen/programmieren scheinst (und genau da liegt auch der Bremsklotz und nicht beim http server).
 
Laut Benchmarks ist nginx nur bei statischen Inhalten wesentlich schneller als Apache, bei PHP-generierten Seiten sind beide gleich schnell.
Richtig. Aber das meiste, was auf den meisten Seiten herunter geladen wird, ist statischer Content. Beispiel großer deutscher Seiten: Spiegel Homepage hat 140 Images und Javascript-Dateien, aber nur 8 Requests die als HTML qualifiziert wurden. Bei heise.de sind es 144 zu 8. Und www.bsdforen.de kommt auf 52 zu 1. Selbst wenn eine Reihe der Images dynamisch generiert werden, z.B. von Adservern stammen, hast Du es mitunter mit vielen statischen Dateien zu tun.

Mit PHP sind so ziemlich alle server ähnlich "schnell" - ganz einfach deshalb, weil selbst ein drittklassiger Hobby http server Kreise um PHP läuft, sprich, die Barriere ist praktisch nie der server sondern PHP. Und mal ehrlich: >= 95% der sites, über die wir hier reden (inkl. deine) kommen doch eh nicht mal in die Nähe dessen, was selbst ein lausiger server schafft.
Das würde ich sofort unterschreiben. Rasmus Lerdorf, der Schöpfer von PHP hat in einer Konferenz-Keynote mal gesagt, er werde immer wieder gefragt, welcher Webserver schneller sei. Seine Antwort:" It really does not matter! The web server is pretty much irrelevant." (ca. bei 26:40 im Video).

Auf schwachen Rechnern kann es sich trotzdem lohnen, Tests mit verschiedenen Webserver/Konfigurationen zu machen, weil der RAM-Bedarf recht unterschiedlich ausfallen kann.
 
Danke für die Tipps - werde jetzt mal FreeBSD zunächst in einer VM als Server installieren :)
(auftretende Fragen stelle ich dann im FreeBSD Forum, thx)
 
Wie rmoe würde ich auch eher zu FreeBSD tendieren. Das OpenBSD Basis-System ist gut, keine Frage, aber in Zusammenhang mit Webservern gibt's da ein paar Argumente, die eher pro FreeBSD sprechen:
  • Die Patch-Versorgung für 3rd Party Software (aka Ports oder Pakete) erfolgt bei FreeBSD i. d. R. schneller (mehr Manpower bei den Ports Maintainern).
  • Die I/O Leistung auf Block Devices von OpenBSD ist gruselig - insbesondere bei einem RDBMS mit nicht linearem I/O Verhalten fällt das auf
Ach ja, und was die Sicherheit von PHP angeht: Der Sprachenkern ist tatsächlich nicht das größte Problem - wohl aber die zahlreichen in C geschriebenen Extensions, die teilweise schlecht implementiert sind (weil von Leuten geschrieben, die zwar PHP, nicht aber C beherrschen). Es sind also nicht nur unfähig zusammengeklopfte PHP-Skripte, die der Sprache den zweifelhaften Ruf beschert haben...
 
Die I/O Leistung auf Block Devices von OpenBSD ist gruselig - insbesondere bei einem RDBMS mit nicht linearem I/O Verhalten fällt das auf

Hast du da aktuelle Zahlen, Vergleichswerte, irgendwas Erkennbares?

Ich hadere gerade mit mir, weil ich unter FreeBSD auf einem meiner Server gerade in die Abhängigkeitshölle geraten bin (das wäre ja so ein Vorteil von OpenBSD)... :)
 
Sehr gute Frage.

10.0-Image vom Hoster (Verwendung eines eigenen Images scheiterte jedes Mal an der Partitionierung, "device busy"), Update auf 10.1, versucht Apache zu installieren, Konflikte mit gettext. Komisches Ding.
Mal zu meiner Frage?
 
Also eher gefühlte Werte? Hat das Auswirkungen außer dass es an den Nerven zehrt?
 
Gefühlt, ja. Macht sich IMO besonders bei administrativen Arbeiten bemerkbar (also z. B. Backups per Dump erstellen). Hatte jetzt auch noch mal die Gelegenheit, das nachzuprüfen, nachdem auf mehreren Kisten MySQL Dumps zurückgespielt werden mussten. Auf FreeBSD dauerte das gute 35 Minuten, auf OpenBSD ist (fast) derselbe Dump nach jetzt ca. 50 Minuten noch nicht durch. Allerdings muss ich zugeben, dass es einige Faktoren gibt, die für die Unterschiede sorgen könnten:
  • Die FreeBSD Kiste hat mehr RAM (32GiB vs. 16GiB auf der OpenBSD Kiste)
  • Die FreeBSD Kiste nutzt ZFS als Dateisystem, OpenBSD natürlich FFS
  • Unter FreeBSD kommt MySQL 5.5 zum Einsatz, während unter OpenBSD halt noch MySQL 5.1 läuft (jeweils aus den Packages)
Vor ca. 4 Jahren habe ich tatsächlich mal eine Messung zwischen ZFS und ext4 gemacht (siehe hier), wobei sich seither bei ZFS wieder einiges getan hat. Schon damals fiel aber auf, dass ZFS extrem gute Leistung bei re-reads zeigt, was möglicherweise eine Rolle bei der Datenbank-Performance spielt.
 
Dass FreeBSD gegenüber OpenBSD wesentlich performanter ist, bezweifle ich nicht.
Du kannst aber, sofern du das nicht schon getan hast, mit den Mount-Optionen "softdep" und "noatime" OpenBSDs Disk IO noch etwas flotter bekommen.
 
Danke euch für die Tipps nochmals! Hiawatha + FastCGI läuft derzeit bereits unter Debian auf dem derzeitigen Server, während ich weiter an der "perfekten" FreeBSD-Webserver-Config bastle.
 
Zurück
Oben