Cloud? Ja! Aber sicher!

In diesem Blog möchte ich Ihnen nochmal vor Augen führen, wie wichtig die Informationssicherheit in der Cloud ist. Die Vergangenheit zeigt, je mehr Benutzer eine Dienstleistung nutzen, desto grösster ist die Gefahr einer Kompromittierung oder eines Ausfalls durch Überlastung.

Hier eine kleine, nicht abschliessende Aufzählung:

  • 01.03.17 – Für mehrere Stunden ist AWS aufgrund Fehlmanipulation eines Admins nicht erreichbar
  • 17.04.18 – AWS und Google Cloud Plattform mehrere Tage in Russland nicht erreichbar (staatliche Zensur)
  • 04.06.18 – Salesforce Lücke in API bei Salesforce: Lesen und Schreiben auf Daten fremder Nutzer
  • 18.09.18 – Steuerdaten von Schweizer Steuer-App in AWS öffentlich zugänglich
  • 04.09.18 – Azure höhere Gewalt fällt fast einen Tag lange aus (Blitzeinschlag in RZ)
  • 12.11.18 – Google G Suite 2h nicht erreichbar
  • 19.11.18 – Office 365, Probleme bei der Anmeldung mit MFA
  • 15.01.19 – Sicherheitslücken und mangelnder Datenschutz: Microsoft patzt bei Office 365
  • 29.01.19 – Azure Datenverlust bei Datenbanken
  • 05.06.19 – Google Cloud 4h nicht erreichbar (inkl Google Mail, YouTube usw. sowie Uber und Snapchat)
  • 03.02.20 – Microsoft Teams wegen Zertifikatsablauf ausgefallen
  • 16.03.20 – Überlastung bei Microsoft Teams führt zu Ausfällen
  • 09.06.20 – Technische Probleme (Routing) bei der IBM Cloud
  • 24.08.20 – Ausfall beim Videokonferenztool Zoom
  • 28.08.20 – Chaos Computer Club deckt Sicherheitslücke in Corona-Listen von Gastrobetrieben auf

Im Jahr 2018 habe ich mich das letzte Mal intensiv mit dem Thema Cloud auseinandergesetzt. Damals habe ich meine Masterarbeit – Sie erinnern sich vielleicht – mit dem Thema «Full Cloud Approach – Beurteilung der Informationssicherheit mit Fokus KMU» geschrieben und als 4-teiligen Blog im Januar 2019 veröffentlicht. Es gibt hunderte Möglichkeiten die IT-Infrastruktur, unter Berücksichtigung der Informationssicherheit, in die Cloud auszulagern. Neben der Wahl der Cloud-Providers, muss je nach Bedarf, Knowhow und finanzielle Mittel, das passende Service-Modell (SaaS, PaaS oder IaaS) ausgewählt werden. Details dazu habe ich bereits damals (siehe mein Blog Teil 123 und 4) intensiv erklärt. Nun, wie kommen wir mit diesem enormen aufkommen an verschiedenen Möglichkeiten zurecht? Es ist nicht einfach. Grundsätzlich beraten wir unsere Kunden im Bereich der Informationssicherheit. Wir konzentrieren uns also primär auf die Erfüllung Schutzziele (Vertraulichkeit, Verfügbarkeit, Integrität und immer wichtiger die Verbindlichkeit bzw. Nichtabstreitbarkeit). Und genau in diesem Bereich sind wir die Experten. Wir helfen unseren Kunden dabei, wie die Werte eingeordnet werden müssen und bei welchem Schutzziel die Schraube enger angezogen werden muss. Inzwischen haben uns mehrere Kunden kontaktiert und um Unterstützung, beim Weg in die Cloud gebeten. Wir waren vorbereitet und konnten dank unserer Erfahrung, Massnahmen für eine sichere Cloud-Nutzung empfehlen.

Audit

Für ein Audit in der Cloud braucht der Auditor grundsätzlich einen administrativen Zugriff auf Ihre Cloud-Instanz. Bei Azure bzw. Microsoft 365 ist es der Globale Administrator. Bei AWS ist es der «Administrator Access». Wie auch bei anderen Audits üblich, startet unser Auditor zuerst mit einem Interview, damit er die organisatorische Sicht kennenlernt und weiss was für den Kunden wichtig ist. Anschliessend beginnt das Audit auf der Cloud-Infrastruktur. Das Vorgehen hängt stark von der gewählten Bereitstellungsmethode und dem eingesetzten Service-Modell ab. Deshalb sind manchmal auch vor einem Audit gewisse Vorbereitungen notwendig.

