So starten Sie eine EC2-Instanz sicher in einer benutzerdefinierten VPC
Starten Sie EC2 in einer benutzerdefinierten VPC mit öffentlichen und privaten Subnetzen, Routentabellen, Sicherheitsgruppen und sicheren Zugangspfaden.
So starten Sie eine EC2-Instanz sicher in einer benutzerdefinierten VPC
Das Starten einer Amazon EC2-Instanz in der Standard-VPC ist schnell, bietet aber oft weniger Kontrolle, als eine Produktions- oder Staging-Umgebung benötigt. Eine benutzerdefinierte VPC ermöglicht es Ihnen, den Adressbereich zu wählen, öffentliche und private Subnetze zu trennen und genau zu entscheiden, welche Pfade das Internet erreichen.
Diese Anleitung zeigt ein praktisches, sicheres Layout: ein öffentliches Subnetz für Load Balancer oder Bastion-Hosts, ein privates Subnetz für Anwendungsinstanzen, Routentabellen, die diesen Rollen entsprechen, und Sicherheitsgruppen, die nur den erforderlichen Datenverkehr zulassen.
Verständnis der Kernkomponenten einer sicheren VPC
Eine Virtual Private Cloud (VPC) ist die Grundlage, auf der das gesamte sichere AWS-Netzwerk aufbaut. Bevor Sie eine Instanz starten, müssen Sie sicherstellen, dass die folgenden Komponenten korrekt konfiguriert sind:
- VPC: Der Hauptcontainer für Ihr Netzwerk, der einen privaten IP-Adressbereich (CIDR-Block) definiert.
- Subnetze: Unterteilungen innerhalb der VPC, kategorisiert als Öffentlich (mit direktem Internetzugang) oder Privat (isoliert).
- Internet Gateway (IGW): Erforderlich, damit Ressourcen in öffentlichen Subnetzen mit dem Internet kommunizieren können.
- Routentabellen: Regeln, die bestimmen, wohin der Netzwerkverkehr von Subnetzen geleitet wird.
- Sicherheitsgruppen (SGs): Zustandsbehaftete Firewalls, die den ein- und ausgehenden Datenverkehr auf Instanzebene steuern.
Schritt 1: Erstellen der benutzerdefinierten VPC und Subnetze
Wir beginnen mit der Erstellung des Netzwerkgehäuses und der Unterteilung in funktionale Bereiche. Für ein Standard-Setup empfehlen wir mindestens ein öffentliches und ein privates Subnetz.
1.1 Erstellen der VPC
Wählen Sie beim Erstellen Ihrer VPC einen privaten CIDR-Block, der sich nicht mit lokalen Netzwerken überschneidet, mit denen Sie später möglicherweise eine Verbindung herstellen (z. B. über AWS VPN oder Direct Connect).
Beispiel VPC CIDR: 10.0.0.0/16
1.2 Erstellen von Subnetzen
Jedes Subnetz befindet sich in einer Availability Zone (AZ). Produktions-VPCs verwenden in der Regel passende öffentliche und private Subnetze in mindestens zwei AZs, aber dieses Beispiel hält das Layout klein mit einem öffentlichen und einem privaten Subnetz in us-east-1a.
- Öffentliches Subnetz:
10.0.1.0/24(Wird für Bastion-Hosts oder Load Balancer verwendet) - Privates Subnetz:
10.0.2.0/24(Wird für Anwendungsserver und Datenbanken verwendet)
Schritt 2: Konfigurieren der Internetkonnektivität und des Routings
Ressourcen in privaten Subnetzen sollten keinen direkten Internetzugang haben. Ressourcen im öffentlichen Subnetz müssen korrekt geroutet werden, um das Internet über ein Internet Gateway (IGW) zu erreichen.
2.1 Anhängen eines Internet Gateways (IGW)
- Erstellen Sie eine IGW-Ressource in der AWS-Konsole.
- Hängen Sie dieses IGW an Ihre neu erstellte VPC an.
2.2 Konfigurieren von Routentabellen
Routentabellen definieren Datenverkehrspfade. Sie benötigen mindestens zwei: eine für das öffentliche Subnetz und eine für das private Subnetz.
Öffentliche Routentabelle
Diese Tabelle leitet den gesamten nicht-lokalen Datenverkehr (0.0.0.0/0) an das angehängte Internet Gateway weiter.
| Ziel | Zielort |
|---|---|
10.0.0.0/16 (VPC-CIDR) |
local |
0.0.0.0/0 |
igw-xxxxxxxx (Ihre IGW-ID) |
Verknüpfen Sie diese Routentabelle mit Ihrem Öffentlichen Subnetz (10.0.1.0/24).
Private Routentabelle
Diese Tabelle erlaubt nur die interne Kommunikation. Entscheidend ist, dass sie keine Route zum IGW haben sollte.
| Ziel | Zielort |
|---|---|
10.0.0.0/16 (VPC-CIDR) |
local |
Verknüpfen Sie diese Routentabelle mit Ihrem Privaten Subnetz (10.0.2.0/24).
Best Practice: Wenn Ressourcen im privaten Subnetz Patches oder Updates herunterladen müssen, sollten Sie ein NAT-Gateway verwenden, das im öffentlichen Subnetz platziert ist. Die private Routentabelle würde dann den Datenverkehr von
0.0.0.0/0an das NAT-Gateway und nicht an das IGW leiten.
Schritt 3: Definieren strenger Sicherheitsgruppenregeln
Sicherheitsgruppen (SGs) fungieren als virtuelle Firewalls für Ihre EC2-Instanzen. Sie arbeiten auf Instanzebene und sind zustandsbehaftet (Rückverkehr wird automatisch zugelassen).
Für ein sicheres Setup sollten Sie das Prinzip der geringsten Privilegien befolgen und nur den notwendigen eingehenden Datenverkehr explizit zulassen.
Beispiel-Sicherheitsgruppe für einen Webserver (Privates Subnetz)
Wenn diese EC2-Instanz ein Anwendungsserver ist, der nur von einem Application Load Balancer (ALB) im öffentlichen Subnetz aus erreichbar ist, sollten die Regeln sehr restriktiv sein:
Eingehende Regeln
| Typ | Protokoll | Portbereich | Quelle |
|---|---|---|---|
| HTTP | TCP | 80 | SG-ID des ALB |
| HTTPS | TCP | 443 | SG-ID des ALB |
| SSH | TCP | 22 | IP-Bereich Ihres Unternehmensnetzwerks oder Bastion-Host-SG-ID |
Ausgehende Regeln
Standardmäßig ist ausgehender Datenverkehr normalerweise zu allen Zielen (0.0.0.0/0) erlaubt. Sie können dies bei Bedarf weiter einschränken (z. B. nur Verbindungen zu einer RDS-Instanz-SG zulassen).
Sicherheitstipp: Weisen Sie
0.0.0.0/0niemals Port 22 (SSH) oder Port 3389 (RDP) in einer öffentlich zugänglichen Sicherheitsgruppe zu. Beschränken Sie den Verwaltungszugriff immer auf bekannte, interne IP-Bereiche.
Schritt 4: Sicheres Starten der EC2-Instanz
Stellen Sie beim Starten Ihrer Instanz sicher, dass Sie sie den oben eingerichteten korrekten Netzwerkkomponenten zuordnen.
- AMI und Instanztyp auswählen: Wählen Sie Ihr gewünschtes Amazon Machine Image (AMI) und die Hardwarespezifikationen.
- Netzwerkeinstellungen: Im Schritt 'Instanzdetails konfigurieren':
- Netzwerk: Wählen Sie Ihre Benutzerdefinierte VPC.
- Subnetz: Wählen Sie das Private Subnetz (
10.0.2.0/24), wenn Sie einen Anwendungsserver starten, der nicht direkt dem Internet ausgesetzt sein soll. - Öffentliche IP automatisch zuweisen: Stellen Sie sicher, dass dies Deaktiviert ist, wenn Sie in ein privates Subnetz starten. (Wenn Sie ein öffentliches Subnetz auswählen, können Sie dies für eine Instanz aktivieren, die direkten öffentlichen Zugriff benötigt, wie z. B. einen Bastion-Host).
- Sicherheitsgruppen: Wählen Sie die Sicherheitsgruppe aus, die Sie in Schritt 3 konfiguriert haben.
- Speicher und Schlüsselpaar: Konfigurieren Sie den Speicher und verknüpfen Sie ein Schlüsselpaar für den sicheren SSH-Zugriff.
Zugriff auf Instanzen in einem privaten Subnetz
Da die Instanz im privaten Subnetz keine öffentliche IP-Adresse hat, können Sie nicht direkt vom öffentlichen Internet aus SSH verwenden. Sie müssen eine von zwei sicheren Methoden verwenden:
- Bastion-Host (Jump Box): Starten Sie eine kleine, gehärtete EC2-Instanz im Öffentlichen Subnetz. Sie SSH zuerst in den Bastion-Host und dann vom Bastion-Host aus über seine private IP-Adresse in die private Instanz.
- AWS Systems Manager (SSM) Session Manager: Dies ist die bevorzugte moderne Methode. Wenn die Instanz den SSM-Agenten installiert hat und eine entsprechende IAM-Rolle zugewiesen ist, die SSM-Konnektivität ermöglicht, können Sie eine sichere Shell-Sitzung direkt von der AWS-Konsole aus initiieren, ohne eingehende SSH-Regeln oder Bastion-Hosts zu benötigen.
Zusammenfassung und nächste Schritte
Das Sichern einer EC2-Instanz in einer benutzerdefinierten VPC umfasst die Schichtung der Netzwerksicherheit von der Makroebene (VPC, Subnetze, Routentabellen) bis zur Mikroebene (Sicherheitsgruppen). Durch sorgfältige Kontrolle der IP-Adressierung und des Datenverkehrsflusses:
- Stellen Sie sicher, dass Anwendungsserver in isolierten privaten Subnetzen residieren.
- Verwenden Sie das IGW oder NAT-Gateway nur dort, wo es notwendig ist.
- Wenden Sie das Prinzip der geringsten Privilegien über Sicherheitsgruppen-Eingangsregeln an.
Sobald Ihre Instanz gestartet ist, denken Sie daran, ihre Aktivität mit AWS CloudTrail und VPC Flow Logs zu überwachen, um eine kontinuierliche Transparenz Ihres privaten Netzwerkverkehrs zu gewährleisten.