# AWS - VPC & Networking Informazioni di base

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

## AWS Networking in breve

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 **collegata** alla **VPC**, alla **routing table** e alla **network ACL**.

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

Quindi, un **security group** limiterà le porte esposte delle **network interface** che lo usano, **indipendentemente dalla subnetwork**. E una **network ACL** **limiterà** le porte esposte per l'**intera rete**.

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

- Una **subnetwork** può **assegnare automaticamente indirizzi IPv4 pubblici**
- Un'**instance** creata in una rete che **assegna automaticamente indirizzi IPv4** può ottenerne uno
- Un **Internet gateway** deve essere **associato** alla **VPC**
- È possibile utilizzare anche **Egress-only internet gateways**
- Si può inoltre avere un **NAT gateway** in una **subnet privata** così è possibile **connettersi a servizi esterni** da quella subnet privata, 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 permette di **lanciare risorse AWS in una rete virtuale** che hai definito. Questa rete virtuale avrà varie subnet, Internet Gateways per l'accesso a Internet, ACL, Security group, indirizzi IP...

### Subnets

Le Subnets aiutano a garantire un maggiore livello di sicurezza. Il **raggruppamento logico di risorse simili** aiuta anche a mantenere una **gestione più semplice** della 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 AWS**: il primo indirizzo host è utilizzato per il VPC router. Il secondo indirizzo è riservato per l'AWS DNS e il terzo indirizzo è riservato per uso futuro.
- Si chiamano **public subnets** quelle che hanno **accesso diretto a Internet, mentre le private subnets no.**

### 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 verso Internet o verso una connessione VPN. Di solito troverai riferimenti a:

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

### ACLs

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

- È più frequente permettere/negare l'accesso usando i security group, ma gli ACL sono l'unico modo per interrompere completamente reverse shells già stabilite. Una regola modificata in un security group non interrompe connessioni già stabilite.
- Tuttavia, questo si applica all'intera subnetwork: fai attenzione quando vieti qualcosa perché potresti disturbare funzionalità necessarie.

### Security Groups

I security group sono un **firewall** virtuale che controlla il traffico di rete in ingresso e in uscita alle instance in una VPC. Relazione 1 SG a M instance (di solito 1 a 1).\
Di solito vengono usati per aprire porte pericolose nelle instance, come la porta 22 per 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 viene allocato al tuo account AWS ed è tuo finché non lo rilasci. Usando un Elastic IP address, puoi mascherare il guasto di un'instance o di un software rimappando rapidamente l'indirizzo a un'altra instance nel tuo account.

### Connection between subnets

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

**Una route locale all'interno di una route table abilita la comunicazione tra le subnet della VPC.**

Se stai **collegando una subnet con un'altra subnet non puoi accedere alle subnet connesse** con quest'ultima; devi creare la connessione direttamente con esse. **Questo vale anche per gli internet gateway**. Non puoi transitare attraverso una connessione subnet per accedere a Internet; devi assegnare l'Internet gateway alla tua subnet.

### VPC Peering

VPC peering permette di **connettere due o più VPC tra loro**, usando IPv4 o IPv6, come se fossero parte della stessa rete.

Una volta stabilita la connettività peered, **le risorse in una VPC possono accedere alle risorse nell'altra**. La connettività tra le VPC è implementata attraverso l'infrastruttura di rete AWS esistente, quindi è altamente disponibile senza colli di bottiglia di banda. Poiché **le connessioni peered operano come se fossero parte della stessa rete**, ci sono restrizioni sui range di CIDR che possono essere usati.\
Se hai **CIDR sovrapposti o duplicati** per le tue VPC, **non potrai peerare le VPC** tra loro.\
Ogni AWS VPC comunicherà **solo con il suo peer**. Per 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 VPC 2 possono 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 raggiungerne un'altra.**

### **VPC Flow Logs**

All'interno della tua VPC potresti avere centinaia o persino migliaia di risorse che comunicano tra diverse subnet sia pubbliche che private e anche tra diverse VPC tramite connessioni di VPC peering. **I VPC Flow Logs ti permettono di catturare informazioni sul traffico IP che fluisce tra le tue network interface delle 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 CloudWatch logs**.

Limitazioni:

- Se stai eseguendo una connessione VPC peered, potrai vedere i flow logs dei VPC peered solo se sono nello **stesso account**.
- Se stai ancora eseguendo risorse nell'ambiente **EC2-Classic**, allora 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, è necessario eliminarlo e poi ricrearne uno nuovo.
- Il seguente traffico non è monitorato né catturato dai log: traffico DHCP all'interno della VPC, traffico da instance destinato al server DNS di Amazon.
- Qualsiasi traffico destinato all'indirizzo IP del router predefinito della VPC e il traffico da e verso i seguenti indirizzi: 169.254.169.254 (usato per ottenere i metadata dell'instance) e 169.254.169.123 (usato dal Amazon Time Sync Service).
- Traffico relativo a una licenza di attivazione Amazon Windows da un'instance Windows.
- Traffico tra un'interfaccia di un network load balancer e un'interfaccia di rete endpoint.

