AWS Germany – Amazon Web Services in Deutschland

Sichere Verbindung von öffentlich zu privat: Einführung des EC2 Instance Connect-Endpunkts

Von Ariana Rahgozar, Solutions Architect und Kenneth Kitts, Sr. Technical Account Manager, übersetzt von Alex König, Sr. Solutions Architect, AWS

Stellen Sie sich vor, Sie versuchen, eine Verbindung zu einer Amazon Elastic Compute Cloud (Amazon EC2)-Instanz innerhalb Ihrer Amazon Virtual Private Cloud (Amazon VPC) über das Internet herzustellen. Normalerweise müssen Sie zunächst eine Verbindung zu einem Bastion-Host mit einer öffentlichen IP-Adresse herstellen, die Ihr Administrator über ein Internet-Gateway (IGW) in Ihrer VPC eingerichtet hat, und dann eine Portweiterleitung verwenden, um Ihr Ziel zu erreichen.

Wir haben Amazon EC2 Instance Connect (EIC) Endpoint eingeführt, eine neue Funktion, mit der Sie eine sichere Verbindung zu Ihren Instances und anderen VPC-Ressourcen über das Internet herstellen können. Mit EIC Endpoint benötigen Sie kein IGW in Ihrer VPC, keine öffentliche IP-Adresse auf Ihrer Ressource, keinen Bastion-Host und keinen Agenten mehr, um sich mit Ihren Ressourcen zu verbinden. EIC Endpoint kombiniert identitätsbasierte und netzwerkbasierte Zugriffskontrollen und bietet die Isolierung, Kontrolle und Protokollierung, die Sie benötigen, um die Sicherheitsanforderungen Ihres Unternehmens zu erfüllen. Ein weiterer Vorteil ist, dass Ihr Unternehmensadministrator von der Wartung und dem Patching der Bastion-Hosts für die Konnektivität entlastet wird. EIC Endpoint arbeitet mit der AWS Management Console und dem AWS Command Line Interface (AWS CLI). Darüber hinaus bietet es Ihnen die Flexibilität, weiterhin Ihre bevorzugten Tools wie PuTTY und OpenSSH zu verwenden.

In diesem Beitrag geben wir einen Überblick über die Funktionsweise des EIC-Endpunkts und seine Sicherheitskontrollen, führen Sie durch Ihre erste EIC-Endpunkt-Erstellung und demonstrieren, wie Sie sich über den EIC-Endpunkt per SSH mit einer Instanz aus dem Internet verbinden.

EIC Endpoint Produktübersicht

EIC Endpoint ist ein identitätsbewusster TCP-Proxy. Er verfügt über zwei Modi: Zunächst wird der AWS CLI-Client verwendet, um einen sicheren WebSocket-Tunnel von Ihrer Workstation zum Endpunkt mit Ihren AWS Identity and Access Management (IAM)-Anmeldeinformationen zu erstellen. Sobald Sie einen Tunnel aufgebaut haben, richten Sie Ihren bevorzugten Client auf Ihre Loopback-Adresse (127.0.0.1 oder localhost) und stellen die Verbindung wie gewohnt her. Zweitens: Wenn Sie die AWS CLI nicht verwenden, bietet Ihnen die Konsole einen sicheren und nahtlosen Zugriff auf Ressourcen innerhalb Ihrer VPC. Die Authentifizierung und Autorisierung wird geprüft, bevor der Datenverkehr die VPC erreicht. Die folgende Abbildung zeigt eine Illustration eines Benutzers, der sich über einen EIC-Endpunkt verbindet:

Abbildung 1 zeigt einen Benutzer, der sich über einen EIC-Endpunkt mit privaten EC2-Instanzen innerhalb einer VPC verbindet

Abbildung 1 Benutzer, der sich mit privaten EC2-Instanzen über einen EIC-Endpunkt verbindet

EIC-Endpunkte bieten ein hohes Maß an Flexibilität. Erstens ist es nicht erforderlich, dass Ihre VPC über ein IGW oder ein NAT-Gateway direkt mit dem Internet verbunden ist. Zweitens ist auf der Ressource, zu der Sie eine Verbindung herstellen möchten, kein Agent erforderlich, was eine einfache Fernverwaltung von Ressourcen ermöglicht, die möglicherweise keine Agenten unterstützen, wie z. B. Appliances von Drittanbietern. Drittens werden bestehende Arbeitsabläufe beibehalten, so dass Sie weiterhin Ihre bevorzugte Client-Software auf Ihrer lokalen Workstation für die Verbindung und Verwaltung Ihrer Ressourcen verwenden können. Und schließlich können IAM und Sicherheitsgruppen zur Zugriffskontrolle verwendet werden, auf die wir im nächsten Abschnitt näher eingehen.

