# AWS - VPC & Networking Basic Information

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

## AWS Networking in a Nutshell

Una **VPC** contiene un **network CIDR** come 10.0.0.0/16 (con la sua **routing table** e **network ACL**).

Questa rete VPC è divisa in **subnetworks**, quindi una **subnetwork** è direttamente **relata** con la **VPC**, **routing** **table** e **network ACL**.

Poi, le **Network Interface** collegate ai servizi (come le istanze EC2) sono **connesse** alle **subnetworks** con **security group(s)**.

Pertanto, un **security group** limiterà le porte esposte delle **network interfaces che lo utilizzano**, **indipendentemente dalla subnetwork**. E una **network ACL** limiterà le porte esposte all'**intera rete**.

Inoltre, per **accedere a Internet**, ci sono alcune configurazioni interessanti da controllare:

- Una **subnetwork** può **auto-assegnare indirizzi IPv4 pubblici**
- Un'**istanza** creata nella rete che **auto-assegna indirizzi IPv4 può ottenerne uno**
- Un **Internet gateway** deve essere **attaccato** alla **VPC**
- Puoi anche utilizzare **Egress-only internet gateways**
- Puoi anche avere un **NAT gateway** in una **private subnet** in modo che sia possibile **connettersi a servizi esterni** da quella private subnet, ma **non è possibile raggiungerli dall'esterno**.
- Il NAT gateway può essere **pubblico** (accesso a Internet) o **privato** (accesso ad altre VPC)

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

## VPC

Amazon **Virtual Private Cloud** (Amazon VPC) ti consente di **lanciare risorse AWS in una rete virtuale** che hai definito. Questa rete virtuale avrà diverse subnet, Internet Gateways per accedere a Internet, ACL, Security groups, IP...

### Subnets

Le subnets aiutano a garantire un maggiore livello di sicurezza. **Raggruppamenti logici di risorse simili** ti aiutano anche a mantenere una **facilità di gestione** attraverso la tua infrastruttura.

- I CIDR validi vanno da una netmask /16 a una netmask /28.
- Una subnet non può trovarsi in diverse availability zones contemporaneamente.
- **AWS riserva i primi tre indirizzi IP host** di ogni subnet **per** **uso interno di AWS**: il primo indirizzo host utilizzato è per il router VPC. Il secondo indirizzo è riservato per AWS DNS e il terzo indirizzo è riservato per usi futuri.
- Si chiamano **public subnets** quelle che hanno **accesso diretto a Internet, mentre le private subnets no.**

<figure><img src="https://lh5.googleusercontent.com/N_WTrTrDAHwN61FMKJvLSHVua2EM0IazHH1fSTg8JQfTChm-dLN9mn7wkjz2MlpD-uOUqtWdMZpqKOp4VxaHy5-5X66GD1K8y1UGc27r-GbHdFty9ImpXdcjEsC7u4vjxKme_B_HwDOUnG6camxENYECTw=s2048" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh3.googleusercontent.com/MmjfVzGmV4jM7tO8lVoTKONoeqbq6E40DGeKUoo4kN-lmMDKnEiGNB-gGVx3EvjK9UV844im225CA8aAjomHf1Modt3MramHrHZdEGbeSZncWhVuT9R8f7tQZ2pXjdSJxeNfErmJ-0mmcUaV6dcU0TAd2A=s2048" alt=""><figcaption></figcaption></figure>

### Route Tables

Le route tables determinano il routing del traffico per una subnet all'interno di una VPC. Determinano quale traffico di rete viene inoltrato a Internet o a una connessione VPN. Di solito troverai accesso a:

- VPC locale
- NAT
- Internet Gateways / Egress-only Internet gateways (necessari per dare accesso a Internet alla VPC).
- Per rendere una subnet pubblica devi **creare** e **attaccare** un **Internet gateway** alla tua VPC.
- VPC endpoints (per accedere a S3 da reti private)

Nelle immagini seguenti puoi controllare le differenze in una rete pubblica predefinita e una privata:

<figure><img src="https://lh3.googleusercontent.com/q4ASpcLAYqijdNMLhMLl8EoowDtTMU5I_7YCVfk7-5hxDyeQOik9ImHnD2SYy32XUA2qXjEbXTAxA1lP--znJASdhYOdBveDcrD42f9XBKZ3EmjJCazN3YPLC6oS0xtRMmfORuwCszmMt-KrAkH07_izwg=s2048" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh5.googleusercontent.com/30psylXAI0gRN6_LK-reP00aGIlMma64E1qafCVPunn6nS-y5jAO6Y2JiempKcf6-LFi7ScicYcOh7BbHEya2VWtksnFX_8SPXQf97tKkg2tNZzrArWbiDCCn2m2LP1QUq6MZ_KayH3yir7t8zpO7CEQOw=s2048" alt=""><figcaption></figcaption></figure>

