Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 19 reacties

De ontwikkelaars achter het OpenBSD-besturingssysteem leveren in de nieuwste softwareversie niet langer meer de webserversoftware Nginx mee. In plaats daarvan bieden zij een zelfontwikkeld alternatief.

OpenBSDOpenBSD is een opensourcebesturingssysteem dat de nadruk legt op beveiliging. De ontwikkelaars leverden sinds jaar en dag Nginx met hun besturingssysteem mee, maar ze kunnen de software niet naar behoren aanpassen.

Zo patchten de ontwikkelaars Nginx aanvankelijk, maar die softwarepleisters werden steeds tenietgedaan door recentere versies van de opensource-webserversoftware. De ontwikkelaars besloten Nginx dan ook te vervangen door zelfontwikkelde programmatuur om zo de beveiliging van het systeem te verbeteren.

De ontwikkelaars leveren hun implementatie mee met de nieuwste OpenBSD, namelijk versie 5.7. Die verschijnt naar verwachting in mei. Dat meldt Phoronix op basis van een presentatie van een van de ontwikkelaars. De implementatie biedt onder meer ondersteuning voor fastcgi en tls door middel van LibreSSL, een fork van OpenSSL die OpenBSD-ontwikkelaars hebben gemaakt.

Moderatie-faq Wijzig weergave

Reacties (19)

"In plaats daarvan bieden zij een zelfontwikkeld alternatief, een fork van Apaches httpd."
Dit klopt volgens mij niet? Ontwikkelaar legt in de in het artikel gelinkte PDF juist uitgebreid uit na een dronken hackathon een eigen httpd gemaakt te hebben met de naam 'httpd'. Gebaseerd op relayd.

edit: De eerste zin in het artikel is kennelijk aangepast.

[Reactie gewijzigd door Xatr0z op 18 maart 2015 09:15]

"In plaats daarvan bieden zij een zelfontwikkeld alternatief, een fork van Apaches httpd."
Dit klopt volgens mij niet? Ontwikkelaar legt in de in het artikel gelinkte PDF juist uitgebreid uit na een dronken hackathon een eigen httpd gemaakt te hebben met de naam 'httpd'. Gebaseerd op relayd.
Klopt, de nieuwe webserver heeft niks te maken met Apache maar is inderdaad op relayd gebaseerd.
Apache is wel heel lang de standaard webserver van OpenBSD geweest. Tot een jaar geleden leverden ze een zwaar gepatchte versie van Apache maar daar zijn ze mee gestopt. Nginx is heel even de standaard geweest, 2 of 3 jaar ofzo. In termen van OpenBSD is dat echt maar heel even.

Overigens is het nog steeds mogelijk om Apache en Nginx te installeren, het is alleen niet meer de standaard.
Maar dan zul je vermoedelijk de originele Apache en Nginx krijgen, die geheugenbeheer bevat dat volgens de devs van OpenBSD securitytechnisch niet handig werkt.
Link naar de repo voor de liefhebbers en degenen die de ontwikkelingen willen volgen:
https://github.com/reyk/httpd/
Wel apart dat zo'n beveiliging gerichte BSD distro dan nog in C bouwt. Een taal waarin het wel erg gemakkelijk is een beveiliging probleem te bouwen.
De voordelen van andere talen wegen meestal niet op tegen de nadelen.

http://harmful.cat-v.org/software/c++/linus

Linus' rant is een beetje gedateerd maar gaat vaak nog steeds op.

Programmeurs die een hekel hebben aan C of moeite hebben met het concept van pointers naar pointers, tja... die laat ik graag voor de concurrent werken.
Nee C++ is idd geen behoorlijke vervanger voor C, tegenovergestelde claims van Bjarne Stroustrup doen daar niets vanaf. C++ alleen al is complex genoeg en biedt niet genoeg extra type en memory safety waardoor C++ programmeurs daardoor nogal wat "obvious" bugs zoals buffer overflows kunnen veroorzaken.

Maar iets als Mozilla Rust zou die rol in principe wel kunnen oppakken wanneer het grofweg in Mei versie 1.0 bereikt. Die taal heeft een focus op memory safety door gebruik van een heel sterk type system (bijna even sterk als die van Haskell) zonder dat je echt aan performance inboet t.o.v. C/C++ code die volgens best practices is geschreven. Ook wordt t niet door een ISO committee ontwikkeld maar gewoon open op GitHub, wat de evolutie van de taal een behoorlijke duw in de rug kan geven. Daarnaast heeft de taal ook een focus op concurrency, wat het toekomstbestendiger maakt dan veel andere talen.

