Hoe wij ons platform voor jou veilig houden!

“Waar gehakt wordt, vallen spaanders.” Ofwel, waar software geschreven wordt, ontstaan bugs. Sommige van deze bugs zorgen voor instabiliteit, andere voor verminderde veiligheid. Dit geldt voor alle software, van welke ontwikkelaar dan ook. Hoe kunnen wij er dan voor zorgen dat ons platform betrouwbaar en veilig is?

Hoe wij ons platform voor jou veilig houden!

Een betrouwbaar en veilig platform begint natuurlijk met goed besturingssysteem als solide basis. Deze basis is bij ons ‘CloudLinux’, die op zijn beurt ‘Red Hat Enterprise Linux’ (RHEL) als basis heeft. Waar RHEL zich voornamelijk op de enterprise richt, is CloudLinux opgericht om speciaal voor webhosting aanvullende features te bieden. Wat Red Hat samen met de aanvullende mogelijkheden van CloudLinux levert, blijkt in de praktijk ook een uitstekende keuze te zijn. Er is een goede balans tussen stabiliteit en nieuwe features.

Naast een besturingssysteem is ook een beheeromgeving essentieel, een zogeheten ‘control panel’. Om het beheer van onze webhostingpakketten voor onze klanten eenvoudig te maken, is er daarom DirectAdmin als control panel geïnstalleerd. Dit is de meest zichtbare kant van onze servers. Het is de omgeving waarop je inlogt om bijvoorbeeld e-mailaccounts aan te maken of een applicatie, zoals WordPress, te installeren.

Dat beetje extra

Een stabiel besturingssysteem, een beheerpaneel erbij en dan ben je klaar om je klanten te bedienen. Simpel, nietwaar? Hoewel we het op deze manier zouden kunnen doen, is dit voor ons niet goed genoeg. Wij stellen, net zoals onze klanten, hogere eisen en doen graag net dat beetje extra!

Hoe wij ons platform voor jou veilig houden: de gemakkelijke of lastige weg?Voordat wij software gebruiken, testen wij het in onze ‘staging-omgeving’. De staging-omgeving is identiek aan de productie-omgeving, met het belangrijke verschil dat er geen pakketten van klanten op draaien. Dit testen geldt voor nieuwe software en updates.

Doet de software wat het moet doen en enkel wat het moet doen? Introduceren we geen stabiliteits- of veiligheidsproblemen? Bij updates is het daarnaast van belang dat er geen functionaliteit onverwacht wijzigt.

Is alles in orde, dan rollen we de update uit voor een kleine groep klanten. Na een wachttijd, waarin we de gevolgen van de uitrol nauwlettend in de gaten houden, wordt ook voor de overige klanten de uitrol gedaan.

Wat als we wél een probleem vinden?

Uiteraard komt het voor dat we soms wel een probleem vinden, een logisch gevolg van dat ook wij maar gewoon mensen zijn. We wachten dan met de uitrol tot dit probleem volledig is opgelost. Om te laten zien hoe we ervoor zorgen dat zo’n probleem wordt opgelost, geef ik graag een voorbeeld van een veiligheidsprobleem dat we begin 2015 hadden gevonden.

Containers

Zoals bekend, draait bij ons iedere website in zijn eigen container. Dit heeft veel voordelen, waarvan veiligheid er één is. Jij kunt niet in andermans container kijken en anderen niet in die van jou. Sterker nog, anderen kunnen niet eens zien dat jouw container bestaat. Vergelijk het met het beveiligingen van een huis: een goed slot en alarmsysteem houden de meeste inbrekers buiten de deur. Echter, als inbrekers niet weten dat je huis überhaupt bestaat, dan is het wel erg lastig inbreken.

Het probleem

Op onze servers draaien meerdere diensten waar ‘SMTP’, het ontvangen van e-mail, daar één van is. Nu kan binnengekomen e-mail in een mailbox worden geplaatst, die je vervolgens kunt uitlezen met webmail of met je eigen e-mailprogramma, zoals Outlook.

Een andere (niet zo vaak gebruikte) optie is om de e-mail door te sturen naar een programma. Dit noemen we ‘e-mail piping’. Wat er dan gebeurt wanneer er een e-mail binnenkomt, is dat de inhoud van een e-mail aan een programma wordt aangeboden middels een zogeheten ‘pipe’. Met als proceseigenaar de gebruiker die het e-mailadres bezit, wordt dit programma dan gestart.