### ACLs

**Network Access Control Lists (ACLs)**: Le Network ACLs sono regole firewall che controllano il traffico di rete in entrata e in uscita verso una subnet. Possono essere utilizzate per consentire o negare il traffico a indirizzi IP specifici o intervalli.

- È più frequente consentire/negare l'accesso utilizzando i security groups, ma questo è solo il modo per interrompere completamente le reverse shell stabilite. Una regola modificata in un security group non ferma le connessioni già stabilite.
- Tuttavia, questo si applica all'intera subnetwork, fai attenzione quando vieti cose perché la funzionalità necessaria potrebbe essere disturbata.

### Security Groups

I security groups sono un **firewall** virtuale che controlla il traffico di rete in entrata e in uscita verso le **istanze** in una VPC. Relazione 1 SG a M istanze (di solito 1 a 1).\
Di solito questo viene utilizzato per aprire porte pericolose nelle istanze, come la porta 22 ad esempio:

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

### Elastic IP Addresses

Un _Elastic IP address_ è un **indirizzo IPv4 statico** progettato per il cloud computing dinamico. Un Elastic IP address è allocato al tuo account AWS ed è tuo fino a quando non lo rilasci. Utilizzando un Elastic IP address, puoi mascherare il guasto di un'istanza o di un software rimappando rapidamente l'indirizzo a un'altra istanza nel tuo account.

### Connection between subnets

Per impostazione predefinita, tutte le subnets hanno l'**assegnazione automatica di indirizzi IP pubblici disattivata**, ma può essere attivata.

**Una route locale all'interno di una route table consente la comunicazione tra le subnets VPC.**

Se stai **collegando una subnet con un'altra subnet diversa, non puoi accedere alle subnets collegate** con l'altra subnet, devi creare una connessione con esse direttamente. **Questo si applica anche agli internet gateways**. Non puoi passare attraverso una connessione di subnet per accedere a Internet, devi assegnare l'internet gateway alla tua subnet.

### VPC Peering

Il VPC peering ti consente di **collegare due o più VPC insieme**, utilizzando IPV4 o IPV6, come se fossero parte della stessa rete.

Una volta stabilita la connettività peer, **le risorse in una VPC possono accedere alle risorse nell'altra**. La connettività tra le VPC è implementata attraverso l'infrastruttura di rete AWS esistente, e quindi è altamente disponibile senza colli di bottiglia di larghezza di banda. Poiché **le connessioni peer operano come se fossero parte della stessa rete**, ci sono restrizioni riguardo ai tuoi intervalli di blocco CIDR che possono essere utilizzati.\
Se hai **intervalli CIDR sovrapposti o duplicati** per la tua VPC, allora **non potrai fare peering tra le VPC**.\
Ogni VPC AWS **comunicherà solo con il suo peer**. Ad esempio, se hai una connessione di peering tra VPC 1 e VPC 2, e un'altra connessione tra VPC 2 e VPC 3 come mostrato, allora VPC 1 e 2 potrebbero comunicare direttamente tra loro, così come VPC 2 e VPC 3, tuttavia, VPC 1 e VPC 3 non potrebbero. **Non puoi instradare attraverso una VPC per arrivare a un'altra.**

### **VPC Flow Logs**

All'interno della tua VPC, potresti avere potenzialmente centinaia o addirittura migliaia di risorse che comunicano tra diverse subnets sia pubbliche che private e anche tra diverse VPC attraverso connessioni di peering VPC. **I VPC Flow Logs ti consentono di catturare informazioni sul traffico IP che fluisce tra le interfacce di rete delle tue risorse all'interno della tua VPC**.

A differenza dei log di accesso S3 e dei log di accesso CloudFront, i **dati di log generati dai VPC Flow Logs non sono memorizzati in S3. Invece, i dati di log catturati vengono inviati ai log di CloudWatch**.

Limitazioni:

