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:

  1. VPC: Der Hauptcontainer für Ihr Netzwerk, der einen privaten IP-Adressbereich (CIDR-Block) definiert.
  2. Subnetze: Unterteilungen innerhalb der VPC, kategorisiert als Öffentlich (mit direktem Internetzugang) oder Privat (isoliert).
  3. Internet Gateway (IGW): Erforderlich, damit Ressourcen in öffentlichen Subnetzen mit dem Internet kommunizieren können.
  4. Routentabellen: Regeln, die bestimmen, wohin der Netzwerkverkehr von Subnetzen geleitet wird.
  5. 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)

  1. Erstellen Sie eine IGW-Ressource in der AWS-Konsole.
  2. 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/0 an 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/0 niemals 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.

  1. AMI und Instanztyp auswählen: Wählen Sie Ihr gewünschtes Amazon Machine Image (AMI) und die Hardwarespezifikationen.
  2. 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.
  3. 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:

  1. 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.
  2. 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.