Neben umfassenden Checklisten, welche wir für die Audits beim Kunden verwenden, führt vor allem das Fachwissen unserer Auditoren zu einem erfolgreichen Audit. Regelmässige Weiterbildung ist für unsere Auditoren ist ein Muss. Jeder Auditor bildet sich selbständig bei sogenannten Training Day’s weiter. Zusätzlich führen wir intern Weiterbildungen durch und geben so das Knowhow von Mitarbeitenden zu Mitarbeitenden weiter. Abgerundet werden die Weiterbildungsmassnahmen mit externen Ausbildungen bei international anerkannten Institutionen.

Damit unsere Auditoren nicht viel Zeit verlieren indem sie an der Oberfläche kratzen, können Sie mit etwas Knowhow selbständig einige wichtige Sicherheitsmassnahmen umsetzen. Sie können sozusagen die „low-hanging fruits“ abarbeiten und wir durchleuchten die tiefen Ihrer Cloud-Infrastruktur. Bei einem Audit unterscheiden wir grundsätzlich zwischen manueller Kontrolle und automatisiertem Audit mittels speziellen Tools. Für eine manuelle Kontrolle eignen sich unter anderem die Benchmarks von CIS Security, welche Sie kostenlos im Internet herunterladen können. Auch Microsoft beschreibt auf Ihrer Webseite, wie die eigenen Dienste in der Cloud gehärtet werden sollten. Bei CIS Security finden Sie für jede erdenkliche Software sowie für die gängigen Cloud-Anbieter, Hardening-Guides. Jede Empfehlung im CIS Benchmark enthält eine ausführliche Beschreibung, wie die Kontrolle durchgeführt wird (Wegleitung oder Kommandozeilen-Befehl) sowie Umsetzungsbeschreibung. Aber sind Sie bei der Umsetzung der vorgeschlagenen Massnahmen vorsichtig. Nicht, dass Sie sich mit einer Fehlkonfiguration aus der eigenen Cloud aussperren.

Manuelles Audit

An folgendem Beispiel, möchte ich Ihnen das Vorgehen eines manuellen Audits genauer erklären. In der Cloud ist das Identity Management sehr wichtig. Wird es unsicher umgesetzt, laufen Sie Gefahr, dass auf Ihre Daten unbefugter Zugriff ermöglicht wird (beispielsweise aufgrund eines Phishing-Angriffes). Der allererste und aller wichtigste Schritt um Ihre Cloud abzusichern, ist die Aktivierung der Mehr-Faktor-Authentifizierung (Quelle: Microsoft 365 Benchmark 1.0 – «Mehr-Faktor-Authentifizierung für alle User», CIS Kapitel 1.1).

Audit durchführen

Mit folgender Abfrage wird der MFA-Status angezeigt.

Get-MsolUser –All | Select-Object UserPrincipalName, @{N="MFA Status";e={$_.StrongAuthenticationRequirements.State}}

Gewünschtes Resultat: MFA Status: «Enforced»

Massnahme umsetzen

Falls der Status «Disabled» ist, kann mit folgendem Befehl der Status auf Enabled gesetzt werden. Achtung! Wie bereits gesagt, seien Sie vorsichtig. Werden diese oder andere Einstellungen ohne Vorwarnung aktiviert, wird sich ihr Helpdesk über viele besorgte Anrufe Ihrer Mitarbeitenden freuen.

$Auth = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement -Property @{RelyingParty = "*"; State = "Enabled"}
Get-MsolUser –All | ForEach-Object { Set-MsolUser -UserPrincipalName $_.UserPrincipalName -StrongAuthenticationRequirements $Auth }

Automatisiertes Audit

Teilweise lassen sich solche Sicherheitseinstellungen auch automatisiert überprüfen. Das Opensource Tool ScoutSuite der Firma NCC Group unterstützt die gängigen Cloud-Dienstleister wie AWS, Azure, Google, Alibaba und Oracle. Die Installation des Tools läuft wie folgt ab (wir setzten es jeweils bei der aktuellen Version von Kali-Linux ein):

Mithilfe von git wird die aktuelle Version von SocutSuite heruntergeladen und entpackt.

git clone https://github.com/nccgroup/ScoutSuite

Wir wechseln den Ordner in „ScoutSuite“

cd ScoutSuite/

Wir installieren Virtualenv und führen es aus. Dies ermöglicht es uns, Python in einer isolierten Umgebung auszuführen.

apt install virtualenv
virtualenv -p python3 venv
source venv/bin/activate

