Leitfaden zum Aufbau einer sicheren AWS VPC von Grund auf
Erstellen Sie eine sichere AWS VPC mit geplanten CIDR-Bereichen, öffentlichen und privaten Subnetzen, Routentabellen, NAT, Sicherheitsgruppen und Flow-Logs.
Leitfaden zum Aufbau einer sicheren AWS VPC von Grund auf
Eine AWS VPC bietet Ihren Cloud-Ressourcen eine private Netzwerkgrenze, aber die Standardkonfiguration reicht für die Produktion selten aus. Wenn Sie Datenbanken in öffentlichen Subnetzen platzieren, sich überschneidende CIDR-Bereiche wiederverwenden oder weit gefasste Sicherheitsgruppenregeln öffnen, können Probleme entstehen, die später nur schwer rückgängig zu machen sind.
Dieser Leitfaden zeigt Ihnen, wie Sie eine sichere AWS VPC von Grund auf aufbauen – mit öffentlichen Subnetzen für Einstiegspunkte, privaten Subnetzen für Anwendungs- und Datenbank-Workloads, Routentabellen, NAT, Sicherheitsgruppen und grundlegendem Monitoring.
Grundlegende VPC-Konzepte verstehen
Bevor Sie mit den Konfigurationsschritten beginnen, ist es wichtig, die grundlegenden Konzepte der AWS VPC zu verstehen:
- VPC (Virtual Private Cloud): Ein virtuelles Netzwerk, das Ihrem AWS-Konto gewidmet ist. Es handelt sich um einen logisch isolierten Bereich der AWS-Cloud, in dem Sie AWS-Ressourcen starten können.
- Subnetz: Ein Bereich von IP-Adressen in Ihrer VPC. Sie können AWS-Ressourcen in von Ihnen erstellten Subnetzen starten. Subnetze werden durch ihren CIDR-Block definiert, der eine Teilmenge des CIDR-Blocks der VPC ist.
- Routentabelle: Eine Reihe von Regeln, sogenannte Routen, die bestimmen, wohin der Netzwerkverkehr von Ihrem Subnetz oder Gateway geleitet wird.
- Internet-Gateway (IGW): Eine VPC-Komponente, die internetroutbaren Verkehr für Ressourcen mit öffentlichen IP-Adressen und einer Route zum Gateway ermöglicht.
- NAT-Gateway (Network Address Translation): Ein hochverfügbarer und skalierbarer NAT-Dienst, der Internetzugriff für Instanzen in einem privaten Subnetz ermöglicht, während eingehende Verbindungen aus dem Internet verhindert werden.
- Sicherheitsgruppe: Fungiert als virtuelle Firewall für Ihre Instanzen, um eingehenden und ausgehenden Datenverkehr zu kontrollieren. Sie arbeitet auf Instanzebene.
- Network Access Control List (NACL): Eine optionale Sicherheitsebene für Ihre VPC, die als Firewall zur Kontrolle des Datenverkehrs in ein oder mehrere Subnetze und aus diesen heraus fungiert. Sie arbeitet auf Subnetzebene.
Schritt-für-Schritt-VPC-Erstellung
Beginnen wir mit dem Aufbau Ihrer sicheren VPC.
1. Planen Sie Ihr IP-Adressschema
Der erste und wichtigste Schritt ist die Planung Ihres IP-Adressbereichs für die VPC und ihre Subnetze. Dies beinhaltet die Auswahl eines Classless Inter-Domain Routing (CIDR)-Blocks für Ihre VPC.
VPC-CIDR-Block: Wählen Sie einen privaten IP-Adressbereich, der sich nicht mit Ihrem lokalen Netzwerk oder anderen AWS VPCs überschneidet, mit denen Sie möglicherweise über VPN oder Direct Connect verbunden sind. AWS empfiehlt die Verwendung von RFC 1918 IP-Adressbereichen (10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16). Der CIDR-Block kann von /16 (65.536 IP-Adressen) bis /28 (16 IP-Adressen) reichen.
- Beispiel:
10.0.0.0/16bietet einen großen Adressraum für Ihre VPC.
- Beispiel:
Subnetz-CIDR-Blöcke: Teilen Sie den CIDR-Block Ihrer VPC in kleinere CIDR-Blöcke für Ihre Subnetze auf. Stellen Sie sicher, dass der CIDR-Block jedes Subnetzes eine Teilmenge des VPC-CIDR-Blocks ist und sich nicht mit anderen Subnetzen überschneidet.
- Beispiel (wenn VPC
10.0.0.0/16ist):- Öffentliches Subnetz 1:
10.0.1.0/24 - Öffentliches Subnetz 2:
10.0.2.0/24 - Privates Subnetz 1:
10.0.10.0/24 - Privates Subnetz 2:
10.0.11.0/24
- Öffentliches Subnetz 1:
- Beispiel (wenn VPC
2. Erstellen Sie Ihre VPC
Navigieren Sie zum VPC-Dashboard in der AWS Management Console und erstellen Sie eine neue VPC.
- Gehen Sie zu VPC-Dashboard > Ihre VPCs > VPC erstellen.
- Namens-Tag: Geben Sie Ihrer VPC einen beschreibenden Namen (z.B.
MySecureVPC). - IPv4-CIDR-Block: Geben Sie den geplanten CIDR-Block ein (z.B.
10.0.0.0/16). - IPv6-CIDR-Block: Sie können optional einen IPv6-CIDR-Block aktivieren, falls erforderlich.
- Mandantschaft: Für die meisten Anwendungsfälle ist Standard geeignet. Dediziert bietet Hardware-Isolation zu höheren Kosten.
- Klicken Sie auf VPC erstellen.
3. Erstellen Sie Subnetze
Erstellen Sie nun Ihre öffentlichen und privaten Subnetze innerhalb der VPC.
- Gehen Sie zu VPC-Dashboard > Subnetze > Subnetz erstellen.
- VPC-ID: Wählen Sie die soeben erstellte VPC aus.
- Subnetzname: Geben Sie einen Namen an (z.B.
MyPublicSubnet-AZ1). - Verfügbarkeitszone: Wählen Sie eine Verfügbarkeitszone (AZ). Es empfiehlt sich, Ressourcen für hohe Verfügbarkeit über mehrere AZs zu verteilen.
- IPv4-CIDR-Block: Geben Sie den CIDR-Block für dieses Subnetz ein (z.B.
10.0.1.0/24). - Klicken Sie auf Subnetz erstellen.
Wiederholen Sie diesen Vorgang, um alle geplanten öffentlichen und privaten Subnetze zu erstellen. Stellen Sie sicher, dass sie sich aus Gründen der Ausfallsicherheit in verschiedenen Verfügbarkeitszonen befinden.
4. Erstellen Sie ein Internet-Gateway (IGW)
Ein IGW wird benötigt, damit Ihre öffentlichen Subnetze auf das Internet zugreifen können.
- Gehen Sie zu VPC-Dashboard > Internet-Gateways > Internet-Gateway erstellen.
- Namens-Tag:
MyVPCInternetGateway. - Klicken Sie auf Internet-Gateway erstellen.
- Wählen Sie nach der Erstellung das IGW aus, klicken Sie auf Aktionen und wählen Sie An VPC anhängen. Wählen Sie Ihre VPC aus und klicken Sie auf Internet-Gateway anhängen.
5. Erstellen Sie Routentabellen
Routentabellen leiten den Datenverkehr innerhalb Ihrer VPC. Sie benötigen in der Regel mindestens zwei: eine für öffentliche Subnetze und eine für private Subnetze.
a. Öffentliche Routentabelle:
- Gehen Sie zu VPC-Dashboard > Routentabellen > Routentabelle erstellen.
- Namens-Tag:
MyPublicRouteTable. - VPC: Wählen Sie Ihre VPC aus.
- Klicken Sie auf Routentabelle erstellen.
- Wählen Sie die neu erstellte
MyPublicRouteTableaus. - Klicken Sie unter dem Tab Routen auf Routen bearbeiten.
- Klicken Sie auf Route hinzufügen.
- Ziel:
0.0.0.0/0(gesamter IPv4-Datenverkehr). - Ziel: Wählen Sie Internet-Gateway und dann Ihr IGW aus.
- Klicken Sie auf Routen speichern.
- Subnetze zuordnen: Gehen Sie zum Tab Subnetzzuordnungen, klicken Sie auf Subnetzzuordnungen bearbeiten und ordnen Sie Ihre öffentlichen Subnetze dieser Routentabelle zu.
b. Private Routentabelle (mit NAT-Gateway):
Um Instanzen in privaten Subnetzen zu ermöglichen, ausgehende Verbindungen zum Internet zu initiieren (z.B. für Software-Updates), ohne direkt aus dem Internet erreichbar zu sein, verwenden Sie ein NAT-Gateway.
Erstellen Sie ein NAT-Gateway:
- Gehen Sie zu VPC-Dashboard > NAT-Gateways > NAT-Gateway erstellen.
- Name:
MyNATGateway. - Subnetz: Wählen Sie eines Ihrer öffentlichen Subnetze aus.
- Konnektivitätstyp:
Öffentlich. - Elastic-IP-Zuordnungs-ID: Klicken Sie auf Elastic IP zuweisen, um eine neue Elastic-IP-Adresse zu erstellen und zuzuweisen.
- Klicken Sie auf NAT-Gateway erstellen.
- Hinweis: NAT-Gateways verursachen Kosten. Stellen Sie für grundlegende ausgehende Konnektivität sicher, dass in Ihrem öffentlichen Subnetz ausreichend IP-Adressen für das NAT-Gateway verfügbar sind.
Erstellen Sie die private Routentabelle:
- Gehen Sie zu VPC-Dashboard > Routentabellen > Routentabelle erstellen.
- Namens-Tag:
MyPrivateRouteTable. - VPC: Wählen Sie Ihre VPC aus.
- Klicken Sie auf Routentabelle erstellen.
- Wählen Sie die
MyPrivateRouteTableaus. - Klicken Sie unter dem Tab Routen auf Routen bearbeiten.
- Klicken Sie auf Route hinzufügen.
- Ziel:
0.0.0.0/0. - Ziel: Wählen Sie NAT-Gateway und dann Ihr NAT-Gateway aus.
- Klicken Sie auf Routen speichern.
- Subnetze zuordnen: Gehen Sie zum Tab Subnetzzuordnungen, klicken Sie auf Subnetzzuordnungen bearbeiten und ordnen Sie Ihre privaten Subnetze dieser Routentabelle zu.
6. Konfigurieren Sie Sicherheitsgruppen
Sicherheitsgruppen fungieren als zustandsbehaftete Firewalls auf Instanzebene. Sie erlauben oder verweigern Datenverkehr basierend auf von Ihnen definierten Regeln.
- Best Practice: Erstellen Sie spezifische Sicherheitsgruppen für verschiedene Arten von Ressourcen (z.B. Webserver, Datenbankserver, Anwendungsserver). Vermeiden Sie zu freizügige Regeln.
Beispiel: Webserver-Sicherheitsgruppe (WebServerSG)
- Gehen Sie zu VPC-Dashboard > Sicherheitsgruppen > Sicherheitsgruppe erstellen.
- Sicherheitsgruppenname:
WebServerSG. - Beschreibung:
HTTP- und HTTPS-Zugriff erlauben. - VPC: Wählen Sie Ihre VPC aus.
- Eingehende Regeln:
- Typ:
HTTP, Protokoll:TCP, Portbereich:80, Quelle:0.0.0.0/0(oder ein spezifischerer vertrauenswürdiger IP-Bereich). - Typ:
HTTPS, Protokoll:TCP, Portbereich:443, Quelle:0.0.0.0/0(oder ein spezifischerer vertrauenswürdiger IP-Bereich). - (Optional) Typ:
SSH, Protokoll:TCP, Portbereich:22, Quelle:Ihre vertrauenswürdige IP-Adresse/ Bereich(entscheidend für die Verwaltung).
- Typ:
- Ausgehende Regeln: Standardmäßig den gesamten ausgehenden Datenverkehr erlauben (
0.0.0.0/0). Sie können dies bei Bedarf einschränken. - Klicken Sie auf Sicherheitsgruppe erstellen.
Beispiel: Datenbankserver-Sicherheitsgruppe (DatabaseSG)
- Erstellen Sie eine neue Sicherheitsgruppe mit dem Namen
DatabaseSG. - Eingehende Regeln:
- Fügen Sie eine Regel hinzu, die Datenverkehr auf dem Standardport Ihrer Datenbank (z.B.
3306für MySQL,5432für PostgreSQL) nur von der Sicherheitsgruppe Ihrer Anwendungsserver (z.B.WebServerSGoderAppServerSG) erlaubt. - Quelle: Wählen Sie Benutzerdefiniert und geben Sie dann die ID Ihrer Anwendungsserver-Sicherheitsgruppe ein.
- Fügen Sie eine Regel hinzu, die Datenverkehr auf dem Standardport Ihrer Datenbank (z.B.
- Ausgehende Regeln: In der Regel den gesamten ausgehenden Datenverkehr erlauben.
7. Konfigurieren Sie Network Access Control Lists (NACLs)
NACLs sind zustandslose Firewalls, die auf Subnetzebene arbeiten. Sie dienen als zusätzliche Verteidigungsebene.
Zustandsbehaftet vs. Zustandslos: Sicherheitsgruppen sind zustandsbehaftet (wenn Sie eingehenden Datenverkehr zulassen, wird die ausgehende Antwort automatisch erlaubt). NACLs sind zustandslos (Sie müssen explizit Regeln für sowohl eingehenden als auch ausgehenden Datenverkehr definieren).
Best Practice: NACLs werden oft mit Standardkonfigurationen belassen, es sei denn, eine spezifische Zugriffskontrolle auf Subnetzebene ist erforderlich. Sie können komplex zu verwalten sein.
Wenn Sie NACLs verwenden müssen:
- Gehen Sie zu VPC-Dashboard > Network ACLs > Network ACL erstellen.
- Namens-Tag:
MyNacl. - VPC: Wählen Sie Ihre VPC aus.
- Klicken Sie auf Network ACL erstellen.
- Wählen Sie die NACL aus und fügen Sie unter Eingehende Regeln Regeln hinzu.
- Regelnummern: NACLs werten Regeln in der Reihenfolge aus, beginnend mit der niedrigsten Regelnummer. Verwenden Sie Nummern wie
100,200,300usw., um zukünftige Regelhinzufügungen zu ermöglichen. - Erlauben/Verweigern: Geben Sie an, ob Datenverkehr erlaubt oder verweigert werden soll.
- Protokoll, Portbereich, Quelle/Ziel: Definieren Sie die Verkehrsparameter.
- Denken Sie daran, entsprechende Ausgehende Regeln zu konfigurieren.
- Ordnen Sie die NACL Ihren Subnetzen zu, indem Sie zum Tab Subnetzzuordnungen gehen.
Beispiel-Bereitstellungsszenario
Betrachten Sie eine typische Webanwendung:
VPC:
10.0.0.0/16Öffentliches Subnetz 1 (
us-east-1a):10.0.1.0/24(zugeordnet zuMyPublicRouteTableund IGW)Öffentliches Subnetz 2 (
us-east-1b):10.0.2.0/24(zugeordnet zuMyPublicRouteTableund IGW)Privates Subnetz 1 (
us-east-1a):10.0.10.0/24(zugeordnet zuMyPrivateRouteTableund NAT-Gateway)Privates Subnetz 2 (
us-east-1b):10.0.11.0/24(zugeordnet zuMyPrivateRouteTableund NAT-Gateway)Internet-Gateway: An die VPC angehängt.
NAT-Gateway: Bereitgestellt in
Öffentliches Subnetz 1mit einer Elastic IP.Öffentliche Routentabelle: Leitet
0.0.0.0/0an das IGW. Öffentlichen Subnetzen zugeordnet.Private Routentabelle: Leitet
0.0.0.0/0an das NAT-Gateway. Privaten Subnetzen zugeordnet.Sicherheitsgruppe für Load Balancer (in öffentlichen Subnetzen): Erlaubt HTTP/HTTPS von
0.0.0.0/0.Sicherheitsgruppe für Webserver (in privaten Subnetzen): Erlaubt HTTP/HTTPS von der Load-Balancer-SG und SSH von Ihrer vertrauenswürdigen IP.
Sicherheitsgruppe für Datenbanken (in privaten Subnetzen): Erlaubt MySQL/PostgreSQL von der Webserver-SG.
Kritische Sicherheitsüberlegungen
- Prinzip der geringsten Privilegien: Gewähren Sie nur die notwendigen Berechtigungen für Ihre Sicherheitsgruppen und NACLs. Beschränken Sie Quell-IP-Adressen so weit wie möglich.
- Mehrere Verfügbarkeitszonen verwenden: Verteilen Sie Ihre Subnetze und Ressourcen über mehrere AZs für hohe Verfügbarkeit und Notfallwiederherstellung. Dies wird erreicht, indem Subnetze in verschiedenen AZs erstellt und entsprechenden Routentabellen zugeordnet werden.
- Sicherheitsgruppen und NACLs regelmäßig überprüfen: Wenn sich Ihre Anwendung weiterentwickelt, sollten sich auch Ihre Sicherheitsregeln weiterentwickeln. Überprüfen und aktualisieren Sie sie regelmäßig.
- Öffentliche Subnetze für sensible Ressourcen vermeiden: Datenbanken, Anwendungsserver und andere sensible Ressourcen sollten sich in privaten Subnetzen befinden. Nur Ressourcen, die direkten Internetzugriff benötigen (wie Load Balancer oder Bastion-Hosts), sollten in öffentlichen Subnetzen sein.
- Bastion-Hosts in Betracht ziehen: Wenn Sie per SSH auf Instanzen in privaten Subnetzen zugreifen müssen, sollten Sie einen gehärteten Bastion-Host in einem öffentlichen Subnetz verwenden. Beschränken Sie den SSH-Zugriff auf den Bastion-Host auf bekannte IP-Adressen.
- VPC-Flow-Logs: Aktivieren Sie VPC-Flow-Logs, um Informationen über den IP-Verkehr zu und von Netzwerkschnittstellen in Ihrer VPC zu erfassen. Dies ist für die Sicherheitsüberwachung und Fehlerbehebung unverzichtbar.
- Netzwerksegmentierung: Verwenden Sie verschiedene VPCs und Subnetze, um Umgebungen (z.B. Entwicklung, Staging, Produktion) und verschiedene Ebenen Ihrer Anwendung zu segmentieren.
Abschließende Erkenntnisse
Bauen Sie die VPC um den Datenverkehrsfluss herum auf: Öffentliche Subnetze sollten nur Load Balancer, NAT-Gateways oder streng kontrollierten Bastion-Zugriff bereitstellen, während Anwendungs- und Datenbankressourcen privat bleiben. Überprüfen Sie nach dem Start weiterhin Sicherheitsgruppen, Routentabellen und VPC-Flow-Logs, damit das Netzwerk mit der tatsächlichen Funktionsweise Ihrer Anwendung übereinstimmt.