Downtime van cloudproviders simuleren met Cloudburst

Beschikbaar als opensourcetool

Gekleurde en gepixelde achtergrond

De oorspronkelijke blog is Engelstalig, dit is de Nederlandse vertaling ervan.

Cloudburst is een tool waarmee de uitval van (publieke) clouds kan worden gesimuleerd door interacties met geselecteerde cloudoperators te blokkeren. Op deze manier kunnen bedrijven wat-als-scenario's testen en in de praktijk beoordelen in hoeverre ze afhankelijk zijn van cloudservices en kunnen omgaan met cloudstoringen. We hebben er een opensourcetool van gemaakt, zodat iedereen dit soort storingen kan simuleren, de resultaten kan gebruiken om de beveiligingsmaatregelen aan te scherpen en de tool kan aanpassen aan de eigen omgeving. Cloudburst kan ook relevant zijn voor individuele gebruikers, die de tool zouden kunnen gebruiken om meer inzicht te krijgen in de centralisatie van het internet.

Afhankelijkheid van de cloud

Steeds vaker migreren organisaties hun ICT-activiteiten naar cloudproviders. Door gebruik te maken van de cloud kunnen bedrijven hun resources eenvoudig aanpassen aan de fluctuerende vraag, wat in veel gevallen de kostenefficiëntie optimaliseert. Daarnaast is het onderhoudsvriendelijk en vergt het minder fysieke infrastructuur, waardoor de activiteiten verder worden gestroomlijnd en IT-teams zich kunnen richten op strategische initiatieven in plaats van routinetaken.

Afhankelijkheid van externe serviceproviders brengt echter ook risico's voor de toeleveringsketen met zich mee. Zo zorgde een schaalprobleem bij AWS er in januari 2021 voor dat klanten van Slack een aantal uren te kampen hadden met uitval. Zulke voorvallen kunnen zelfs wereldwijd impact hebben als ze zich voordoen bij grote cloudproviders, zoals blijkt uit de vele sites die in juli 2021 onbereikbaar werden door storingen bij Content Distribution Networks Akamai en Fastly.

Het probleem is dat bedrijven meestal moeten wachten tot de cloudoperator de storing heeft verholpen, wat de beschikbaarheid van hun diensten kan aantasten. Daarom werken ze bijvoorbeeld vaak met meerdere cloudoperators (bijvoorbeeld in de banksector) of vallen ze terug op on-premises infrastructuur (zoals bij RIPE NCC). Veel organisaties willen als onderdeel van hun business-continuitymanagement regelmatig testen of dergelijke mitigerende strategieën het gewenste effect sorteren. Dat is waar Cloudburst een rol zou kunnen spelen.

Wat is Cloudburst?

Cloudburst is een tool waarmee IT-teams uitval van een cloudprovider in de praktijk kan simuleren door netwerkverbindingen met die provider te blokkeren. Met behulp van Cloudburst kan een beveiligingsteam er bijvoorbeeld achter komen dat de berichtendienst waarop ze in noodsituaties vertrouwen, een verborgen afhankelijkheid bevat van dezelfde cloudservices die de organisatie gebruikt voor normale activiteiten. Als zo'n afhankelijkheid onopgemerkt blijft, bemoeilijkt dat de coördinatie en crisisrespons, omdat dan niet alleen het primaire communicatiesysteem hinder ondervindt, maar ook het back-upsysteem. Wanneer zoiets door gebruik te maken van Cloudburst aan het licht komt, kan het IT-team actie ondernemen voordat het een probleem wordt, door hun beveiligingsprocedures bij te werken en voor de communicatie tijdens een crisis over te stappen naar een andere berichtendienst.

Figuur 1 is een schermafbeelding van Cloudburst. Te zien is de webinterface waar verbonden clients kunnen selecteren van welke cloudservices ze een storing willen simuleren. Cloudburst maakt gebruik van eenvoudige en kant-en-klare technieken, zoals een firewall en een VPN om clients te verbinden en storingen te simuleren (hierover later meer).

Screenshot van de Cloudburst-gebruikersinterface.
https://images.ctfassets.net/yj8364fopk6s/7jIYgxxp8SBibkdXLVl6dF/70c68674946b82b983209400be4743ed/Screenshot_cloudburst.png

Figuur 1: Schermafbeelding van Cloudburst.

Centralisatie van het internet

Cloudburst kan ook fungeren als een bewustwordingstool om eindgebruikers inzicht te geven in de aanhoudende centralisatie van het internet naar een klein aantal economisch zeer machtige bedrijven. Centralisatie van het internet, waarbij een relatief klein aantal grote serviceproviders een groot aantal klanten en hun netwerkverkeer aantrekt, vermindert het gedecentraliseerde karakter van het open internet. Dat wordt vaak als onwenselijk gezien. Deze grote serviceproviders maken gebruik van hun eigen wide area networks, die alleen voor hen toegankelijk zijn, wat zou kunnen leiden tot minder concurrentie op het internet en dus tot minder innovatie. Daarnaast verhoogt centralisatie, bijvoorbeeld in het Domain Name System (DNS), het risico op downtime als de nameservers van een domein niet verspreid zijn over verschillende netwerken.

