Verwendung von Azure Bastion für sicheren Zugriff auf virtuelle Maschinen
01.04.2025
Dieser technische und lehrreiche Artikel soll Sicherheitsanalysten, IT-Administratoren und Systemingenieure bei der Implementierung und Konfiguration von Azure Bastion für den sicheren Zugriff auf virtuelle Maschinen (VMs) in Azure anleiten. In einer Cloud-Umgebung ist die Sicherheit des Zugriffs auf VMs von entscheidender Bedeutung, um Ressourcen und Daten zu schützen. Traditionell erforderte der Zugriff auf VMs über RDP (Remote Desktop Protocol) oder SSH (Secure Shell) die Offenlegung öffentlicher Ports für das Internet, was die Angriffsfläche erheblich vergrößerte. Azure Bastion bietet eine robuste und sichere Lösung, um diese Gefährdung zu beseitigen, indem es einen sicheren Zugriff ohne die Notwendigkeit von VPNs oder öffentlichen IPs ermöglicht [1].
Einführung
Die Migration von Infrastrukturen in die Cloud hat zahlreiche Vorteile hinsichtlich Skalierbarkeit und Flexibilität gebracht. Die Sicherheit bleibt jedoch ein Hauptanliegen. Der Zugriff auf virtuelle Maschinen ist ein kritischer Punkt, da diese oft das Herzstück vieler Anwendungen und Dienste sind. RDP- (3389) oder SSH-Ports (22) direkt dem Internet zugänglich zu machen, ist eine unkluge Sicherheitsmaßnahme, da sie dadurch zu leichten Zielen für Brute-Force-Angriffe und andere Exploits werden [2].
Azure Bastion ist ein vollständig verwalteter Platform as a Service (PaaS)-Dienst, den Sie in Ihrem virtuellen Netzwerk bereitstellen. Sie können damit über RDP und SSH direkt vom Azure-Portal aus eine Verbindung zu virtuellen Maschinen in Ihrem virtuellen Netzwerk herstellen, ohne dass öffentliche IP-Adressen auf den VMs, auf den VMs installierte Agents oder spezielle Clients/Konfigurationen auf Ihrem lokalen Computer erforderlich sind. Bastion fungiert als sicherer Proxy, der den RDP/SSH-Verkehr über eine sichere TLS-Verbindung (Transport Layer Security) an den Browser des Benutzers weiterleitet und so VMs vor direkter Gefährdung durch das Internet schützt [3].
In dieser Anleitung werden die Voraussetzungen, die Bereitstellung und Konfiguration von Azure Bastion, die Verbindung mit Windows- und Linux-VMs über RDP und SSH, die Verwaltung von Sitzungen sowie das Testen und Validieren des sicheren Zugriffs behandelt. Es werden Schritt-für-Schritt-Anleitungen, praktische Beispiele und prägnante Erklärungen bereitgestellt, damit der Leser diese Funktionen implementieren, testen und validieren kann. Darüber hinaus werden Sicherheitstipps, Compliance-Checks und Best Practices besprochen, um einen sicheren und effizienten Fernzugriff auf Ihre virtuellen Maschinen sicherzustellen, und zwar autonom, professionell und zuverlässig.
Warum ist Azure Bastion für den VM-Zugriff von entscheidender Bedeutung?
- Erhöhte Sicherheit: Macht öffentliche IP-Adressen auf VMs überflüssig und schützt sie so vor direkten Angriffen aus dem Internet. Der Zugriff erfolgt per TLS über den Browser.
- Vereinfachter Zugriff: Stellt direkt über das Azure-Portal eine Verbindung zu VMs her, ohne dass native RDP/SSH-Clients oder VPNs erforderlich sind.
- Zero Trust: Entspricht den Prinzipien von Zero Trust und stellt sicher, dass der Zugriff immer überprüft und autorisiert wird, unabhängig vom Standort des Benutzers.
- Prüfung und Überwachung: Ermöglicht Ihnen die Überwachung und Verwaltung von Sitzungen mit der Option der Sitzungsaufzeichnung (verfügbar auf der Premium-SKU) für Prüfungs- und Compliance-Zwecke.
- Reduzierte Kosten und Komplexität: Da es sich um einen vollständig verwalteten PaaS-Dienst handelt, entfällt die Notwendigkeit, eigene Jumpboxes oder komplexe VPNs zu verwalten.
- Port-Scan-Schutz: VMs haben keine öffentlichen IP-Adressen, sodass sie für Port-Scanner und bösartige Bots im Internet unsichtbar sind.
Voraussetzungen
Um Azure Bastion zu implementieren, benötigen Sie die folgenden Elemente:
- Aktives Azure-Abonnement: Ein Azure-Abonnement zum Erstellen und Verwalten von Ressourcen.
- Administratorzugriff: Ein Konto mit der Rolle „Besitzer“ oder „Mitwirkender“ für das Abonnement oder die Ressourcengruppe, in der sich die VMs befinden.
- Azure Virtual Network (VNet): Ein vorhandenes virtuelles Netzwerk, das die VMs enthält, mit denen Sie eine Verbindung herstellen möchten.
- Dediziertes Subnetz für Azure Bastion: Ein Subnetz in Ihrem VNet mit dem Namen „AzureBastionSubnet“ und einem Präfix von mindestens „/27“ (z. B. „10.0.2.0/27“). Dieses Subnetz ist exklusiv für Bastion und kann nicht für andere Ressourcen verwendet werden [4].
- Virtuelle Maschinen (VMs): Vorhandene Windows- oder Linux-VMs im selben VNet (oder Peering-VNets), mit dem Sie eine Verbindung herstellen möchten.
Schritt für Schritt: Azure Bastion konfigurieren
Lassen Sie uns Azure Bastion bereitstellen und damit eine Verbindung zu einer VM herstellen.
1. Erstellen des Subnetzes „AzureBastionSubnet“.
Vorherund Bastion bereitstellen möchten, müssen Sie ein dediziertes Subnetz erstellen.
- Öffnen Sie Ihren Browser und navigieren Sie zum Azure-Portal: „https://portal.azure.com“.
- Melden Sie sich mit einem Konto an, das über die erforderlichen Berechtigungen verfügt.
- Geben Sie im oberen Suchfeld „Virtuelle Netzwerke“ ein und wählen Sie es aus den Ergebnissen aus.
- Wählen Sie das virtuelle Netzwerk aus, in dem sich Ihre VMs befinden.
- Wählen Sie im linken Navigationsbereich unter „Einstellungen“ die Option Subnetze aus.
-
Klicken Sie auf „+Subnetz“.
-
Subnetz hinzufügen:
- Name: Geben Sie „AzureBastionSubnet“ ein (dieser Name ist erforderlich).
- Subnetz-Adressbereich: Geben Sie einen Adressbereich mit einem Präfix von mindestens „/27“ an (z. B. „10.0.2.0/27“).
- Belassen Sie andere Einstellungen als Standard.
-
Klicken Sie auf Speichern.
- Erklärung: Das „AzureBastionSubnet“ ist der Ort, an dem der Azure Bastion-Dienst bereitgestellt wird. Es ist wichtig, dass der Name genau „AzureBastionSubnet“ lautet, damit der Dienst korrekt bereitgestellt werden kann.
2. Bereitstellung von Azure Bastion
Da das Subnetz nun bereit ist, können wir den Bastion-Dienst bereitstellen.
- Geben Sie im Azure-Portal im oberen Suchfeld „Bastion“ ein und wählen Sie es aus den Ergebnissen aus.
-
Klicken Sie auf „+ Erstellen“.
-
Grundlagen:
- Abonnement: Wählen Sie Ihr Abonnement aus.
- Ressourcengruppe: Wählen Sie dieselbe Ressourcengruppe wie Ihr VNet aus.
- Name: Geben Sie Ihrer Bastion-Instanz einen Namen (z. B. „myBastionHost“).
- Region: Wählen Sie dieselbe Region wie Ihr VNet aus.
- Stufe: Wählen Sie „Basic“ (für einfaches RDP/SSH) oder „Standard“ (für zusätzliche Funktionen wie Sitzungsaufzeichnung, Linkfreigabe usw.). Für diese Anleitung verwenden wir „Basic“.
-
Virtuelles Netzwerk:
- Virtuelles Netzwerk: Wählen Sie das VNet aus, in dem Sie das „AzureBastionSubnet“ erstellt haben.
- Subnetz: Das „AzureBastionSubnet“ wird automatisch ausgewählt.
- Öffentliche IP-Adresse: Klicken Sie auf „Neu erstellen“. Geben Sie der öffentlichen IP einen Namen (z. B. „myBastionPublicIP“). Diese öffentliche IP ist für den Bastion-Dienst bestimmt und wird Ihren VMs nicht angezeigt.
-
Klicken Sie auf „Überprüfen + erstellen“ und dann auf Erstellen.
- Erklärung: Die Azure Bastion-Bereitstellung kann 5 bis 10 Minuten dauern. Nach der Bereitstellung kann es für den Zugriff auf Ihre VMs verwendet werden.
3. Herstellen einer Verbindung zu einer Windows-VM über RDP
Stellen wir eine Verbindung zu einer Windows-VM her, ohne deren RDP-Port freizugeben.
- Navigieren Sie im Azure-Portal zu Ihrer Windows-VM.
- Wählen Sie im linken Navigationsbereich Verbinden aus.
- Wählen Sie Bastion.
- Geben Sie Ihre Windows-VM-Benutzeranmeldeinformationen und Ihr Kennwort ein.
-
Klicken Sie auf Verbinden.
- Erwartete Aktion: Ein neuer Browser-Tab wird geöffnet und Sie sehen Ihren Windows-VM-Desktop. Die Anbindung erfolgt komplett auf HTML5-basiert im Browser.
4. Herstellen einer Verbindung zu einer Linux-VM über SSH
Stellen wir eine Verbindung zu einer Linux-VM her, ohne deren SSH-Port freizugeben.
- Navigieren Sie im Azure-Portal zu Ihrer Linux-VM.
- Wählen Sie im linken Navigationsbereich Verbinden aus.
- Wählen Sie Bastion.
- Wählen Sie den „Authentifizierungstyp“: „Benutzername und Passwort“ oder „Privater SSH-Schlüssel“.
- Geben Sie bei „Benutzername und Passwort“ Ihre Linux-VM-Anmeldeinformationen ein.
- Wenn „SSH Private Key“, laden Sie Ihre private Schlüsseldatei („.pem“ oder „.ppk“) hoch.
-
Klicken Sie auf Verbinden.
- Erwartete Aktion: Ein neuer Browser-Tab wird geöffnet und Sie sehen das Terminal Ihrer Linux-VM, über das Sie SSH-Befehle ausführen können.
Validierung und Tests
Es ist wichtig zu überprüfen, ob der Zugriff über Azure Bastion wie erwartet funktioniert und dass auf die VMs nicht auf andere Weise zugegriffen werden kann.
1. Überprüfen der Bastion-Konnektivität
- Szenario: Versuchen Sie, über Azure Bastion auf Ihre Windows- und Linux-VMs zuzugreifen, wie in den Schritten 3 und 4 oben beschrieben.
- Erwartete Aktion: RDP- und SSH-Verbindungen sollten erfolgreich über den Browser hergestellt werden.
- Verifizierung:
- Bestätigen Sie, dass Sie mit dem Windows-VM-Desktop interagieren und Befehle im Linux-VM-Terminal ausführen können.
2. Überprüfen der direkten Unzugänglichkeit von VMs
- Szenario: Versuchen Sie, über einen RDP- oder SSH-Client direkt über das Internet auf Ihre VMs zuzugreifen und dabei auf die öffentliche IP-Adresse der VM (sofern vorhanden) oder die private IP-Adresse (falls Sie sich außerhalb des VNet befinden) zu verweisen.
- Erwartete Aktion: Direkte Verbindungsversuche sollten fehlschlagen, da RDP/SSH-Ports nicht öffentlich verfügbar gemacht werden sollten.
- Verifizierung:
*Wenn Ihre VMs über öffentliche IP-Adressen verfügen, überprüfen Sie die Regeln der Netzwerksicherheitsgruppe (NSG), die mit der Netzwerkschnittstelle oder dem Subnetz der VM verknüpft sind. Stellen Sie sicher, dass die Ports 3389 (RDP) und 22 (SSH) nicht für „Any“ oder „Internet“ geöffnet sind.
- Idealerweise sollten VMs, auf die über Bastion zugegriffen wird, keine zugehörigen öffentlichen IPs haben.
3. Bastion-Sitzungsüberwachung (Standard-SKU)
Wenn Sie Bastion mit der Standard-SKU bereitgestellt haben, können Sie aktive Sitzungen überwachen.
- Navigieren Sie im Azure-Portal zu Ihrer Azure Bastion-Ressource („myBastionHost“).
- Wählen Sie im linken Navigationsbereich unter „Überwachung“ die Option Sitzungen aus.
- Sie sehen eine Liste der aktiven RDP- und SSH-Sitzungen, einschließlich Benutzer, Quell-IP und Ziel-VM.
Sicherheitstipps und Best Practices
- Öffentliche IP-Adressen von VMs entfernen: Entfernen Sie nach der Konfiguration von Azure Bastion alle öffentlichen IP-Adressen von Ihren VMs. Dies ist der größte Sicherheitsvorteil von Bastion.
- NSGs entsprechend konfigurieren: Stellen Sie sicher, dass die Netzwerksicherheitsgruppen (NSGs) Ihrer VM-Subnetze und „AzureBastionSubnet“ richtig konfiguriert sind, um nur den erforderlichen Datenverkehr zuzulassen. Bastion benötigt Zugriff auf die privaten RDP/SSH-Ports der VMs, aber VMs benötigen keinen öffentlichen eingehenden Zugriff.
- Prinzip der geringsten Rechte: Weisen Sie nur die erforderlichen Berechtigungen zu, damit Benutzer über Bastion eine Verbindung zu VMs herstellen können. Azure RBAC kann verwendet werden, um zu steuern, wer Bastion verwenden kann.
- Starke Authentifizierung: Verwenden Sie immer eine starke Authentifizierung für Ihre VM-Anmeldeinformationen. Kombinieren Sie es mit Azure AD zur Authentifizierung und, wenn möglich, mit bedingtem Zugriff, um MFA für den Zugriff auf das Azure-Portal zu erfordern, das wiederum den Zugriff auf Bastion steuert.
- Sitzungsaufzeichnung (Premium-SKU): Für Umgebungen, die strenge Compliance und Überwachung erfordern, sollten Sie die Verwendung der Azure Bastion Premium-SKU zum Aufzeichnen von RDP- und SSH-Sitzungen in Betracht ziehen. Dies bietet eine visuelle Aufzeichnung dessen, was auf den VMs getan wurde.
- Protokollüberwachung: Überwachen Sie Azure-Aktivitätsprotokolle für Bastion und Sicherheitsprotokolle für Ihre VMs, um verdächtige Aktivitäten oder unbefugte Zugriffsversuche zu erkennen.
- Updates und Patches: Halten Sie Ihre VMs mit den neuesten Sicherheitspatches auf dem neuesten Stand, um interne Schwachstellen zu mindern.
Allgemeine Fehlerbehebung
- Ich kann die Bastion-Option nicht sehen, wenn ich versuche, eine Verbindung zur VM herzustellen:
- Stellen Sie sicher, dass Azure Bastion im selben VNet (oder Peering-VNet) wie die VM bereitgestellt wurde.
- Stellen Sie sicher, dass „AzureBastionSubnet“ vorhanden ist und das richtige Adresspräfix hat („/27“ oder höher).
- Überprüfen Sie im Azure-Portal, ob sich Bastion im Status „Wird ausgeführt“ befindet.
- RDP/SSH-Verbindungsfehler über Bastion:
- Ungültige Anmeldeinformationen: Stellen Sie sicher, dass die Benutzer- und Kennwortanmeldeinformationen (oder der SSH-Schlüssel) für die VM korrekt sind.
- NSG-Probleme: Bestätigen Sie, dass das NSG des VM-Subnetzes eingehenden Datenverkehr auf den Ports 3389 (RDP) oder 22 (SSH) des „AzureBastionSubnet“ zulässt.
- VM-Firewall: Stellen Sie sicher, dass die interne Firewall der VM keine RDP/SSH-Verbindungen blockiert.
- Der RDP/SSH-Dienst wird nicht ausgeführt: Stellen Sie sicher, dass der RDP-Dienst (für Windows) oder der SSH-Dienst (für Linux) auf der VM ausgeführt wird.
- Langsame Leistung oder Verbindungsabbrüche:
- Überprüfen Sie die Bandbreite Ihrer Internetverbindung. Bastion streamt das Sitzungsvideo an Ihren Browser.
- Erwägen Sie die Verwendung der Standard- oder Premium-SKU von Bastion, die eine bessere Leistung und zusätzliche Funktionen bieten.
- Überprüfen Sie die Ziel-VM auf hohe CPU- oder Speicherauslastung, die sich auf die Sitzungsleistung auswirken kann.
- Ich kann über Bastion nicht auf interne VM-Ressourcen zugreifen:
- Azure Bastion bietet Konnektivität zur VM. Sobald die Verbindung zur VM hergestellt ist, hängt der Zugriff auf andere interne Ressourcen des VNet von den eigenen Netzwerkkonfigurationen der VM und den geltenden NSG-Regeln ab.
Fazit
Azure Bastion ist eine wesentliche Komponente für die Sicherheit von Cloud-Umgebungen und bietet eine sichere und vereinfachte Methode für den Zugriff auf virtuelle Maschinen. Durch die Eliminierung der direkten Gefährdung von RDP/SSH-Ports durch das Internet wird die Angriffsfläche deutlich reduziert und die allgemeine Sicherheitslage gestärkt. Eine sorgfältige Implementierung, die Integration mit bewährten Sicherheitspraktiken und eine kontinuierliche Überwachung sind entscheidend für die Maximierung der Vorteile von Bastion. Mit diesem gMit diesem praktischen Ansatz sind Sicherheitsexperten und IT-Administratoren bestens für die Konfiguration, Validierung und Verwaltung von Azure Bastion gerüstet und stellen so sicher, dass der Zugriff auf ihre virtuellen Maschinen stets sicher und konform ist.
Referenzen:
[1] Microsoft Learn. Was ist Azure Bastion?. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview [2] Microsoft Learn. Entwurfs- und Planungsüberlegungen für die Verwendung von Azure Bastion, um sicheren Remotezugriff auf virtuelle Maschinen in Azure zu ermöglichen. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access [3] Microsoft Learn. Stellen Sie über RDP eine Verbindung zu einer Windows-VM her – Azure Bastion. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4] Microsoft Learn. Konfigurieren Sie einen Bastion-Host. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5] Microsoft Learn. Stellen Sie über SSH eine Verbindung zu einer Linux-VM her – Azure Bastion. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6] Microsoft Learn. Azure Bastion-Sitzungsüberwachung und -verwaltung. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7] Microsoft Learn. Bastion-Sitzungsaufzeichnung konfigurieren. Verfügbar unter: https://learn.microsoft.com/pt-br/azure/bastion/session-recording