Vor der Einführung von EIC-Endpunkten bot AWS zwei wichtige Services an, um den Zugriff aus dem öffentlichen Adressraum auf eine VPC sorgfältiger zu verwalten. Der erste ist EC2 Instance Connect, das einen Mechanismus bereitstellt, der IAM-Anmeldeinformationen verwendet, um kurzlebige SSH-Schlüssel an eine Instanz zu übertragen, wodurch langlebige Schlüssel überflüssig werden. Bisher benötigte EC2 Instance Connect jedoch eine öffentliche IP-Adresse auf Ihrer Instanz, wenn Sie sich über das Internet verbinden wollten. Mit dieser Einführung können Sie EC2 Instance Connect mit EIC Endpoints verwenden und die beiden Funktionen kombinieren, um SSH mit kurzlebigen Schlüsseln für Ihre Instanzen zu ermöglichen, ohne dass diese dem öffentlichen Internet ausgesetzt sind. Als Alternative zu EC2 Instance Connect und EIC Endpoint-basierter Konnektivität bietet AWS auch Systems Manager Session Manager (SSM), der agentenbasierte Konnektivität zu Instances bietet. SSM verwendet IAM für die Authentifizierung und Autorisierung und ist ideal für Umgebungen, in denen ein Agent für die Ausführung konfiguriert werden kann.

Da EIC Endpoint den Zugriff auf private Ressourcen vom öffentlichen IP-Raum aus ermöglicht, sollten wir uns die Sicherheitskontrollen und -funktionen genauer ansehen, bevor wir die Erstellung Ihres ersten EIC Endpoints besprechen.

Sicherheitsfunktionen und -kontrollen

Viele AWS-Kunden, die Ressourcen innerhalb ihrer VPCs aus dem Internet fernverwalten, verwenden immer noch entweder öffentliche IP-Adressen für die betreffenden Ressourcen oder bestenfalls einen Bastion-Host-Ansatz in Kombination mit langlebigen SSH-Schlüsseln. Die Verwendung öffentlicher IP-Adressen lässt sich durch IGW-Routen und/oder Sicherheitsgruppen etwas einschränken. In einer dynamischen Umgebung können diese Kontrollen jedoch schwer zu handhaben sein. Infolgedessen bleibt die sorgfältige Verwaltung langlebiger SSH-Schlüssel die einzige Verteidigungsschicht, was nicht besonders gut ist, da wir alle wissen, dass diese Kontrollen manchmal versagen, und daher ist eine umfassende Verteidigung wichtig. Bastion-Hosts können zwar hilfreich sein, aber sie erhöhen den betrieblichen Aufwand für die Verwaltung, das Patchen und die Wartung der Infrastruktur erheblich.

Die IAM-Autorisierung ist erforderlich, um den EIC-Endpunkt zu erstellen und um eine Verbindung über die sichere Tunneling-Technologie des Endpunkts herzustellen. Neben identitätsbasierten Zugriffskontrollen, die festlegen, wer, wie, wann und wie lange sich Benutzer verbinden können, können auch herkömmliche Netzwerkzugriffskontrollen wie Sicherheitsgruppen verwendet werden. Sicherheitsgruppen, die mit Ihren VPC-Ressourcen verknüpft sind, können verwendet werden, um Zugriff zu gewähren oder zu verweigern. Unabhängig davon, ob es sich um IAM-Richtlinien oder Sicherheitsgruppen handelt, wird der Datenverkehr standardmäßig verweigert, es sei denn, er ist ausdrücklich erlaubt.

EIC Endpoint erfüllt wichtige Sicherheitsanforderungen in Bezug auf die Trennung von Berechtigungen für die Steuerungsebene und die Datenebene. Ein Administrator mit vollständigen EC2 IAM-Berechtigungen kann EIC-Endpunkte erstellen und steuern (die Steuerungsebene). Er kann diese Endpunkte jedoch nur nutzen, wenn er auch über EC2 Instance Connect IAM-Berechtigungen (die Datenebene) verfügt. Umgekehrt benötigen DevOps-Ingenieure, die EIC-Endpunkte zum Tunneln von VPC-Ressourcen verwenden müssen, keine Berechtigungen für die Steuerebene, um dies zu tun. In allen Fällen müssen die IAM-Prinzipale, die einen EIC-Endpunkt verwenden, Teil desselben AWS-Kontos sein (entweder direkt oder durch kontoübergreifende Rollenübernahme). Sicherheitsadministratoren und Auditoren haben einen zentralen Überblick über die Endpunktaktivitäten, da alle API-Aufrufe zur Konfiguration und Verbindung über die EIC-Endpunkt-API in AWS CloudTrail aufgezeichnet werden. Zu den Aufzeichnungen von Verbindungen auf der Datenebene gehören der IAM-Prinzipal, der die Anfrage stellt, die Quell-IP-Adresse, die angeforderte Ziel-IP-Adresse und der Ziel-Port. Ein Beispiel für einen CloudTrail-Eintrag ist in der folgenden Abbildung dargestellt.