- Se stai eseguendo una connessione di peering VPC, allora potrai vedere solo i flow logs delle VPC peer che sono all'interno dello stesso account.
- Se stai ancora eseguendo risorse nell'ambiente EC2-Classic, sfortunatamente non puoi recuperare informazioni dalle loro interfacce.
- Una volta creato un VPC Flow Log, non può essere modificato. Per alterare la configurazione del VPC Flow Log, devi eliminarlo e poi ricrearne uno nuovo.
- Il traffico seguente non è monitorato e catturato dai log. Traffico DHCP all'interno della VPC, traffico dalle istanze destinato al server DNS di Amazon.
- Qualsiasi traffico destinato all'indirizzo IP per il router predefinito della VPC e traffico da e verso i seguenti indirizzi, 169.254.169.254 che viene utilizzato per raccogliere i metadati delle istanze, e 169.254.169.123 che viene utilizzato per il servizio di sincronizzazione dell'ora di Amazon.
- Traffico relativo a una licenza di attivazione di Windows di Amazon da un'istanza Windows.
- Traffico tra un'interfaccia di bilanciamento del carico di rete e un'interfaccia di rete di endpoint.

Per ogni interfaccia di rete che pubblica dati nel gruppo di log di CloudWatch, verrà utilizzato un flusso di log diverso. E all'interno di ciascuno di questi flussi, ci saranno i dati degli eventi di log di flusso che mostrano il contenuto delle voci di log. Ognuno di questi **log cattura dati durante una finestra di circa 10-15 minuti**.

## VPN

### Basic AWS VPN Components

1. **Customer Gateway**:
- Un Customer Gateway è una risorsa che crei in AWS per rappresentare il tuo lato di una connessione VPN.
- È essenzialmente un dispositivo fisico o un'applicazione software dal tuo lato della connessione VPN Site-to-Site.
- Fornisci informazioni di routing e l'indirizzo IP pubblico del tuo dispositivo di rete (come un router o un firewall) ad AWS per creare un Customer Gateway.
- Serve come punto di riferimento per impostare la connessione VPN e non comporta costi aggiuntivi.
2. **Virtual Private Gateway**:
- Un Virtual Private Gateway (VPG) è il concentratore VPN sul lato Amazon della connessione VPN Site-to-Site.
- È attaccato alla tua VPC e funge da obiettivo per la tua connessione VPN.
- VPG è il punto finale AWS per la connessione VPN.
- Gestisce la comunicazione sicura tra la tua VPC e la tua rete on-premises.
3. **Site-to-Site VPN Connection**:
- Una connessione VPN Site-to-Site collega la tua rete on-premises a una VPC attraverso un tunnel VPN IPsec sicuro.
- Questo tipo di connessione richiede un Customer Gateway e un Virtual Private Gateway.
- Viene utilizzato per comunicazioni sicure, stabili e coerenti tra il tuo data center o rete e il tuo ambiente AWS.
- Tipicamente utilizzato per connessioni regolari e a lungo termine e viene fatturato in base alla quantità di dati trasferiti attraverso la connessione.
4. **Client VPN Endpoint**:
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN client.
- Viene utilizzato per consentire a dispositivi individuali (come laptop, smartphone, ecc.) di connettersi in modo sicuro alle risorse AWS o alla tua rete on-premises.
- Si differenzia dalla VPN Site-to-Site in quanto è progettato per client individuali piuttosto che per connettere intere reti.
- Con Client VPN, ogni dispositivo client utilizza un software client VPN per stabilire una connessione sicura.

### Site-to-Site VPN

**Collega la tua rete on-premises con la tua VPC.**

- **VPN connection**: Una connessione sicura tra la tua attrezzatura on-premises e le tue VPC.
- **VPN tunnel**: Un collegamento crittografato in cui i dati possono passare dalla rete del cliente a o da AWS.

Ogni connessione VPN include due tunnel VPN che puoi utilizzare simultaneamente per alta disponibilità.

- **Customer gateway**: Una risorsa AWS che fornisce informazioni ad AWS sul tuo dispositivo gateway cliente.
- **Customer gateway device**: Un dispositivo fisico o un'applicazione software dal tuo lato della connessione VPN Site-to-Site.
- **Virtual private gateway**: Il concentratore VPN sul lato Amazon della connessione VPN Site-to-Site. Utilizzi un virtual private gateway o un transit gateway come gateway per il lato Amazon della connessione VPN Site-to-Site.
- **Transit gateway**: Un hub di transito che può essere utilizzato per interconnettere le tue VPC e reti on-premises. Utilizzi un transit gateway o un virtual private gateway come gateway per il lato Amazon della connessione VPN Site-to-Site.

#### Limitations

- Il traffico IPv6 non è supportato per le connessioni VPN su un virtual private gateway.
- Una connessione VPN AWS non supporta il Path MTU Discovery.

Inoltre, prendi in considerazione quanto segue quando utilizzi la VPN Site-to-Site.

- Quando colleghi le tue VPC a una rete on-premises comune, ti consigliamo di utilizzare blocchi CIDR non sovrapposti per le tue reti.

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

**Collegati dal tuo computer alla tua VPC**

#### Concepts

