# AWS - VPC & Netwerk Basiese Inligting

{{#include ../../../../banners/hacktricks-training.md}}

## AWS Netwerking in 'n neutedop

A **VPC** bevat 'n **network CIDR** soos 10.0.0.0/16 (met sy **routing table** en **network ACL**).

Hierdie VPC-netwerk is verdeel in **subnetworks**, dus is 'n **subnetwork** direk **verwant** aan die **VPC**, **routing** **table** en **network ACL**.

Dan word **Network Interface**s wat aan dienste gekoppel is (soos EC2 instances) **verbind** met die **subnetworks** en gebruik **security group(s)**.

Daarom sal 'n **security group** die blootgestelde poorte van die netwerk **interfaces wat dit gebruik** beperk, **onafhanklik van die subnet**. En 'n **network ACL** sal die blootgestelde poorte vir die **hele netwerk** **beperk**.

Verder, om toegang tot die Internet te hê, is daar 'n paar belangrike konfigurasies om na te gaan:

- 'n **subnetwork** kan **auto-assign public IPv4 addresses** hê
- 'n **instance** geskep in die netwerk wat **auto-assign IPv4 addresses** het, kan een kry
- 'n **Internet gateway** moet aan die **VPC** **gekoppel** wees
- Jy kan ook **Egress-only internet gateways** gebruik
- Jy kan ook 'n **NAT gateway** in 'n **private subnet** hê sodat dit moontlik is om van daardie private subnet na eksterne dienste te **koppel**, maar dit is **nie moontlik om van buite na hulle te bereik** nie.
- Die NAT gateway kan **public** wees (toegang tot die internet) of **private** (toegang tot ander VPCs)

![](<../../../../images/image (274).png>)

## VPC

Amazon **Virtual Private Cloud** (Amazon VPC) stel jou in staat om **AWS resources in 'n virtuele netwerk te begin** wat jy gedefinieer het. Hierdie virtuele netwerk sal verskeie subnets hê, Internet Gateways om toegang tot die Internet te gee, ACLs, Security groups, IPs...

### Subnets

Subnets help om 'n hoër vlak van sekuriteit af te dwing. 'n **Logiese groepering van soortgelyke bronne** help ook om 'n **makliker bestuur** van jou infrastruktuur te behou.

- Geldige CIDR is van 'n /16 netmask tot 'n /28 netmask.
- 'n subnet kan nie op verskillende Availability Zones terselfdertyd wees nie.
- **AWS reserves the first three host IP addresses** van elke subnet **vir** **interne AWS gebruik**: die eerste hostadres word gebruik vir die VPC router. Die tweede adres is gereserveer vir AWS DNS en die derde adres is gereserveer vir toekomstige gebruik.
- Dit word **public subnets** genoem vir daardie wat **direkte toegang tot die Internet het, terwyl private subnets dit nie het nie.**

### Route Tables

Route tables bepaal die verkeerroete vir 'n subnet binne 'n VPC. Hulle bepaal watter netwerkverkeer na die internet of na 'n VPN-verbinding gestuur word. Jy sal gewoonlik toegang vind tot die:

- Local VPC
- NAT
- Internet Gateways / Egress-only Internet gateways (nodig om 'n VPC toegang tot die Internet te gee).
- Om 'n subnet openbaar te maak moet jy 'n **Internet gateway** **skep** en aan jou VPC **heg**.
- VPC endpoints (om S3 vanaf private netwerke te bereik)

### ACLs

**Network Access Control Lists (ACLs)**: Network ACLs is firewall-reëls wat inkomende en uitgaande netwerkverkeer na 'n subnet beheer. Hulle kan gebruik word om verkeer na spesifieke IP-adresse of reekse toe te laat of te weier.

- Dit is meer algemeen om toegang toe te laat/weier deur security groups, maar dit is die enigste manier om gevestigde reverse shells volledig af te sny. 'n Gewysigde reël in 'n security group stop nie reeds gevestigde verbindings nie.
- Dit geld egter vir die hele subnet; wees versigtig wanneer jy dinge verbied omdat nodig funksionaliteit versteur kan word.

### Security Groups

Security groups is 'n virtuele **firewall** wat inkomende en uitgaande netwerk**verkeer na instances** in 'n VPC beheer. Verhouding 1 SG tot M instances (gewoonlik 1 tot 1).\
Gewoonlik word dit gebruik om gevaarlike poorte in instances oop te maak, soos poort 22 byvoorbeeld:

<figure><img src="https://lh5.googleusercontent.com/LliB7eb3cYfkEyOpyw1-eYgWsn2kq1yF6uRn5VYndvOuTvDlURimYx9UvuK8F2impTLmx50mid4MdTXE-Ljt2i_rxaIfnKUdji_hFjCdU9tdoW-axng9-W4tSL71gbbjrPQ7IYY5lAdH_G3UoMRMGGGOxQ=s2048" alt=""><figcaption></figcaption></figure>

### Elastic IP Addresses

'n _Elastic IP address_ is 'n **statiese IPv4-adres** ontwerp vir dinamiese cloud computing. 'n Elastic IP-adres word aan jou AWS-rekening toegekend, en bly joune totdat jy dit vrygee. Deur 'n Elastic IP-adres te gebruik, kan jy die mislukking van 'n instance of sagteware maskeer deur die adres vinnig na 'n ander instance in jou rekening te herlei.

### Verbinding tussen subnets

By verstek het alle subnets die **outomatiese toewysing van publieke IP-adresse afgeskakel**, maar dit kan aangeskakel word.

**'n Local route binne 'n route table maak kommunikasie tussen VPC subnets moontlik.**

As jy 'n subnet met 'n ander subnet verbind, kan jy nie toegang kry tot die subnets wat aan daardie ander subnet gekoppel is nie; jy moet direk verbindinge met hulle skep. **Dit geld ook vir internet gateways**. Jy kan nie deur 'n subnet-verbinding na die internet gaan nie; jy moet die internet gateway aan jou subnet toeken.

### VPC Peering

VPC peering laat jou toe om **twee of meer VPCs met mekaar te koppel**, gebruikende IPv4 of IPv6, asof hulle deel is van dieselfde netwerk.

Sodra die peervinnigheid gevestig is, kan **hulpbronne in een VPC toegang hê tot hulpbronne in die ander**. Die verbinding tussen die VPCs word deur die bestaande AWS-netwerk-infrastruktuur geïmplementeer, en daarom is dit hoogs beskikbaar sonder bandbreedteknelpunte. Aangesien **peered connections werk asof dit deel is van dieselfde netwerk**, is daar beperkings wat betref die CIDR-blokreekse wat gebruik kan word.\
As jy **oorvloedige of dubbele CIDR** reekse vir jou VPC het, kan jy **nie die VPCs peert nie**.\
Elke AWS VPC sal **slegs met sy peer kommunikeer**. Byvoorbeeld, as jy 'n peering-verbinding tussen VPC 1 en VPC 2 het, en nog 'n verbinding tussen VPC 2 en VPC 3 soos getoon, kan VPC 1 en 2 direk met mekaar kommunikeer, net soos VPC 2 en VPC 3, maar VPC 1 en VPC 3 sal nie met mekaar kan nie. **Jy kan nie deur een VPC roeteer om by 'n ander uit te kom nie.**

### **VPC Flow Logs**

Binne jou VPC kan jy potensieel honderde of selfs duisende hulpbronne hê wat tussen verskillende subnets, beide openbare en private, kommunikeer en ook tussen verskillende VPCs deur VPC peering-verbindinge. **VPC Flow Logs laat jou toe om IP-verkeersinligting vas te vang wat tussen die netwerkinterfaces van jou hulpbronne binne jou VPC vloei**.

Anders as S3 access logs en CloudFront access logs, word die **logdata gegenereer deur VPC Flow Logs nie in S3 gestoor nie. In plaas daarvan word die vasgevangte logdata na CloudWatch logs gestuur**.

Beperkings:

- As jy 'n VPC peered connection laat loop, sal jy slegs flow logs van peered VPCs wat binne dieselfde rekening is kan sien.
- As jy steeds hulpbronne in die EC2-Classic omgewing laat loop, is dit ongelukkig nie moontlik om inligting van hul interfaces te kry nie.
- Sodra 'n VPC Flow Log geskep is, kan dit nie verander word nie. Om die VPC Flow Log-konfigurasie te verander, moet jy dit uitvee en dan 'n nuwe skep.
- Die volgende verkeer word nie gemonitor of deur die logs vasgelê nie: DHCP-verkeer binne die VPC, verkeer van instances bestem vir die Amazon DNS Server.
- Enige verkeer bestem vir die IP-adres van die VPC standaard router en verkeer na en van die volgende adresse, 169.254.169.254 wat gebruik word vir die insameling van instance metadata, en 169.254.169.123 wat gebruik word vir die Amazon Time Sync Service.
- Verkeer wat verband hou met 'n Amazon Windows aktiveringslisensie vanaf 'n Windows instance
- Verkeer tussen 'n network load balancer interface en 'n endpoint network interface

Vir elke netwerkinterface wat data na die CloudWatch log group publiseer, sal dit 'n ander log stream gebruik. En binne elkeen van hierdie streams sal daar die flow log gebeure wees wat die inhoud van die loginskrywings wys. Elk van hierdie **logs vang data vas gedurende 'n venster van ongeveer 10 tot 15 minute**.

## VPN

### Basic AWS VPN Components

1. **Customer Gateway**:
- 'n Customer Gateway is 'n resource wat jy in AWS skep om jou kant van 'n VPN-verbinding te verteenwoordig.
- Dit is in wese 'n fisiese toestel of sagtewaretoepassing aan jou kant van die Site-to-Site VPN-verbinding.
- Jy verskaf routeringsinligting en die publieke IP-adres van jou netwerkapparaat (soos 'n router of 'n firewall) aan AWS om 'n Customer Gateway te skep.
- Dit dien as 'n verwysingspunt vir die opstel van die VPN-verbinding en veroorsaak geen bykomende koste nie.
2. **Virtual Private Gateway**:
- 'n Virtual Private Gateway (VPG) is die VPN-konsontrator aan die Amazon-kant van die Site-to-Site VPN-verbinding.
- Dit is aan jou VPC gekoppel en dien as die teiken vir jou VPN-verbinding.
- VPG is die AWS-kant eindpunt vir die VPN-verbinding.
- Dit hanteer die veilige kommunikasie tussen jou VPC en jou on-premises netwerk.
3. **Site-to-Site VPN Connection**:
- 'n Site-to-Site VPN-verbinding verbind jou on-premises netwerk met 'n VPC deur 'n veilige, IPsec VPN-tonnel.
- Hierdie tipe verbinding vereis 'n Customer Gateway en 'n Virtual Private Gateway.
- Dit word gebruik vir veilige, stabiele en konsekwente kommunikasie tussen jou datacentrum of netwerk en jou AWS-omgewing.
- Gewoonlik gebruik vir gereelde, langtermyn verbindings en word gefaktureer gebaseer op die hoeveelheid data wat oor die verbinding oorgedra word.
4. **Client VPN Endpoint**:
- 'n Client VPN endpoint is 'n resource wat jy in AWS skep om client VPN-sessies moontlik te maak en te bestuur.
- Dit word gebruik om individuele toestelle (soos skootrekenaars, slimfone, ens.) toe te laat om veilig aan AWS-hulpbronne of jou on-premises netwerk te koppel.
- Dit verskil van Site-to-Site VPN aangesien dit ontwerp is vir individuele kliënte eerder as om hele netwerke te koppel.
- Met Client VPN gebruik elke kliënttoestel 'n VPN client sagteware om 'n veilige verbinding te vestig.

### Site-to-Site VPN

**Verbind jou on-premises netwerk met jou VPC.**

- **VPN connection**: 'n veilige verbinding tussen jou on-premises toerusting en jou VPCs.
- **VPN tunnel**: 'n enkripteerde skakel waar data van die klantnetwerk na of van AWS kan deurgaan.

Elke VPN-verbinding sluit twee VPN-tonnels in wat jy terselfdertyd kan gebruik vir hoë beskikbaarheid.

- **Customer gateway**: 'n AWS resource wat inligting aan AWS verskaf oor jou customer gateway device.
- **Customer gateway device**: 'n fisiese toestel of sagtewaretoepassing aan jou kant van die Site-to-Site VPN-verbinding.
- **Virtual private gateway**: Die VPN-konsontrator aan die Amazon-kant van die Site-to-Site VPN-verbinding. Jy gebruik 'n virtual private gateway of 'n transit gateway as die gateway vir die Amazon-kant van die Site-to-Site VPN-verbinding.
- **Transit gateway**: 'n transit-hub wat gebruik kan word om jou VPCs en on-premises netwerke met mekaar te verbind. Jy gebruik 'n transit gateway of virtual private gateway as die gateway vir die Amazon-kant van die Site-to-Site VPN-verbinding.

#### Beperkings

- IPv6 verkeer word nie ondersteun vir VPN-verbindinge op 'n virtual private gateway nie.
- 'n AWS VPN-verbinding ondersteun nie Path MTU Discovery nie.

Neem verder die volgende in ag wanneer jy Site-to-Site VPN gebruik.

- Wanneer jy jou VPCs met 'n gemeenskaplike on-premises netwerk verbind, beveel ons aan dat jy nie-oorvloedige CIDR-blokke vir jou netwerke gebruik nie.

### Client VPN <a href="#what-is-components" id="what-is-components"></a>

**Verbind vanaf jou masjien na jou VPC**

#### Konsepte

- **Client VPN endpoint:** Die resource wat jy skep en konfigureer om client VPN-sessies moontlik te maak en te bestuur. Dit is die resource waar alle client VPN-sessies beëindig word.
- **Target network:** 'n target network is die netwerk wat jy met 'n Client VPN endpoint assosieer. **'n subnet van 'n VPC is 'n target network**. Om 'n subnet met 'n Client VPN endpoint te assosieer stel jou in staat om VPN-sessies te vestig. Jy kan meerdere subnets met 'n Client VPN endpoint assosieer vir hoë beskikbaarheid. Alle subnets moet uit dieselfde VPC kom. Elke subnet moet tot 'n ander Availability Zone behoort.
- **Route**: Elke Client VPN endpoint het 'n route table wat die beskikbare bestemming-netwerkroetes beskryf. Elke roete in die route table spesifiseer die pad vir verkeer na spesifieke hulpbronne of netwerke.
- **Authorization rules:** 'n authorization rule **beperk die gebruikers wat 'n netwerk kan toegang**. Vir 'n gespesifiseerde netwerk, konfigureer jy die Active Directory of identity provider (IdP) groep wat toegang toe toegestaan is. Slegs gebruikers wat tot hierdie groep behoort kan die gespesifiseerde netwerk en hulpbronne toegang. **By verstek is daar geen authorization rules nie** en jy moet authorization rules konfigureer om gebruikers toe te laat hulpbronne en netwerke te gebruik.
- **Client:** Die eindgebruiker wat aan die Client VPN endpoint koppel om 'n VPN-sessie te vestig. Eindgebruikers moet 'n OpenVPN client aflaai en die Client VPN konfigurasielêer wat jy geskep het gebruik om 'n VPN-sessie te vestig.
- **Client CIDR range:** 'n IP-adresreeks waarvan kliënt IP-adresse toegeken word. Elke verbinding na die Client VPN endpoint kry 'n unieke IP-adres uit die client CIDR range. Jy kies die client CIDR range, byvoorbeeld, `10.2.0.0/16`.
- **Client VPN ports:** AWS Client VPN ondersteun poorte 443 en 1194 vir beide TCP en UDP. Die verstek is poort 443.
- **Client VPN network interfaces:** Wanneer jy 'n subnet met jou Client VPN endpoint assosieer, skep ons Client VPN network interfaces in daardie subnet. **Verkeer wat na die VPC vanaf die Client VPN endpoint gestuur word gaan deur 'n Client VPN network interface**. Source network address translation (SNAT) word dan toegepas, waar die bron IP-adres van die client CIDR range na die Client VPN network interface IP-adres vertaal word.
- **Connection logging:** Jy kan connection logging vir jou Client VPN endpoint aktiveer om verbindinggebeure te log. Jy kan hierdie inligting gebruik om forensiese ontledings uit te voer, te ontleed hoe jou Client VPN endpoint gebruik word, of verbindingsprobleme te debug.
- **Self-service portal:** Jy kan 'n self-service portal vir jou Client VPN endpoint aktiveer. Kliente kan by die web-gebaseerde portaal aanmeld met hul geloofsbriewe en die nuutste weergawe van die Client VPN endpoint konfigurasielêer aflaai, of die nuutste weergawe van die AWS verskafte kliënt.

#### Beperkings

- **Client CIDR ranges cannot overlap with the local CIDR** van die VPC waarin die geassosieerde subnet geleë is, of enige roetes wat handmatig by die Client VPN endpoint se route table gevoeg is.
- Client CIDR ranges moet 'n blokgrootte van minstens **/22** hê en mag **nie groter as /12 wees** nie.
- 'n **Gedeelte van die adresse** in die client CIDR range word gebruik om die beskikbaarheidsmodel van die Client VPN endpoint te **ondersteun**, en kan nie aan kliënte toegewys word nie. Daarom beveel ons aan dat jy **'n CIDR-blok toeken wat twee keer die aantal IP-adresse bevat wat benodig word** om die maksimum aantal gelyktydige verbindings wat jy beplan te ondersteun, moontlik te maak.
- Die **client CIDR range kan nie verander word** nadat jy die Client VPN endpoint geskep het nie.
- Die **subnets** geassosieer met 'n Client VPN endpoint **moet in dieselfde VPC wees**.
- Jy **kan nie meerdere subnets vanaf dieselfde Availability Zone met 'n Client VPN endpoint assosieer nie**.
- 'n Client VPN endpoint **ondersteun nie subnet associations in 'n dedicated tenancy VPC nie**.
- Client VPN ondersteun slegs **IPv4** verkeer.
- Client VPN is **nie** Federal Information Processing Standards (**FIPS**) **compliant** nie.
- As multi-factor authentication (MFA) gedeaktiveer is vir jou Active Directory, kan 'n gebruikerswagwoord nie in die volgende formaat wees nie.

```
SCRV1:<base64_encoded_string>:<base64_encoded_string>
```

- Die self-service portal is **nie beskikbaar vir kliente wat mutual authentication gebruik nie**.

{{#include ../../../../banners/hacktricks-training.md}}