In de rest van deze blog bespreken we hoe Cloudburst cloudproviders blokkeert en hoe de tool door IT-teams en individuele gebruikers kan worden geïmplementeerd.

Implementatiemethoden

Cloudburst moet zo worden geïmplementeerd dat gebruikers (IT-teams en individuele gebruikers) begrijpen wat er gebeurt en de blokkering van cloudproviders gemakkelijk kunnen aansturen. We hebben 2 implementatiemethoden ontwikkeld.

De eerste methode is via een WireGuard VPN-tunnel, wat de eenvoudigste aanpak is. Hiervoor hoeven gebruikers alleen maar de voor alle belangrijke platforms beschikbare WireGuard VPN-clientsoftware op hun apparaten te installeren. Wie Cloudburst op deze manier wil implementeren, adviseren we om gebruik te maken van een virtuele machine met Debian 12. Gedetailleerde installatie-instructies zijn beschikbaar op GitHub.

Na de installatie kan de gebruiker naar je publieke Cloudburst-website gaan en de QR-code scannen met behulp van de WireGuard-app op een pc of mobiel (zie Figuur 1 links). Daarna zou door naar hetzelfde eindpunt te gaan de interne Cloudburst-website moeten verschijnen, wat betekent dat gebruikers succesvol met Cloudburst zijn verbonden. Via deze interne Cloudburst-website kan een gebruiker Cloudburst aansturen (zie Figuur 1 rechts).

De tweede implementatiemethode is met behulp van een wifirouter. Deze methode vereist meer technische knowhow en kennis van de lokale netwerkomgeving. Het komt erop neer dat we een WireGuard-tunnel tot stand brengen tussen de wifirouter en een virtuele Cloudburst-machine (die fungeert als VPN-server en de Cloudburst-software uitvoert) en wat routes instellen om wifigebruikers via de gedeelde tunnel te verbinden. We gebruikten deze configuratie als onze mobiele opstelling zodat we Cloudburst op conferenties kunnen gebruiken met een Omnia Turris als wifirouter in combinatie met een Raspberry Pi.

Blokkeermethoden

Als we een cloudstoring willen simuleren, moeten we weten welke IP-adressen een cloudservice gebruikt, zodat we ze kunnen blokkeren. Daarvoor maken we gebruik van zogeheten IP-blocklists, lijsten van IP-adressen die in een firewall kunnen worden geblokkeerd. Hoewel individuele cloudproviders lijsten verstrekken van de IP-adressen die ze gebruiken, is onze ervaring dat deze niet altijd compleet zijn en vaak niet in hetzelfde formaat worden aangeboden.

Daarom geven we Cloudburst-gebruikers de mogelijkheid om zelf IP-blocklists samen te stellen. We bieden een aantal opties voor het genereren van een blocklist:

  • Online gepubliceerde blocklists. Afhankelijk van de gebruikte indeling is het nodig om een lichtgewicht parser te implementeren.

  • Offline blocklists als bestandsnamen. Je kunt je eigen voorkeursmethode gebruiken om deze lijsten te compileren.

  • Autonome systeemnummers. Deze gebruiken we om met behulp van de tool 'bgpq4' IP-prefixen te verkrijgen.

Voor onze doeleinden bieden deze opties voldoende flexibiliteit voor het blokkeren van clouds, maar indien nodig kunnen gebruikers ze aanvullen met andere methoden (zoals DNS-gebaseerde blokkering). Technisch gesproken maakt onze implementatie gebruik van de regels ipsets en iptables om de lijsten in netfilter te laden.

Beperkingen

Cloudburst werkt goed als middel om een scenario te testen waarin een cloud offline gaat. Het is echter niet mogelijk om een cloud te simuleren die gedeeltelijk offline is. Daarnaast kunnen er in het particuliere netwerk van cloudproviders afhankelijkheden voorkomen die Cloudburst niet kan simuleren. Als een bedrijf bijvoorbeeld een website host op de eigen server, maar de website een cloudgebaseerde API in de backend gebruikt, is Cloudburst niet in staat om die API-call in de backend te blokkeren.

Demonstraties

We hebben Cloudburst gedemonstreerd tijdens SIDN Inspire, Public Spaces en ICT.Open en veel positieve feedback gekregen van zowel technische als niet-technische gebruikers. Op basis van deze feedback onderzoeken we momenteel hoe we Cloudburst bij SIDN kunnen inzetten, omdat wij een aantal van onze componenten ook in de cloud draaien, zoals het LogoMotive-algoritme.

Broncode

We hebben de broncode van Cloudburst algemeen beschikbaar gemaakt onder een opensourcelicentie zodat je de tool zelf kunt uitproberen. Je kunt de broncode downloaden van GitHub.

Commentaar?

Als je vragen hebt of als je kunt delen hoe jij Cloudburst gebruikt, dan horen we dat graag van je via sidnlabs@sidn.nl.