AWS - VPC & Networking Basic Information
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ein VPC enthält ein Netzwerk CIDR wie 10.0.0.0/16 (mit seiner Routing-Tabelle und Netzwerk-ACL).
Dieses VPC-Netzwerk ist in Subnetze unterteilt, sodass ein Subnetz direkt mit dem VPC, der Routing-Tabelle und der Netzwerk-ACL verbunden ist.
Dann sind Netzwerkschnittstellen, die an Dienste (wie EC2-Instanzen) angeschlossen sind, mit den Subnetzen über Sicherheitsgruppen verbunden.
Daher wird eine Sicherheitsgruppe die exponierten Ports der Netzwerk schnittstellen, die sie verwenden, unabhängig vom Subnetz einschränken. Und eine Netzwerk-ACL wird die exponierten Ports für das gesamte Netzwerk einschränken.
Darüber hinaus gibt es einige interessante Konfigurationen zu überprüfen, um auf das Internet zuzugreifen:
Ein Subnetz kann automatisch öffentliche IPv4-Adressen zuweisen
Eine Instanz, die im Netzwerk erstellt wird, das IPv4-Adressen automatisch zuweist, kann eine erhalten
Ein Internet-Gateway muss an das VPC angeschlossen werden
Du könntest auch Egress-only Internet-Gateways verwenden
Du könntest auch ein NAT-Gateway in einem privaten Subnetz haben, sodass es möglich ist, von diesem privaten Subnetz aus auf externe Dienste zuzugreifen, aber es ist nicht möglich, sie von außen zu erreichen.
Das NAT-Gateway kann öffentlich (Zugriff auf das Internet) oder privat (Zugriff auf andere VPCs) sein.
Amazon Virtual Private Cloud (Amazon VPC) ermöglicht es dir, AWS-Ressourcen in einem virtuellen Netzwerk zu starten, das du definiert hast. Dieses virtuelle Netzwerk wird mehrere Subnetze, Internet-Gateways zum Zugriff auf das Internet, ACLs, Sicherheitsgruppen, IPs...
Subnetze helfen, ein höheres Maß an Sicherheit durchzusetzen. Logische Gruppierung ähnlicher Ressourcen hilft dir auch, eine einfache Verwaltung deiner Infrastruktur aufrechtzuerhalten.
Gültige CIDR sind von einer /16-Netzmaske bis zu einer /28-Netzmaske.
Ein Subnetz kann nicht gleichzeitig in verschiedenen Verfügbarkeitszonen sein.
AWS reserviert die ersten drei Host-IP-Adressen jedes Subnetzes für interne AWS-Nutzung: Die erste Hostadresse wird für den VPC-Router verwendet. Die zweite Adresse ist für AWS DNS reserviert und die dritte Adresse ist für zukünftige Nutzung reserviert.
Es wird als öffentliche Subnetze bezeichnet, die direkten Zugang zum Internet haben, während private Subnetze dies nicht tun.
Routing-Tabellen bestimmen die Verkehrslenkung für ein Subnetz innerhalb eines VPC. Sie bestimmen, welcher Netzwerkverkehr ins Internet oder zu einer VPN-Verbindung weitergeleitet wird. Du wirst normalerweise Zugang zu den finden:
Lokales VPC
NAT
Internet-Gateways / Egress-only Internet-Gateways (notwendig, um einem VPC Zugang zum Internet zu geben).
Um ein Subnetz öffentlich zu machen, musst du ein Internet-Gateway erstellen und an dein VPC anhängen.
VPC-Endpunkte (um von privaten Netzwerken auf S3 zuzugreifen)
In den folgenden Bildern kannst du die Unterschiede zwischen einem standardmäßigen öffentlichen Netzwerk und einem privaten Netzwerk überprüfen:
Netzwerkzugriffskontrolllisten (ACLs): Netzwerk-ACLs sind Firewall-Regeln, die den eingehenden und ausgehenden Netzwerkverkehr zu einem Subnetz steuern. Sie können verwendet werden, um den Verkehr zu bestimmten IP-Adressen oder -Bereichen zuzulassen oder abzulehnen.
Es ist am häufigsten, den Zugriff mit Sicherheitsgruppen zuzulassen/zu verweigern, aber dies ist der einzige Weg, um bereits etablierte Reverse-Shells vollständig zu unterbrechen. Eine modifizierte Regel in einer Sicherheitsgruppe stoppt keine bereits etablierten Verbindungen.
Dies gilt jedoch für das gesamte Subnetz, sei vorsichtig, wenn du Dinge verbietest, da benötigte Funktionen gestört werden könnten.
Sicherheitsgruppen sind eine virtuelle Firewall, die den eingehenden und ausgehenden Netzwerk verkehr zu Instanzen in einem VPC steuert. Beziehung 1 SG zu M Instanzen (normalerweise 1 zu 1). Normalerweise wird dies verwendet, um gefährliche Ports in Instanzen zu öffnen, wie zum Beispiel Port 22:
Eine elastische IP-Adresse ist eine statische IPv4-Adresse, die für dynamisches Cloud-Computing konzipiert ist. Eine elastische IP-Adresse wird deinem AWS-Konto zugewiesen und gehört dir, bis du sie freigibst. Durch die Verwendung einer elastischen IP-Adresse kannst du den Ausfall einer Instanz oder Software maskieren, indem du die Adresse schnell auf eine andere Instanz in deinem Konto umschaltest.
Standardmäßig haben alle Subnetze die automatische Zuweisung öffentlicher IP-Adressen deaktiviert, aber sie kann aktiviert werden.
Eine lokale Route innerhalb einer Routing-Tabelle ermöglicht die Kommunikation zwischen VPC-Subnetzen.
Wenn du ein Subnetz mit einem anderen Subnetz verbindest, kannst du nicht auf die mit dem anderen Subnetz verbundenen Subnetze zugreifen, du musst die Verbindung direkt mit ihnen herstellen. Dies gilt auch für Internet-Gateways. Du kannst nicht über eine Subnetzverbindung auf das Internet zugreifen, du musst das Internet-Gateway deinem Subnetz zuweisen.
VPC-Peering ermöglicht es dir, zwei oder mehr VPCs miteinander zu verbinden, unter Verwendung von IPV4 oder IPV6, als ob sie Teil desselben Netzwerks wären.
Sobald die Peer-Verbindung hergestellt ist, können Ressourcen in einer VPC auf Ressourcen in der anderen zugreifen. Die Konnektivität zwischen den VPCs wird durch die bestehende AWS-Netzwerkinfrastruktur implementiert, und ist daher hochverfügbar ohne Bandbreitenengpass. Da gepeerte Verbindungen so funktionieren, als wären sie Teil desselben Netzwerks, gibt es Einschränkungen hinsichtlich der CIDR-Blockbereiche, die verwendet werden können. Wenn du überlappende oder doppelte CIDR-Bereiche für deine VPC hast, dann kannst du die VPCs nicht miteinander peeren. Jede AWS VPC wird nur mit ihrem Peer kommunizieren. Zum Beispiel, wenn du eine Peering-Verbindung zwischen VPC 1 und VPC 2 hast und eine andere Verbindung zwischen VPC 2 und VPC 3, wie gezeigt, dann könnten VPC 1 und 2 direkt miteinander kommunizieren, ebenso wie VPC 2 und VPC 3, jedoch könnten VPC 1 und VPC 3 nicht. Du kannst nicht durch eine VPC routen, um zu einer anderen zu gelangen.
Innerhalb deines VPC könntest du potenziell Hunderte oder sogar Tausende von Ressourcen haben, die zwischen verschiedenen Subnetzen sowohl öffentlich als auch privat kommunizieren und auch zwischen verschiedenen VPCs durch VPC-Peering-Verbindungen. VPC Flow Logs ermöglichen es dir, IP-Verkehrsinformationen zu erfassen, die zwischen den Netzwerkschnittstellen deiner Ressourcen innerhalb deines VPC fließen.
Im Gegensatz zu S3-Zugriffsprotokollen und CloudFront-Zugriffsprotokollen werden die Protokolldaten, die von VPC Flow Logs generiert werden, nicht in S3 gespeichert. Stattdessen werden die erfassten Protokolldaten an CloudWatch-Protokolle gesendet.
Einschränkungen:
Wenn du eine VPC-Peering-Verbindung betreibst, kannst du nur die Flow-Logs von gepeerter VPCs sehen, die sich im selben Konto befinden.
Wenn du weiterhin Ressourcen im EC2-Classic-Umfeld betreibst, kannst du leider keine Informationen von deren Schnittstellen abrufen.
Sobald ein VPC Flow Log erstellt wurde, kann es nicht mehr geändert werden. Um die Konfiguration des VPC Flow Logs zu ändern, musst du es löschen und dann ein neues erstellen.
Der folgende Verkehr wird nicht überwacht und von den Protokollen erfasst. DHCP-Verkehr innerhalb des VPC, Verkehr von Instanzen, der für den Amazon DNS-Server bestimmt ist.
Jeglicher Verkehr, der an die IP-Adresse des VPC-Standardrouters gerichtet ist, und Verkehr zu und von den folgenden Adressen, 169.254.169.254, die zur Erfassung von Instanzmetadaten verwendet wird, und 169.254.169.123, die für den Amazon Time Sync Service verwendet wird.
Verkehr, der sich auf eine Amazon Windows-Aktivierungs Lizenz von einer Windows-Instanz bezieht.
Verkehr zwischen einer Netzwerk-Load-Balancer-Schnittstelle und einer Endpunkt-Netzwerkschnittstelle.
Für jede Netzwerkschnittstelle, die Daten an die CloudWatch-Protokollgruppe veröffentlicht, wird ein anderer Protokollstream verwendet. Und innerhalb jedes dieser Streams wird es die Flow-Log-Ereignisdaten geben, die den Inhalt der Protokolleinträge zeigen. Jedes dieser Protokolle erfasst Daten während eines Zeitfensters von ungefähr 10 bis 15 Minuten.
Kundengateway:
Ein Kundengateway ist eine Ressource, die du in AWS erstellst, um deine Seite einer VPN-Verbindung darzustellen.
Es ist im Wesentlichen ein physisches Gerät oder eine Softwareanwendung auf deiner Seite der Site-to-Site-VPN-Verbindung.
Du gibst Routinginformationen und die öffentliche IP-Adresse deines Netzwerkgeräts (wie einen Router oder eine Firewall) an AWS weiter, um ein Kundengateway zu erstellen.
Es dient als Referenzpunkt für die Einrichtung der VPN-Verbindung und verursacht keine zusätzlichen Kosten.
Virtuelles privates Gateway:
Ein virtuelles privates Gateway (VPG) ist der VPN-Konzentrator auf der Amazon-Seite der Site-to-Site-VPN-Verbindung.
Es ist an dein VPC angeschlossen und dient als Ziel für deine VPN-Verbindung.
VPG ist der AWS-Seitenendpunkt für die VPN-Verbindung.
Es verwaltet die sichere Kommunikation zwischen deinem VPC und deinem lokalen Netzwerk.
Site-to-Site-VPN-Verbindung:
Eine Site-to-Site-VPN-Verbindung verbindet dein lokales Netzwerk mit einem VPC über einen sicheren IPsec-VPN-Tunnel.
Diese Art von Verbindung erfordert ein Kundengateway und ein virtuelles privates Gateway.
Es wird für sichere, stabile und konsistente Kommunikation zwischen deinem Rechenzentrum oder Netzwerk und deiner AWS-Umgebung verwendet.
Typischerweise für regelmäßige, langfristige Verbindungen verwendet und wird basierend auf der Menge der über die Verbindung übertragenen Daten abgerechnet.
Client-VPN-Endpunkt:
Ein Client-VPN-Endpunkt ist eine Ressource, die du in AWS erstellst, um Client-VPN-Sitzungen zu aktivieren und zu verwalten.
Es wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) eine sichere Verbindung zu AWS-Ressourcen oder deinem lokalen Netzwerk zu ermöglichen.
Es unterscheidet sich von Site-to-Site-VPN, da es für einzelne Clients konzipiert ist, anstatt ganze Netzwerke zu verbinden.
Mit Client-VPN verwendet jedes Client-Gerät eine VPN-Client-Software, um eine sichere Verbindung herzustellen.
Verbinde dein lokales Netzwerk mit deinem VPC.
VPN-Verbindung: Eine sichere Verbindung zwischen deiner lokalen Ausrüstung und deinen VPCs.
VPN-Tunnel: Ein verschlüsselter Link, über den Daten vom Kundennetzwerk zu oder von AWS übertragen werden können.
Jede VPN-Verbindung umfasst zwei VPN-Tunnel, die du gleichzeitig für hohe Verfügbarkeit nutzen kannst.
Kundengateway: Eine AWS-Ressource, die Informationen über dein Kundengateway-Gerät an AWS bereitstellt.
Kundengateway-Gerät: Ein physisches Gerät oder eine Softwareanwendung auf deiner Seite der Site-to-Site-VPN-Verbindung.
Virtuelles privates Gateway: Der VPN-Konzentrator auf der Amazon-Seite der Site-to-Site-VPN-Verbindung. Du verwendest ein virtuelles privates Gateway oder ein Transit-Gateway als Gateway für die Amazon-Seite der Site-to-Site-VPN-Verbindung.
Transit-Gateway: Ein Transit-Hub, der verwendet werden kann, um deine VPCs und lokalen Netzwerke miteinander zu verbinden. Du verwendest ein Transit-Gateway oder ein virtuelles privates Gateway als Gateway für die Amazon-Seite der Site-to-Site-VPN-Verbindung.
IPv6-Verkehr wird für VPN-Verbindungen auf einem virtuellen privaten Gateway nicht unterstützt.
Eine AWS-VPN-Verbindung unterstützt keine Path MTU Discovery.
Berücksichtige außerdem Folgendes, wenn du Site-to-Site-VPN verwendest.
Wenn du deine VPCs mit einem gemeinsamen lokalen Netzwerk verbindest, empfehlen wir, nicht überlappende CIDR-Blöcke für deine Netzwerke zu verwenden.
Verbinde dich von deinem Gerät mit deinem VPC
Client-VPN-Endpunkt: Die Ressource, die du erstellst und konfigurierst, um Client-VPN-Sitzungen zu aktivieren und zu verwalten. Es ist die Ressource, an der alle Client-VPN-Sitzungen beendet werden.
Zielnetzwerk: Ein Zielnetzwerk ist das Netzwerk, das du mit einem Client-VPN-Endpunkt verbindest. Ein Subnetz aus einem VPC ist ein Zielnetzwerk. Das Verbinden eines Subnetzes mit einem Client-VPN-Endpunkt ermöglicht es dir, VPN-Sitzungen einzurichten. Du kannst mehrere Subnetze mit einem Client-VPN-Endpunkt für hohe Verfügbarkeit verbinden. Alle Subnetze müssen aus demselben VPC stammen. Jedes Subnetz muss zu einer anderen Verfügbarkeitszone gehören.
Route: Jeder Client-VPN-Endpunkt hat eine Routing-Tabelle, die die verfügbaren Zielnetzwerk-Routen beschreibt. Jede Route in der Routing-Tabelle gibt den Pfad für den Verkehr zu bestimmten Ressourcen oder Netzwerken an.
Autorisierungsregeln: Eine Autorisierungsregel beschränkt die Benutzer, die auf ein Netzwerk zugreifen können. Für ein bestimmtes Netzwerk konfigurierst du die Active Directory- oder Identitätsanbieter (IdP)-Gruppe, die Zugriff hat. Nur Benutzer, die zu dieser Gruppe gehören, können auf das angegebene Netzwerk zugreifen. Standardmäßig gibt es keine Autorisierungsregeln, und du musst Autorisierungsregeln konfigurieren, um Benutzern den Zugriff auf Ressourcen und Netzwerke zu ermöglichen.
Client: Der Endbenutzer, der sich mit dem Client-VPN-Endpunkt verbindet, um eine VPN-Sitzung einzurichten. Endbenutzer müssen einen OpenVPN-Client herunterladen und die von dir erstellte Client-VPN-Konfigurationsdatei verwenden, um eine VPN-Sitzung einzurichten.
Client-CIDR-Bereich: Ein IP-Adressbereich, aus dem Client-IP-Adressen zugewiesen werden. Jede Verbindung zum Client-VPN-Endpunkt erhält eine eindeutige IP-Adresse aus dem Client-CIDR-Bereich. Du wählst den Client-CIDR-Bereich, zum Beispiel 10.2.0.0/16
.
Client-VPN-Ports: AWS Client-VPN unterstützt die Ports 443 und 1194 sowohl für TCP als auch für UDP. Der Standard ist Port 443.
Client-VPN-Netzwerkschnittstellen: Wenn du ein Subnetz mit deinem Client-VPN-Endpunkt verbindest, erstellen wir Client-VPN-Netzwerkschnittstellen in diesem Subnetz. Der Verkehr, der vom Client-VPN-Endpunkt an das VPC gesendet wird, wird über eine Client-VPN-Netzwerkschnittstelle gesendet. Die Quellnetzwerkadressübersetzung (SNAT) wird dann angewendet, wobei die Quell-IP-Adresse aus dem Client-CIDR-Bereich in die IP-Adresse der Client-VPN-Netzwerkschnittstelle übersetzt wird.
Verbindungsprotokollierung: Du kannst die Verbindungsprotokollierung für deinen Client-VPN-Endpunkt aktivieren, um Verbindungsereignisse zu protokollieren. Du kannst diese Informationen verwenden, um forensische Analysen durchzuführen, zu analysieren, wie dein Client-VPN-Endpunkt verwendet wird, oder Verbindungsprobleme zu debuggen.
Self-Service-Portal: Du kannst ein Self-Service-Portal für deinen Client-VPN-Endpunkt aktivieren. Clients können sich mit ihren Anmeldeinformationen in das webbasierte Portal einloggen und die neueste Version der Client-VPN-Endpunkt-Konfigurationsdatei oder die neueste Version des von AWS bereitgestellten Clients herunterladen.
Client-CIDR-Bereiche dürfen nicht mit dem lokalen CIDR des VPC, in dem sich das zugeordnete Subnetz befindet, oder mit allen manuell zur Routing-Tabelle des Client-VPN-Endpunkts hinzugefügten Routen überlappen.
Client-CIDR-Bereiche müssen eine Blockgröße von mindestens /22 haben und dürfen nicht größer als /12 sein.
Ein Teil der Adressen im Client-CIDR-Bereich wird verwendet, um das Verfügbarkeitsmodell des Client-VPN-Endpunkts zu unterstützen und kann nicht an Clients zugewiesen werden. Daher empfehlen wir, dass du einen CIDR-Block zuweist, der doppelt so viele IP-Adressen enthält, wie erforderlich sind, um die maximale Anzahl gleichzeitiger Verbindungen zu ermöglichen, die du auf dem Client-VPN-Endpunkt unterstützen möchtest.
Der Client-CIDR-Bereich kann nicht geändert werden, nachdem du den Client-VPN-Endpunkt erstellt hast.
Die Subnetze, die mit einem Client-VPN-Endpunkt verbunden sind, müssen im selben VPC sein.
Du kannst keine mehreren Subnetze aus derselben Verfügbarkeitszone mit einem Client-VPN-Endpunkt verbinden.
Ein Client-VPN-Endpunkt unterstützt keine Subnetzzuweisungen in einem dedizierten Tenancy-VPC.
Client-VPN unterstützt nur IPv4-Verkehr.
Client-VPN ist nicht konform mit den Federal Information Processing Standards (FIPS).
Wenn die Multi-Faktor-Authentifizierung (MFA) für dein Active Directory deaktiviert ist, kann ein Benutzerpasswort nicht im folgenden Format vorliegen.
Das Self-Service-Portal ist nicht verfügbar für Clients, die sich mit gegenseitiger Authentifizierung authentifizieren.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)