Per ogni network interface che pubblica dati nel CloudWatch log group, verrà usato uno stream di log differente. E all'interno di ciascuno di questi stream ci saranno i dati degli eventi del flow log che mostrano il contenuto delle voci di log. Ciascuno 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 VPN connection.
- È essenzialmente un dispositivo fisico o un'applicazione software sul tuo lato della Site-to-Site VPN connection.
- 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 riferimento per configurare la VPN connection e non comporta costi aggiuntivi.
2. **Virtual Private Gateway**:
- Un **Virtual Private Gateway (VPG)** è il concentratore VPN dal lato Amazon della Site-to-Site VPN connection.
- È associato alla tua VPC e funge da target per la tua VPN connection.
- VPG è l'endpoint dal lato AWS per la VPN connection.
- Gestisce la comunicazione sicura tra la tua VPC e la tua rete on-premises.
3. **Site-to-Site VPN Connection**:
- Una Site-to-Site VPN connection connette la tua rete on-premises a una VPC tramite un tunnel VPN sicuro IPSec.
- Questo tipo di connessione richiede un Customer Gateway e un Virtual Private Gateway.
- È usata per comunicazioni sicure, stabili e coerenti tra il tuo data center o la tua rete e il tuo ambiente AWS.
- Tipicamente usata per connessioni regolari e a lungo termine ed è fatturata in base alla quantità di dati trasferiti sulla connessione.
4. **Client VPN Endpoint**:
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN dei client.
- È usato per permettere a singoli dispositivi (come laptop, smartphone, ecc.) di connettersi in modo sicuro alle risorse AWS o alla tua rete on-premises.
- Si differenzia dalla Site-to-Site VPN in quanto è progettato per client individuali piuttosto che per connettere intere reti.
- Con Client VPN, ogni dispositivo client usa un software VPN client per stabilire la connessione sicura.

### Site-to-Site VPN

**Connect your on premisses network with your VPC.**

- **VPN connection**: Una connessione sicura tra il tuo equipaggiamento on-premises e le tue VPC.
- **VPN tunnel**: Un link criptato attraverso il quale i dati possono transitare dalla rete del cliente verso AWS e viceversa.

Ogni VPN connection include due VPN tunnel che puoi usare simultaneamente per alta disponibilità.

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

#### Limitations

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

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

- Quando colleghi le tue VPC a una rete on-premises comune, si raccomanda di usare blocchi CIDR non sovrapposti per le tue reti.

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

**Connettiti dalla tua macchina alla tua VPC**

#### Concepts

- **Client VPN endpoint:** La risorsa che crei e configuri per abilitare e gestire le sessioni VPN dei client. È la risorsa dove tutte le sessioni Client VPN terminano.
- **Target network:** Una target network è la rete che associ a un Client VPN endpoint. **Una subnet di una VPC è una target network**. Associare una subnet a un Client VPN endpoint ti permette di stabilire sessioni VPN. Puoi associare più subnet a un Client VPN endpoint per alta disponibilità. Tutte le subnet devono appartenere alla stessa VPC. Ogni subnet deve appartenere a una Availability Zone diversa.
- **Route**: Ogni Client VPN endpoint ha una route table che descrive le rotte di destinazione disponibili. Ogni route nella route table specifica il percorso per il traffico verso risorse o reti specifiche.
- **Authorization rules:** Una authorization rule **restringe gli utenti che possono accedere a una rete**. Per una rete specificata, configuri il gruppo Active Directory o il gruppo dell'identity provider (IdP) che è autorizzato. Solo gli utenti appartenenti a questo gruppo possono accedere alla rete specificata. **Per default non ci sono authorization rules** e devi configurare le authorization rules per permettere agli utenti di 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 usare il file di configurazione del Client VPN endpoint che hai creato per stabilire la sessione VPN.
- **Client CIDR range:** Un intervallo di indirizzi IP dal quale assegnare gli indirizzi IP ai client. Ogni connessione al Client VPN endpoint riceve un indirizzo IP unico dal client CIDR range. Scegli il client CIDR range, per 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 default è la porta 443.
- **Client VPN network interfaces:** Quando associ una subnet al tuo Client VPN endpoint, vengono create Client VPN network interfaces in quella subnet. **Il traffico inviato alla VPC dal Client VPN endpoint è inviato tramite una Client VPN network interface**. Viene quindi applicata la Source Network Address Translation (SNAT), dove l'indirizzo IP sorgente dal client CIDR range viene tradotto nell'indirizzo IP della Client VPN network interface.
- **Connection logging:** Puoi abilitare il connection logging per il tuo Client VPN endpoint per registrare gli eventi di connessione. Puoi usare queste informazioni per fare forensics, analizzare come viene usato il Client VPN endpoint o debuggare problemi di connessione.
- **Self-service portal:** Puoi abilitare un self-service portal per il tuo Client VPN endpoint. I client possono accedere al portale web usando le loro 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 la subnet associata è situata, o con qualsiasi route aggiunta manualmente alla route table del Client VPN endpoint.
- I client CIDR ranges devono avere una dimensione di blocco di almeno **/22** e non devono **essere maggiori di /12.**
- Una **porzione degli indirizzi** nel client CIDR range è usata per **supportare il modello di disponibilità** del Client VPN endpoint, e non può essere assegnata ai client. Pertanto, si raccomanda di **assegnare un blocco CIDR che contenga il doppio del numero di indirizzi IP richiesti** per abilitare il numero massimo di connessioni concorrenti che prevedi di supportare sul Client VPN endpoint.
- Il **client CIDR range non può essere cambiato** dopo aver creato il Client VPN endpoint.
- Le **subnet** associate a un Client VPN endpoint **devono essere nella stessa VPC**.
- Non puoi associare più subnet dalla stessa Availability Zone a un Client VPN endpoint.
- Un Client VPN endpoint **non supporta associazioni di subnet** in una VPC con tenancy dedicata (dedicated tenancy).
- Client VPN supporta solo traffico **IPv4**.
- Client VPN **non** è conforme agli standard Federal Information Processing Standards (**FIPS**).
- Se la multi-factor authentication (MFA) è disabilitata per il tuo Active Directory, una password utente non può essere nel seguente formato.

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

- Il self-service portal **non è disponibile per i client che si autenticano usando mutual authentication**.

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