- **Client VPN endpoint:** La risorsa che crei e configuri per abilitare e gestire le sessioni VPN client. È la risorsa in cui tutte le sessioni VPN client vengono terminate.
- **Target network:** Una rete target è la rete che associ a un Client VPN endpoint. **Una subnet di una VPC è una rete target**. Associare una subnet a un Client VPN endpoint ti consente di stabilire sessioni VPN. Puoi associare più subnets a un Client VPN endpoint per alta disponibilità. Tutte le subnets devono appartenere alla stessa VPC. Ogni subnet deve appartenere a una diversa Availability Zone.
- **Route**: Ogni Client VPN endpoint ha una route table che descrive le rotte di rete di destinazione disponibili. Ogni rotta nella route table specifica il percorso per il traffico verso risorse o reti specifiche.
- **Authorization rules:** Una regola di autorizzazione **limita gli utenti che possono accedere a una rete**. Per una rete specificata, configuri il gruppo Active Directory o il provider di identità (IdP) che è autorizzato ad accedere. Solo gli utenti appartenenti a questo gruppo possono accedere alla rete specificata. **Per impostazione predefinita, non ci sono regole di autorizzazione** e devi configurare regole di autorizzazione per abilitare gli utenti ad accedere a risorse e reti.
- **Client:** L'utente finale che si connette al Client VPN endpoint per stabilire una sessione VPN. Gli utenti finali devono scaricare un client OpenVPN e utilizzare il file di configurazione del Client VPN che hai creato per stabilire una sessione VPN.
- **Client CIDR range:** Un intervallo di indirizzi IP da cui assegnare indirizzi IP client. Ogni connessione al Client VPN endpoint viene assegnata un indirizzo IP unico dall'intervallo CIDR client. Scegli l'intervallo CIDR client, ad esempio, `10.2.0.0/16`.
- **Client VPN ports:** AWS Client VPN supporta le porte 443 e 1194 sia per TCP che per UDP. Il predefinito è la porta 443.
- **Client VPN network interfaces:** Quando associ una subnet al tuo Client VPN endpoint, creiamo interfacce di rete Client VPN in quella subnet. **Il traffico inviato alla VPC dal Client VPN endpoint viene inviato attraverso un'interfaccia di rete Client VPN**. La traduzione dell'indirizzo di rete sorgente (SNAT) viene quindi applicata, dove l'indirizzo IP sorgente dall'intervallo CIDR client viene tradotto nell'indirizzo IP dell'interfaccia di rete Client VPN.
- **Connection logging:** Puoi abilitare la registrazione delle connessioni per il tuo Client VPN endpoint per registrare eventi di connessione. Puoi utilizzare queste informazioni per eseguire analisi forensi, analizzare come viene utilizzato il tuo Client VPN endpoint o risolvere problemi di connessione.
- **Self-service portal:** Puoi abilitare un portale self-service per il tuo Client VPN endpoint. I client possono accedere al portale web utilizzando le proprie credenziali e scaricare l'ultima versione del file di configurazione del Client VPN endpoint, o l'ultima versione del client fornito da AWS.

#### Limitations

- **Client CIDR ranges cannot overlap with the local CIDR** della VPC in cui si trova la subnet associata, o qualsiasi rotta aggiunta manualmente alla route table del Client VPN endpoint.
- Gli intervalli CIDR client devono avere una dimensione di blocco di almeno **/22** e non devono **essere maggiori di /12.**
- Una **parte degli indirizzi** nell'intervallo CIDR client viene utilizzata per **supportare il modello di disponibilità** del Client VPN endpoint e non può essere assegnata ai client. Pertanto, ti consigliamo di **assegnare un blocco CIDR che contenga il doppio del numero di indirizzi IP richiesti** per abilitare il numero massimo di connessioni simultanee che intendi supportare sul Client VPN endpoint.
- L'**intervallo CIDR client non può essere cambiato** dopo aver creato il Client VPN endpoint.
- Le **subnets** associate a un Client VPN endpoint **devono trovarsi nella stessa VPC**.
- Non **puoi associare più subnets dalla stessa Availability Zone a un Client VPN endpoint**.
- Un Client VPN endpoint **non supporta associazioni di subnet in una VPC a locazione dedicata**.
- Il Client VPN supporta **solo** traffico IPv4.
- Il Client VPN **non è** conforme agli standard di elaborazione delle informazioni federali (**FIPS**).
- Se l'autenticazione a più fattori (MFA) è disabilitata per il tuo Active Directory, una password utente non può essere nel seguente formato.

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

- Il portale self-service **non è disponibile per i client che si autenticano utilizzando l'autenticazione reciproca**.

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