Abbildung 2 zeigt einen Beispiel-Cloud-Trail-Eintrag für eine SSH-Verbindung auf der Datenebene für einen IAM-User

Abbildung 2 Teilweiser CloudTrail-Eintrag für eine SSH-Verbindung auf der Datenebene

EIC Endpoint unterstützt die optionale Verwendung der Client IP Preservation (auch bekannt als Source IP Preservation), die für bestimmte Organisationen einen wichtigen Sicherheitsaspekt darstellt. Angenommen, die Ressource, mit der Sie sich verbinden, verfügt über Netzwerkzugriffskontrollen, die auf Ihre spezifische öffentliche IP-Adresse beschränkt sind, oder Ihre Instanzzugriffsprotokolle müssen die „wahre“ IP-Adresse des Clients enthalten. Obwohl Sie diese Funktion bei der Erstellung eines Endpunkts aktivieren können, ist die Standardeinstellung deaktiviert. Wenn sie ausgeschaltet ist, verwenden Verbindungen, die über den Endpunkt vermittelt werden, die private IP-Adresse des Endpunkts im Quell-IP-Feld der Netzwerkpakete. Dieses Standardverhalten ermöglicht es Verbindungen, die über den Endpunkt vermittelt werden, so weit zu kommen, wie es Ihre Routentabellen zulassen. Denken Sie daran, egal wie Sie diese Einstellung konfigurieren, CloudTrail zeichnet die wahre IP-Adresse des Clients auf.

EIC-Endpunkte stärken die Sicherheit durch die Kombination von identitätsbasierter Authentifizierung und Autorisierung mit herkömmlichen Netzwerkkontrollen und bieten eine fein abgestufte Zugriffskontrolle, Protokollierung, Überwachung und umfassendere Verteidigung. Darüber hinaus wird all dies erreicht, ohne dass eine Internet-fähige Infrastruktur in Ihrer VPC erforderlich ist, wodurch die Möglichkeit eines unbeabsichtigten Zugriffs auf private VPC-Ressourcen minimiert wird.

Erste Schritte

Erstellen Ihres EIC-Endpunkts

Es ist nur ein Endpunkt pro VPC erforderlich. Um einen Endpunkt zu erstellen oder zu ändern und eine Verbindung zu einer Ressource herzustellen, muss ein Benutzer über die erforderlichen IAM-Berechtigungen verfügen, und alle Sicherheitsgruppen, die mit Ihren VPC-Ressourcen verknüpft sind, müssen über eine Regel verfügen, die die Konnektivität zulässt. In den folgenden Ressourcen finden Sie weitere Einzelheiten zur Konfiguration von Sicherheitsgruppen und Beispielen für IAM-Berechtigungen.

Ein EIC-Endpunkt kann über die AWS CLI oder die Konsole erstellt werden. Im Folgenden wird die AWS CLI demonstriert. Wie Sie einen EIC-Endpunkt mit der Konsole erstellen, erfahren Sie in der Dokumentation.

Erstellen eines EIC-Endpunkts mit der AWS CLI

Um einen EIC-Endpunkt mit der AWS CLI zu erstellen, führen Sie den folgenden Befehl aus, wobei Sie [SUBNET] durch Ihre Subnetz-ID und [SG-ID] durch Ihre Sicherheitsgruppen-ID ersetzen:

aws ec2 create-instance-connect-endpoint \
    --subnet-id [SUBNET] \
    --security-group-id [SG-ID]

Nach der Erstellung eines EIC-Endpunkts über die AWS CLI oder die Konsole und der Erteilung der IAM-Berechtigung zum Erstellen eines Tunnels an den Benutzer kann eine Verbindung hergestellt werden. Im Folgenden wird die Verbindung zu Linux-Instanzen über SSH beschrieben. Beachten Sie jedoch, dass Sie auch die OpenTunnel-API verwenden können, um sich über RDP mit Instanzen zu verbinden.

Verbinden mit Ihrer Linux-Instanz über SSH