Nun installieren wir noch einige vorausgesetzte Tools, welche für ScoutSuite benötigt werden.

pip install cryptography==2.8
pip install -r requirements.txt

Mit folgendem Befehl prüfen wir nun, ob ScoutSuite funktioniert.

python scout.py --help

Damit wir unser Linux Betriebssystem beispielsweise mit Azure verbinden können, müssen wir noch das Azure Command-Line Interface (CLI) installieren. Die Voraussetzungen für die anderen Cloud-Provider werden hier unter «Configuration and Usage» sehr gut beschrieben.

pip install azure-cli

Vor dem Ausführen von ScoutSuite, müssen wir uns mit einem „Globalen Administrator“ authentifizieren (es öffnet sich das gewohnte Browser-Login inkl. Mehr-Faktor-Abfrage).

az login

Das automatische Audit der Azure Instanz wird mit folgendem Befehl ausgeführt.

python scout.py azure –-cli

Das inventarisieren aller Einstellungen dauert einen Moment.

(venv) goSecurity-AK@kali:~/ScoutSuite# python scout.py azure --cli
2020-09-15 10:08:58 kali scout[2581] INFO Launching Scout
2020-09-15 10:08:58 kali scout[2581] INFO Authenticating to cloud provider
2020-09-15 10:09:00 kali scout[2581] INFO Running against subscription aaadd982-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2020-09-15 10:09:00 kali scout[2581] INFO Gathering data from APIs
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Azure Active Directory service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Azure RBAC service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Security Center service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the SQL Database service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Storage Accounts service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Key Vault service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Network service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the Virtual Machines service
2020-09-15 10:09:00 kali scout[2581] INFO Fetching resources for the App Services service
2020-09-15 10:09:28 kali scout[2581] INFO Running pre-processing engine
2020-09-15 10:09:28 kali scout[2581] INFO Running rule engine
2020-09-15 10:09:28 kali scout[2581] INFO Applying display filters
2020-09-15 10:09:28 kali scout[2581] INFO Running post-processing engine
2020-09-15 10:09:28 kali scout[2581] INFO Saving data to scoutsuite-report/scoutsuite-results/scoutsuite_results_azure-tenant-d6325f72-xxxx-xxxx-xxxx-xxxxxxxxxxxx.js
2020-09-15 10:11:18 kali scout[2581] INFO Opening the HTML report

Wurden alle Einstellungen gesammelt, öffnet sich automatisch eine HTML-Datei mit den gefundenen Empfehlungen. In diesem einfach gehaltenen Report können die gefundenen Sicherheitsmassnahmen, übersichtlich geordnet nach Services, angeklickt und ausgewertet werden. Neben einer Beschreibung der Massnahme, finden Sie jeweils auch den Verweis zur Quelle im CIS Benchmark. Eine tolle Sache! Hier ein Beispiel eines meiner Tests-Accounts, welcher offensichtlich einige sicherheitsrelevante Fehlkonfigurationen aufweist (die Tenant ID wurde unkenntlich gemacht):

Schauen wir in das Kapitel „Virtual Machines“. Dort sehen wir, dass unverschlüsselte Festplatten vorhanden sind. Der CIS Benchmark empfiehlt, Festplatten in der Cloud zu verschlüsseln.

Nun können wir wieder den CIS Benchmark zur Hand nehmen. Dort finden wir ergänzende Informationen, sowie die Vorschläge für Kommandos, wie eine Einstellung angepasst werden kann.

az vm encryption enable --name <VMName> --resource-group <resourceGroupName> --volume-type DATA --aad-client-id <Client ID of AAD app> --aad-client-secret <Client Secret of AAD app> --disk-encryption-keyvault https://<vaultEndpoint>/secrets/<secretName>/<secretVersion>

Fazit

Es ist nicht leicht sich heutzutage in der Fülle an Sicherheitseinstellungen zurechtzufinden. Ihre Aufgabe ist es vermutlich primär, den Betrieb Ihrer Dienste sicherzustellen. Sicherheitsrelevante Einstellungen werden meist erst nachträglich umgesetzt, oder gehen leider irgendwann vergessen. Unsere Aufgabe ist es, sich in komplexen Umgebungen zurecht zu finden, Schwachstellen aufzuspüren und sicherheitsrelevante Empfehlungen auszusprechen. Sei es klassischerweise On-Premises oder beim Cloud-Provider.  Wichtig ist, dass Sie den Anfang machen und etwas für die Sicherheit Ihrer Daten tun. Gerne Unterstützen wir Sie dabei.

Informationen zum Autor: Antonio Kulhanek