Zie http://rust-lang.org voor meer info.
Ik vind het wel een vreemd verhaal dat nginx blijkbaar de patches van OpenBSD negeert en gewoon de code weer overschrijft met hun eigen patches. Daarbij neem ik even aan dat OpenBSD de gepatchte code ook weer terug doorgaf aan nginx (conform de GPL).

Alle hulp is toch welkom zou je denken.
Ngnix is 2-clause BSD, niet GPL!

Ik weet niet 100% het fijne ervan, maar wat ik uit de PDF's kan opmaken is dat OpenBSD-devvers graag willen dat bij bepaalde situaties in Nginx-code calloc en malloc wordt vervangen door reallocarray(), oftewel een functie dat op zichzelf staat en geen onderdeel is van van de C Standard Library. Natuurlijk kan dat geport worden naar andere platforms, maar dan moet Nginx zelf aan de bakĻ.

Oftwel de verantwoordelijkheid van de problemen die Nginx krijgt met multiplatform ontwikkelen wordt door de OpenBSD-devvers bij Nginx zelf gelegd. Niet zo gek dat dan Nginx de patches links laat liggen.

Ļ http://lteo.net/blog/2014...rflow-detection-for-free/ Scroll naar het kopje "What's Next?"

[Reactie gewijzigd door RoestVrijStaal op 18 maart 2015 01:40]

if version_is == bsd
reallocarray
else
malloc/free

Of define malloc reallocarray

Er is wel meer multiplatform software op de wereld. Bekijk eens de code van xbmc/kodi.

Ik vraag me af hoe de codereview gebeurd is.... pak bier kom we beginnen eraan ;)
Alleen bleek er wel meer mis te zijn volgens hun standaarden. Zo eenvoudig was het dus niet
The aforementioned patch grew very big and eventually got discarded. It would have been very difficult to maintain it as a custom patch for nginx in OpenBSD's source tree, and there was no indication that upstream would have imported it any time soon or even at all. But that wasn't the only aesthetically challenging issue in nginx, it turned out that nginx uses a number of custom memory allocators that preallocate and reuse almost all dynamic memory objects it needs. This reminded too much of the "Heartbleed" issue and OpenSSL's custom memory allocators that have been ripped out of LibreSSL. Software for OpenBSD must use the system's malloc(3) routines, and it must not sacriffice security for performance by bypassing all the randomization and the safety checks of "Otto Malloc" in libc.
Het lijkt er dus op dat ze preventief een beter beveiligde webserver willen maken, in ieder geval op het gebied van geheugenbeheer. Een prima zaak lijkt me. Ik vraag me dan af of ze dat ook los gaan uitbrengen of dat er misschien iemand het gaat porten voor gebruik op linux bijvoorbeeld.
Dat is niet exclusief aan de webservers software, dat is het hele doel van OpenBSD. Die zetten security boven alles.

Voor een potentiŽle gebruiker totaal geen probleem, of je gebruikt een OS met Nginx support, je bouwt het van source op een OpenBSD machine of je gaat voor security en gebruik het OpenBSD alternatief.
Ik bedoel juist andersom: stel je kunt niet zomaar gebruik maken van OpenBSD als OS, kun je dan hun webserver installeren op je bestaande linux omgeving? Dat lijkt me best interessant als dat actief ondersteund wordt.
meestal komt er wel iets uit voort zoals:
- openssh
- openntpd

(En er zijn meer voorbeelden)
Tja, dat is natuurlijk wel een vrij extreme houding. Zo zul je op die manier nooit C++ code kunnen gaan draaien; de STL allocators zijn ook geen `malloc`.
Mja, het is maar net hoe je er naar kijkt. Ik kan me voorstellen dat het een groot probleem is als je geen statische code analyzers op je memory beheer kan draaien, zeker met C of C++. Maar het lijkt me in eerste instantie geen probleem om iets als een standaard library zoals STL wel toe te staan.
Verbaast me niets. OpenBSD is natuurlijk compromisloze security, Nginx is compromisloze performance. Dat gaat niet samen.
Nginx is op 26 augustus vorig jaar uit de OpenBSD base gehaald. Nginx zit echter nog gewoon in OpenBSD ports en wordt daar nog gewoon onderhouden (een maand geleden nog geupdate naar 1.7.10). Het enige wat er is gebeurd is dat het niet meer de standaard HTTP server is als je een website voor de foto's van je huisdieren wil hosten.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True