Wenn Ihr EIC-Endpunkt in Ihrem VPC-Subnetz eingerichtet ist, können Sie eine Verbindung über SSH herstellen. Traditionell wurde der Zugang zu einer EC2-Instanz über SSH durch Schlüsselpaare und Netzwerkzugangskontrollen kontrolliert. Mit EIC Endpoint wird eine zusätzliche Kontrollebene durch IAM-Richtlinien aktiviert, was zu einer verbesserten Sicherheitslage für den Fernzugriff führt. Im Folgenden werden zwei Methoden für die Verbindung über SSH beschrieben.

Ein-Klick-Befehl

Um den operativen Aufwand für die Erstellung und Rotation von SSH-Schlüsseln weiter zu reduzieren, können Sie den neuen Befehl ec2-instance-connect ssh aus der AWS CLI verwenden. Mit diesem neuen Befehl generieren wir kurzlebige Schlüssel, mit denen Sie sich mit Ihrer Instanz verbinden können. Beachten Sie, dass dieser Befehl die Verwendung des OpenSSH-Clients und die neueste Version der AWS CLI erfordert. Um diesen Befehl zu verwenden und eine Verbindung herzustellen, benötigen Sie IAM-Berechtigungen, wie hier beschrieben.

Nach der Konfiguration können Sie die Verbindung mit dem neuen AWS CLI-Befehl herstellen, wie in der folgenden Abbildung dargestellt:

Abbildung 3 zeigt die AWS-CLI-Ansicht, wenn Sie mit dem One-Click-Befehl erfolgreich eine Verbindung zu Ihrer Instance hergestellt haben. Wenn Sie den Befehl ausführen, werden Sie aufgefordert, eine Verbindung herzustellen, und können auf Ihre Instance zugreifen.

Abbildung 3 AWS CLI-Ansicht bei erfolgreicher SSH-Verbindung zu Ihrer Instanz

Um die Verbindung zu Ihrer Instanz über die AWS CLI zu testen, können Sie den folgenden Befehl ausführen, wobei [INSTANCE] die Instanz-ID Ihrer EC2-Instanz ist:

aws ec2-instance-connect ssh --instance-id [INSTANCE]

Beachten Sie, dass Sie trotzdem langlebige SSH-Anmeldedaten für die Verbindung verwenden können, wenn Sie bestehende Arbeitsabläufe beibehalten müssen, was wir im Folgenden zeigen werden. Beachten Sie jedoch, dass dynamische, häufig geänderte Anmeldeinformationen im Allgemeinen sicherer sind.

Befehl zum Öffnen des Tunnels

Sie können sich auch über SSH mit den Standardwerkzeugen oder mit dem Proxy-Befehl verbinden. Um einen privaten Tunnel (TCP-Proxy) zur Instanz einzurichten, müssen Sie einen AWS CLI-Befehl ausführen, den Sie in der folgenden Abbildung sehen können:

Abbildung 4 zeigt die AWS-CLI-Ansicht, nachdem Sie den Befehl aws ec2-instance-connect open-tunnel ausgeführt und sich mit Ihrer Instanz verbunden haben.

Abbildung 4 AWS CLI-Ansicht nach Ausführung des neuen SSH-Befehls open-tunnel, der einen privaten Tunnel für die Verbindung zu unserer EC2-Instanz erstellt

Sie können den folgenden Befehl ausführen, um die Konnektivität zu testen, wobei [INSTANCE] die Instanz-ID Ihrer EC2-Instanz und [SSH-KEY] der Speicherort und Name Ihres SSH-Schlüssels ist. Eine Anleitung zur Verwendung von SSH-Schlüsseln finden Sie in unserer Dokumentation zu Amazon EC2-Schlüsselpaaren und Linux-Instanzen.

ssh ec2-user@[INSTANCE] \
    -i [SSH-KEY] \
    -o ProxyCommand='aws ec2-instance-connect open-tunnel \
    --instance-id %h'

Sobald wir unseren EIC-Endpunkt konfiguriert haben, können wir uns per SSH über die AWS-CLI in unsere EC2-Instanzen ohne öffentliche IP oder IGW einloggen.

Zusammenfassung

EIC Endpoint bietet eine sichere Lösung für die Verbindung zu Ihren Instanzen über SSH oder RDP in privaten Subnetzen ohne IGWs, öffentliche IPs, Agenten und Bastion Hosts. Wenn Sie einen EIC Endpoint für Ihre VPC konfigurieren, können Sie eine sichere Verbindung mit Ihren vorhandenen Client-Tools oder der Console/AWS CLI herstellen. Weitere Informationen finden Sie in der EIC-Endpoint-Dokumentation.