Wij kwamen erachter dat dit buiten de container gebeurde. Nu is dit geen verschrikkelijke ramp, want alleen onze klanten konden dit informatielek misbruiken. Je moet immers ‘e-mail piping’ instellen op je account en daarnaast waren alle verdere beveiligingsmaatregelen onverminderd van kracht. Toch voldeed dit niet aan onze standaarden.

Zodoende hebben we contact opgenomen met onze leveranciers CloudLinux (die de basis leveren voor onze ‘containers’) en DirectAdmin (die het control panel en de basis voor de SMTP-configuratie leveren). Tegelijkertijd zijn we zelf op zoek gegaan naar een oplossing.

Het onderzoek

We wisten nu wat het probleem was. Het was gemakkelijk reproduceerbaar, dus we waren al goed op weg naar een oplossing. We doken in de documentatie van het ‘pipe transport’ en zagen daar het volgende naar voren komen:

"A router redirects an address directly to a pipe command 
(for example, from an alias or forward file). In this case, 
$address_pipe contains the text of the pipe command,and the 
command option on the transport is ignored unless force_command 
is set."

Interessant, eens even kijken wat die ‘force_command’-optie precies doet:

"Normally when a router redirects an address directly to a 
pipe command the command option on the transport is ignored. If 
force_command is set, the command option will used. This is 
especially useful for forcing a wrapper or additional argument 
to be added to the command."

Ah, op deze manier kun je ervoor zorgen dat je een ‘wrapper-programma’ aanroept. Laat dat nu precies zijn wat we nodig hadden!

De oplossing

De oplossing is relatief eenvoudig. We vertellen in de configuratie van ‘Exim’ (de SMTP-server) dat een commando altijd in de container moet worden uitgevoerd door deze in een ‘wrapper-commando’ te plaatsen. Nadat we deze oplossing hadden gevonden, hebben we dit ook gemeld bij DirectAdmin. Zij hebben vervolgens de wijziging direct opgenomen in het product. Daardoor is niet alleen bij onszelf de beveiliging verbeterd, maar ook bij alle hosters wereldwijd die een vergelijkbare configuratie hanteren.

Waarom delen?

We hadden dit probleem ook voor onszelf kunnen houden en daarmee een ‘beter’ product kunnen hebben dan de concurrentie. Als wij zo’n lek kunnen vinden, bestaat er ook een kans dat een kwaadwillende dat kan. Zodra zo’n lek op grote schaal misbruikt gaat worden, dan zouden wij de enige zijn die hier geen last van hebben.

Waarom delen we dan alsnog de gevonden oplossing? Simpel, wij vinden dat veiligheid geen concurrentiemiddel moet zijn. Er zijn genoeg andere manieren waarop wij ons kunnen onderscheiden en iedereen heeft baat bij een veiliger internet.

Hoe wij ons platform voor jou veilig houden: security for all!

Natuurlijk is het met delen van veiligheidsproblemen altijd opletten om dit op de juiste manier te doen. Wij hebben in dit geval alleen met de leveranciers contact gehad en nadat er een oplossing was, is deze oplossing beschikbaar gekomen voor iedereen.

Op dit moment zijn er ook een aantal problemen waar wij zelf al wel een workaround voor hebben, maar waar nog geen universeel toepasbare oplossing voor is. Zodra er de oplossingen hiervoor zijn, dan zullen ze ook beschikbaar worden gemaakt. Tot die tijd hebben wij in ieder geval al maatregelen getroffen.

Vertrouwen is goed, verifiëren is beter

Zoals je hebt kunnen lezen, gaan wij er niet klakkeloos vanuit dat wat door leveranciers wordt geboden ook altijd vlekkeloos werkt. “Vertrouwen is goed, verifiëren is beter” is daarbij ons motto. Dat is de enige manier waardoor je zelf de controle houdt over het hoge niveau van je dienstverlening. Het kost veel tijd, maar dat is het dubbel en dwars waard. Problemen achteraf oplossen, kost vaak nog meer tijd. Bovenal, het bespaart vooral veel frustratie, zowel bij jezelf als je klanten.

Wil jij ook graag een veilig webhostingpakket met gegarandeerde eigen resources en de mogelijkheid om zelf backups terug te zetten die wij alvast proactief voor je maken? Start je online succes, hier bij Antagonist!

Kies hier je webhostingpakket →

P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Rechts bovenin via RSS, e-mail, het liken op Facebook, het +1’en op Google+ of het volgen op Twitter.

Deel Tweet +1 Deel