mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 14:47:17 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-s3-a
This commit is contained in:
+88
-98
@@ -1,195 +1,185 @@
|
||||
# AWS - VPC & Networking Basic Information
|
||||
# AWS - VPC & Networking Informazioni di base
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## AWS Networking in a Nutshell
|
||||
## Networking AWS 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 **relata** con la **VPC**, **routing** **table** e **network ACL**.
|
||||
Questa rete VPC è suddivisa in **subnetworks**, quindi una **subnetwork** è direttamente **collegata** alla **VPC**, alla **routing table** e alla **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**.
|
||||
Di conseguenza, un **security group** limiterà le porte esposte delle interfacce di rete 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)
|
||||
- Un'**instance** creata nella rete con l'**auto-assign IPv4 addresses** può ottenerne uno
|
||||
- Un **Internet gateway** deve essere **attached** alla **VPC**
|
||||
- Puoi anche usare **Egress-only internet gateways**
|
||||
- Puoi avere anche un **NAT gateway** in una **private subnet** così è possibile **connettersi a servizi esterni** da quella private subnet, ma **non è possibile raggiungerli dall'esterno**.
|
||||
- Il NAT gateway può essere **public** (accesso a Internet) o **private** (accesso ad altre VPC)
|
||||
|
||||
.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...
|
||||
Amazon **Virtual Private Cloud** (Amazon VPC) ti permette 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.
|
||||
Le subnet aiutano a imporre un maggior livello di sicurezza. Il **raggruppamento logico di risorse simili** aiuta anche a mantenere una **gestione più semplice** dell'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.
|
||||
- **AWS riserva i primi tre indirizzi IP host** di ogni subnet **per uso interno di AWS**: il primo indirizzo host usato è per il router VPC. Il secondo indirizzo è riservato per Amazon 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.**
|
||||
|
||||
<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:
|
||||
Le route tables determinano l'instradamento 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.
|
||||
- Internet Gateways / Egress-only Internet gateways (necessari per dare a una VPC accesso a Internet).
|
||||
- Per rendere una subnet pubblica è necessario **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.
|
||||
**Network Access Control Lists (ACLs)**: le Network ACLs sono regole di firewall che controllano il traffico di rete in entrata e in uscita verso una subnet. Possono essere usate per permettere o negare traffico a indirizzi IP o intervalli specifici.
|
||||
|
||||
- È 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.
|
||||
- È più frequente consentire/negare l'accesso usando i security groups, ma questo è l'unico modo per tagliare 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 cose perché funzionalità necessarie potrebbero essere disturbate.
|
||||
|
||||
### 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:
|
||||
I security groups sono un firewall virtuale che controlla il traffico di rete in ingresso e in uscita alle istanze in una VPC. Relazione 1 SG a N istanze (di solito 1 a 1).\
|
||||
Di solito vengono usati per aprire porte pericolose sulle istanze, 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 è 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.
|
||||
An _Elastic IP address_ è un **indirizzo IPv4 statico** progettato per il cloud computing dinamico. Un Elastic IP address è allocato al tuo account AWS, e ti appartiene finché non lo rilasci. Usando un Elastic IP address, puoi mascherare il fallimento di un'istanza o di un software riassegnando rapidamente l'indirizzo a un'altra istanza nel tuo account.
|
||||
|
||||
### Connection between subnets
|
||||
### Connessione tra subnet
|
||||
|
||||
Per impostazione predefinita, tutte le subnets hanno l'**assegnazione automatica di indirizzi IP pubblici disattivata**, ma può essere attivata.
|
||||
Per impostazione predefinita, 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 consente la comunicazione tra le subnets VPC.**
|
||||
**Una route locale all'interno di una route table abilita la comunicazione tra le subnet di una 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.
|
||||
Se stai **connettendo una subnet con un'altra subnet non puoi accedere alle subnet collegate** con l'altra subnet, devi creare connessioni direttamente con esse. **Questo vale anche per gli 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.
|
||||
VPC peering ti permette di **connettere due o più VPC tra loro**, usando IPV4 o IPV6, come se facessero 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.**
|
||||
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 esistente di AWS, quindi è altamente disponibile senza colli di bottiglia di larghezza di banda. Poiché **le connessioni peered operano come se fossero parte della stessa rete**, ci sono restrizioni riguardo ai blocchi CIDR che possono essere usati.\
|
||||
Se hai **CIDR sovrapposti o duplicati** per le tue VPC, **non potrai effettuare il peering tra le VPC**.\
|
||||
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 2 possono comunicare direttamente, 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 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**.
|
||||
All'interno della tua VPC, potresti potenzialmente avere centinaia o addirittura migliaia di risorse che comunicano tra subnet diverse 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 scorre 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**.
|
||||
A differenza dei log di accesso S3 e dei log di accesso CloudFront, i **dati di log generati dai VPC Flow Logs non vengono memorizzati in S3. Invece, i dati di log catturati vengono inviati a CloudWatch logs**.
|
||||
|
||||
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.
|
||||
- Se stai eseguendo una connessione VPC peered, allora potrai vedere solo i flow logs delle VPC peered che sono all'interno dello stesso account.
|
||||
- Se stai ancora eseguendo risorse nell'ambiente EC2-Classic, purtroppo 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 cancellarlo e poi crearne uno nuovo.
|
||||
- Il seguente traffico non è monitorato né catturato dai log: traffico DHCP all'interno della VPC, traffico dalle istanze destinato all'Amazon DNS Server.
|
||||
- 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 è usato per raccogliere metadata delle istanze, e 169.254.169.123 che è usato per l'Amazon Time Sync Service.
|
||||
- Traffico relativo a una licenza di attivazione Amazon Windows da un'istanza Windows.
|
||||
- Traffico tra un'interfaccia di network load balancer e un'interfaccia di endpoint network.
|
||||
|
||||
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**.
|
||||
Per ogni network interface che pubblica dati nel CloudWatch log group, verrà utilizzato uno stream di log diverso. E all'interno di ciascuno di questi stream, ci saranno gli eventi di flow log 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
|
||||
### Componenti base della VPN AWS
|
||||
|
||||
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.
|
||||
- È essenzialmente un dispositivo fisico o un'applicazione software sul tuo lato della connessione Site-to-Site VPN.
|
||||
- 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.
|
||||
- Serve come punto di riferimento per la configurazione della 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.
|
||||
- Un Virtual Private Gateway (VPG) è il concentratore VPN sul lato Amazon della connessione Site-to-Site VPN.
|
||||
- È attachato alla tua VPC e funge da target per la tua connessione VPN.
|
||||
- VPG è l'endpoint lato 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.
|
||||
- Una Site-to-Site VPN connection connette la tua rete on-premises a una VPC attraverso un tunnel VPN sicuro IPsec.
|
||||
- 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.
|
||||
- Viene utilizzata per comunicazioni sicure, stabili e consistenti tra il tuo data center o 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 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.
|
||||
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire sessioni VPN client.
|
||||
- Viene usata per permettere a singoli dispositivi (come laptop, smartphone, ecc.) di connettersi in modo sicuro a risorse AWS o alla tua rete on-premises.
|
||||
- Si differenzia dalla Site-to-Site VPN perché è progettata per client individuali invece che per connettere intere reti.
|
||||
- Con Client VPN, ogni dispositivo client usa un software client VPN per stabilire una connessione sicura.
|
||||
|
||||
### Site-to-Site VPN
|
||||
|
||||
**Collega la tua rete on-premises con la tua VPC.**
|
||||
**Connetti 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.
|
||||
- **VPN connection**: una connessione sicura tra la tua attrezzatura on-premises e le tue VPC.
|
||||
- **VPN tunnel**: un collegamento cifrato attraverso il quale i dati possono passare dalla rete del cliente verso o da AWS.
|
||||
|
||||
Ogni connessione VPN include due tunnel VPN che puoi utilizzare simultaneamente per alta disponibilità.
|
||||
Ogni connessione VPN include due VPN tunnels che puoi usare 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.
|
||||
- **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 connessione Site-to-Site VPN.
|
||||
- **Virtual private gateway**: il concentratore VPN sul lato Amazon della connessione Site-to-Site VPN. Usi un virtual private gateway o un transit gateway come gateway per il lato Amazon della connessione Site-to-Site VPN.
|
||||
- **Transit gateway**: un hub di transito che può essere usato per interconnettere le tue VPC e le reti on-premises. Usi un transit gateway o virtual private gateway come gateway per il lato Amazon della connessione Site-to-Site VPN.
|
||||
|
||||
#### Limitations
|
||||
#### Limitazioni
|
||||
|
||||
- Il traffico IPv6 non è supportato per le connessioni VPN su un virtual private gateway.
|
||||
- Una connessione VPN AWS non supporta il Path MTU Discovery.
|
||||
- Una AWS VPN connection non supporta Path MTU Discovery.
|
||||
|
||||
Inoltre, prendi in considerazione quanto segue quando utilizzi la VPN Site-to-Site.
|
||||
Inoltre, considera quanto segue quando usi Site-to-Site VPN.
|
||||
|
||||
- Quando colleghi le tue VPC a una rete on-premises comune, ti consigliamo di utilizzare blocchi CIDR non sovrapposti per le tue reti.
|
||||
- Quando connetti le tue VPC a una rete on-premises comune, raccomandiamo di usare 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**
|
||||
**Connettiti dalla tua macchina alla tua VPC**
|
||||
|
||||
#### Concepts
|
||||
#### Concetti
|
||||
|
||||
- **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.
|
||||
- **Client VPN endpoint:** La risorsa che crei e configuri per abilitare e gestire le sessioni VPN client. È la risorsa dove terminano tutte le sessioni Client VPN.
|
||||
- **Target network:** Un target network è la rete che associ a un Client VPN endpoint. **Una subnet di una VPC è un 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 rete 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 identity provider (IdP) che è autorizzato. Solo gli utenti appartenenti a questo gruppo possono accedere alla rete specificata. **Di default, non ci sono authorization rules** e devi configurarle 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 una sessione VPN.
|
||||
- **Client CIDR range:** Un intervallo di indirizzi IP da cui assegnare gli indirizzi IP dei client. Ogni connessione al Client VPN endpoint riceve un indirizzo IP univoco 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 viene inviato tramite una Client VPN network interface**. Viene poi applicata la Source network address translation (SNAT), dove l'indirizzo IP sorgente dal client CIDR range viene tradotto nell'indirizzo IP dell'interfaccia Client VPN.
|
||||
- **Connection logging:** Puoi abilitare il connection logging per il tuo Client VPN endpoint per registrare eventi di connessione. Puoi usare queste informazioni per fare forensic, analizzare come viene usato il Client VPN endpoint o debug di problemi di connessione.
|
||||
- **Self-service portal:** Puoi abilitare un self-service portal per il tuo Client VPN endpoint. I client possono effettuare il login 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
|
||||
#### Limitazioni
|
||||
|
||||
- **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.
|
||||
- **I client CIDR ranges non possono sovrapporsi con il CIDR locale** della VPC in cui si trova la subnet associata, 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 sono usati per **supportare il modello di disponibilità** del Client VPN endpoint e non possono essere assegnati ai client. Perciò, raccomandiamo di **assegnare un blocco CIDR che contenga il doppio degli indirizzi IP necessari** per abilitare il numero massimo di connessioni simultanee che prevedi di supportare sul Client VPN endpoint.
|
||||
- Il **client CIDR range non può essere cambiato** dopo che hai 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**.
|
||||
- Client VPN supporta solo traffico **IPv4**.
|
||||
- Client VPN **non è** conforme agli standard Federal Information Processing Standards (**FIPS**).
|
||||
- Se l'autenticazione multi-factor (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**.
|
||||
- Il self-service portal **non è disponibile per i client che si autenticano usando mutual authentication**.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
# AWS - S3, Athena & Glacier Enumerazione
|
||||
# AWS - S3, Athena & Glacier Enum
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## S3
|
||||
|
||||
Amazon S3 è un servizio che ti permette di **archiviare grandi quantità di dati**.
|
||||
Amazon S3 è un servizio che permette di **memorizzare grandi quantità di dati**.
|
||||
|
||||
Amazon S3 offre più opzioni per ottenere la **protezione** dei dati a riposo. Le opzioni includono **Permission** (Policy), **Encryption** (Client and Server Side), **Bucket Versioning** e **MFA based delete**. L'**utente può abilitare** una qualsiasi di queste opzioni per ottenere la protezione dei dati. La **Data replication** è una funzionalità interna di AWS dove **S3 automaticamente replica ogni oggetto attraverso tutte le Availability Zones** e l'organizzazione non deve abilitarla in questo caso.
|
||||
Amazon S3 offre diverse opzioni per ottenere la **protezione** dei dati at REST. Le opzioni includono **Permessi** (Policy), **Crittografia** (Client and Server Side), **Bucket Versioning** e **MFA** **based delete**. L'**utente può abilitare** una qualsiasi di queste opzioni per ottenere la protezione dei dati. La **replicazione dei dati** è una funzionalità interna di AWS nella quale **S3 replica automaticamente ogni oggetto attraverso tutte le Availability Zones** e in questo caso l'organizzazione non deve abilitarla.
|
||||
|
||||
Con autorizzazioni basate sulle risorse, puoi definire separatamente i permessi per le sottodirectory del tuo bucket.
|
||||
Con permessi basati sulle risorse, puoi definire permessi separati per le sottodirectory del tuo bucket.
|
||||
|
||||
### Bucket Versioning and MFA based delete
|
||||
|
||||
Quando Bucket Versioning è abilitato, qualsiasi azione che tenta di modificare un file all'interno di un bucket genererà una nuova versione del file, mantenendo anche il contenuto precedente. Pertanto, non sovrascriverà il contenuto.
|
||||
Quando Bucket Versioning è abilitato, qualsiasi azione che tenta di alterare un file genera una nuova versione del file, mantenendo anche il contenuto precedente. Di conseguenza, non sovrascrive il contenuto.
|
||||
|
||||
Inoltre, MFA based delete impedirà che le versioni dei file nel bucket S3 vengano cancellate e impedirà anche la disabilitazione del Bucket Versioning, quindi un attaccante non potrà alterare questi file.
|
||||
Inoltre, MFA based delete impedisce che le versioni dei file nel bucket S3 vengano cancellate e impedisce anche la disabilitazione di Bucket Versioning, quindi un attaccante non sarà in grado di alterare questi file.
|
||||
|
||||
### S3 Access logs
|
||||
|
||||
È possibile **abilitare S3 access login** (che di default è disabilitato) per un bucket e salvare i log in un bucket diverso per sapere chi sta accedendo al bucket (entrambi i bucket devono essere nella stessa regione).
|
||||
È possibile **abilitare S3 access logging** (che di default è disabilitato) su un bucket e salvare i log in un bucket diverso per sapere chi sta accedendo al bucket (entrambi i bucket devono trovarsi nella stessa regione).
|
||||
|
||||
### S3 Presigned URLs
|
||||
|
||||
È possibile generare una presigned URL che solitamente può essere utilizzata per **accedere al file specificato** nel bucket. Una **presigned URL appare così**:
|
||||
È possibile generare un presigned URL che può generalmente essere usato per **accedere al file specificato** nel bucket. Un **presigned URL appare così**:
|
||||
```
|
||||
https://<bucket-name>.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa
|
||||
```
|
||||
Una presigned URL può essere **creata dalla cli utilizzando le credenziali di un principal con accesso all'oggetto** (se l'account che usi non ha accesso, verrà creata una presigned URL più corta ma sarà inutile)
|
||||
Una presigned URL può essere **creata dalla cli usando le credenziali di un principal con accesso all'oggetto** (se l'account che usi non ha accesso, verrà creata una presigned URL più corta ma sarà inutile)
|
||||
```bash
|
||||
aws s3 presign --region <bucket-region> 's3://<bucket-name>/<file-name>'
|
||||
```
|
||||
> [!NOTE]
|
||||
> L'unico permesso richiesto per generare una presigned URL è il permesso che viene concesso, quindi per il comando precedente l'unico permesso necessario per il soggetto è `s3:GetObject`
|
||||
|
||||
È anche possibile creare presigned URL con **altri permessi**:
|
||||
> L'unica autorizzazione richiesta per generare un presigned URL è l'autorizzazione che viene concessa, quindi per il comando precedente l'unica autorizzazione richiesta dal principal è `s3:GetObject`
|
||||
>
|
||||
> È anche possibile creare presigned URL con **altre autorizzazioni**:
|
||||
```python
|
||||
import boto3
|
||||
url = boto3.client('s3').generate_presigned_url(
|
||||
@@ -44,97 +44,97 @@ ExpiresIn=3600
|
||||
```
|
||||
### Meccanismi di crittografia S3
|
||||
|
||||
**DEK significa Data Encryption Key** e corrisponde alla chiave che viene sempre generata e usata per cifrare i dati.
|
||||
**DEK significa Data Encryption Key** ed è la chiave che viene sempre generata e usata per crittografare i dati.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Server-side encryption with S3 managed keys, SSE-S3</strong></summary>
|
||||
<summary><strong>Crittografia lato server con chiavi gestite da S3, SSE-S3</strong></summary>
|
||||
|
||||
Questa opzione richiede una configurazione minima e tutta la gestione delle chiavi di crittografia è effettuata da AWS. Tutto quello che devi fare è **caricare i tuoi dati e S3 si occuperà di tutto il resto**. A ogni bucket in un account S3 viene assegnata una bucket key.
|
||||
Questa opzione richiede una configurazione minima e tutta la gestione delle chiavi di crittografia è gestita da AWS. Tutto ciò che devi fare è **caricare i tuoi dati e S3 si occuperà di tutti gli altri aspetti**. Ad ogni bucket in un account S3 è assegnata una bucket key.
|
||||
|
||||
- Encryption:
|
||||
- Object Data + created plaintext DEK --> Encrypted data (stored inside S3)
|
||||
- Created plaintext DEK + S3 Master Key --> Encrypted DEK (stored inside S3) and plain text is deleted from memory
|
||||
- Decryption:
|
||||
- Encrypted DEK + S3 Master Key --> Plaintext DEK
|
||||
- Plaintext DEK + Encrypted data --> Object Data
|
||||
- Crittografia:
|
||||
- Dati dell'oggetto + DEK in chiaro creato --> Dati cifrati (memorizzati in S3)
|
||||
- DEK in chiaro creato + S3 Master Key --> DEK cifrato (memorizzato in S3) e il testo in chiaro viene cancellato dalla memoria
|
||||
- Decrittografia:
|
||||
- DEK cifrato + S3 Master Key --> DEK in chiaro
|
||||
- DEK in chiaro + Dati cifrati --> Dati dell'oggetto
|
||||
|
||||
Per favore, nota che in questo caso **la chiave è gestita da AWS** (rotation solo ogni 3 anni). Se usi la tua chiave potrai ruotarla, disabilitarla e applicare controlli di accesso.
|
||||
Nota che in questo caso **la chiave è gestita da AWS** (rotazione solo ogni 3 anni). Se usi la tua chiave potrai ruotare, disabilitare e applicare controlli di accesso.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Server-side encryption with KMS managed keys, SSE-KMS</strong></summary>
|
||||
<summary><strong>Crittografia lato server con chiavi gestite da KMS, SSE-KMS</strong></summary>
|
||||
|
||||
Questo metodo permette a S3 di utilizzare il key management service per generare le tue data encryption keys. KMS ti offre una flessibilità molto maggiore su come le chiavi vengono gestite. Per esempio, puoi disabilitare, ruotare e applicare controlli di accesso al CMK, e monitorarne l'uso tramite AWS CloudTrail.
|
||||
Questo metodo permette a S3 di usare il key management service per generare le tue data encryption keys. KMS ti dà molta più flessibilità su come le tue chiavi sono gestite. Per esempio, puoi disabilitare, ruotare e applicare controlli di accesso alla CMK, e tracciare il loro utilizzo tramite AWS Cloud Trail.
|
||||
|
||||
- Encryption:
|
||||
- S3 request data keys from KMS CMK
|
||||
- KMS uses a CMK to generate the pair DEK plaintext and DEK encrypted and send them to S£
|
||||
- S3 uses the plaintext key to encrypt the data, store the encrypted data and the encrypted key and deletes from memory the plain text key
|
||||
- Decryption:
|
||||
- S3 ask to KMS to decrypt the encrypted data key of the object
|
||||
- KMS decrypt the data key with the CMK and send it back to S3
|
||||
- S3 decrypts the object data
|
||||
- Crittografia:
|
||||
- S3 richiede a KMS le data keys dalla CMK
|
||||
- KMS usa una CMK per generare la coppia DEK in chiaro e DEK cifrato e le invia a S3
|
||||
- S3 usa la chiave in chiaro per cifrare i dati, memorizza i dati cifrati e la chiave cifrata e cancella dalla memoria la chiave in chiaro
|
||||
- Decrittografia:
|
||||
- S3 chiede a KMS di decrittare la data key cifrata dell'oggetto
|
||||
- KMS decritta la data key con la CMK e la invia a S3
|
||||
- S3 decritta i dati dell'oggetto
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Server-side encryption with customer provided keys, SSE-C</strong></summary>
|
||||
<summary><strong>Crittografia lato server con chiavi fornite dal cliente, SSE-C</strong></summary>
|
||||
|
||||
Questa opzione ti dà la possibilità di fornire la tua master key che potresti già usare al di fuori di AWS. La customer-provided key verrebbe inviata insieme ai dati a S3, dove S3 eseguirà la crittografia per te.
|
||||
Questa opzione ti dà la possibilità di fornire la tua master key che potresti già usare fuori da AWS. La chiave fornita dal cliente viene inviata insieme ai dati a S3, dove S3 eseguirà la crittografia per te.
|
||||
|
||||
- Encryption:
|
||||
- The user sends the object data + Customer key to S3
|
||||
- The customer key is used to encrypt the data and the encrypted data is stored
|
||||
- a salted HMAC value of the customer key is stored also for future key validation
|
||||
- the customer key is deleted from memory
|
||||
- Decryption:
|
||||
- The user send the customer key
|
||||
- The key is validated against the HMAC value stored
|
||||
- The customer provided key is then used to decrypt the data
|
||||
- Crittografia:
|
||||
- L'utente invia i dati dell'oggetto + chiave del cliente a S3
|
||||
- La chiave del cliente viene usata per cifrare i dati e i dati cifrati vengono memorizzati
|
||||
- Viene memorizzato anche un valore HMAC salato della chiave del cliente per future validazioni della chiave
|
||||
- La chiave del cliente viene cancellata dalla memoria
|
||||
- Decrittografia:
|
||||
- L'utente invia la chiave del cliente
|
||||
- La chiave viene validata contro il valore HMAC memorizzato
|
||||
- La chiave fornita dal cliente viene poi usata per decrittare i dati
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Client-side encryption with KMS, CSE-KMS</strong></summary>
|
||||
<summary><strong>Crittografia lato client con KMS, CSE-KMS</strong></summary>
|
||||
|
||||
Analogamente a SSE-KMS, anche qui viene utilizzato il key management service per generare le data encryption keys. Tuttavia, in questo caso KMS viene chiamato dal client e non da S3. La crittografia avviene quindi client-side e i dati cifrati vengono poi inviati a S3 per l'archiviazione.
|
||||
Analogamente a SSE-KMS, anche questo usa KMS per generare le data encryption keys. Tuttavia, in questo caso KMS viene invocato dal client e non da S3. La crittografia avviene lato client e i dati cifrati vengono poi inviati a S3 per essere memorizzati.
|
||||
|
||||
- Encryption:
|
||||
- Client request for a data key to KMS
|
||||
- KMS returns the plaintext DEK and the encrypted DEK with the CMK
|
||||
- Both keys are sent back
|
||||
- The client then encrypts the data with the plaintext DEK and send to S3 the encrypted data + the encrypted DEK (which is saved as metadata of the encrypted data inside S3)
|
||||
- Decryption:
|
||||
- The encrypted data with the encrypted DEK is sent to the client
|
||||
- The client asks KMS to decrypt the encrypted key using the CMK and KMS sends back the plaintext DEK
|
||||
- The client can now decrypt the encrypted data
|
||||
- Crittografia:
|
||||
- Il client richiede una data key a KMS
|
||||
- KMS restituisce il DEK in chiaro e il DEK cifrato con la CMK
|
||||
- Entrambe le chiavi vengono restituite al client
|
||||
- Il client cifra i dati con il DEK in chiaro e invia a S3 i dati cifrati + il DEK cifrato (che viene salvato come metadata dei dati cifrati dentro S3)
|
||||
- Decrittografia:
|
||||
- I dati cifrati con il DEK cifrato vengono inviati al client
|
||||
- Il client chiede a KMS di decrittare la chiave cifrata usando la CMK e KMS restituisce il DEK in chiaro
|
||||
- Il client può ora decrittare i dati cifrati
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Client-side encryption with customer provided keys, CSE-C</strong></summary>
|
||||
<summary><strong>Crittografia lato client con chiavi fornite dal cliente, CSE-C</strong></summary>
|
||||
|
||||
Con questo meccanismo puoi utilizzare chiavi fornite da te e un client AWS-SDK per cifrare i dati prima di inviarli a S3 per l'archiviazione.
|
||||
Con questo meccanismo puoi utilizzare le tue chiavi e usare un client AWS-SDK per cifrare i dati prima di inviarli a S3 per la memorizzazione.
|
||||
|
||||
- Encryption:
|
||||
- The client generates a DEK and encrypts the plaintext data
|
||||
- Then, using it's own custom CMK it encrypts the DEK
|
||||
- submit the encrypted data + encrypted DEK to S3 where it's stored
|
||||
- Decryption:
|
||||
- S3 sends the encrypted data and DEK
|
||||
- As the client already has the CMK used to encrypt the DEK, it decrypts the DEK and then uses the plaintext DEK to decrypt the data
|
||||
- Crittografia:
|
||||
- Il client genera un DEK e cifra i dati in chiaro
|
||||
- Poi, usando la propria CMK personalizzata, cifra il DEK
|
||||
- Invia i dati cifrati + DEK cifrato a S3 dove vengono memorizzati
|
||||
- Decrittografia:
|
||||
- S3 invia i dati cifrati e il DEK
|
||||
- Poiché il client possiede la CMK usata per cifrare il DEK, decritta il DEK e poi usa il DEK in chiaro per decrittare i dati
|
||||
|
||||
</details>
|
||||
|
||||
### **Enumeration**
|
||||
### **Enumerazione**
|
||||
|
||||
Uno dei modi principali e tradizionali per compromettere organizzazioni AWS inizia compromettendo bucket pubblicamente accessibili. **You can find** [**public buckets enumerators in this page**](../aws-unauthenticated-enum-access/index.html#s3-buckets)**.**
|
||||
Una delle modalità principali e tradizionali per compromettere organizzazioni AWS inizia compromettendo i bucket pubblicamente accessibili. **Puoi trovare** [**strumenti di enumerazione per bucket pubblici in questa pagina**](../aws-unauthenticated-enum-access/index.html#s3-buckets)**.**
|
||||
```bash
|
||||
# Get buckets ACLs
|
||||
aws s3api get-bucket-acl --bucket <bucket-name>
|
||||
@@ -150,7 +150,7 @@ aws s3api list-buckets
|
||||
|
||||
# list content of bucket (no creds)
|
||||
aws s3 ls s3://bucket-name --no-sign-request
|
||||
aws s3 ls s3://bucket-name --recursive
|
||||
aws s3 ls s3://bucket-name --recursive --no-sign-request
|
||||
|
||||
# list content of bucket (with creds)
|
||||
aws s3 ls s3://bucket-name
|
||||
@@ -238,7 +238,7 @@ Dual-stack endpoints use the following syntax:
|
||||
|
||||
### Privesc
|
||||
|
||||
Nella pagina seguente puoi vedere come **abusare dei permessi S3 per escalare i privilegi**:
|
||||
In the following page you can check how to **abuse S3 permissions to escalate privileges**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-privilege-escalation/aws-s3-privesc/README.md
|
||||
@@ -266,19 +266,19 @@ Nella pagina seguente puoi vedere come **abusare dei permessi S3 per escalare i
|
||||
|
||||
### S3 HTTP Cache Poisoning Issue <a href="#heading-s3-http-desync-cache-poisoning-issue" id="heading-s3-http-desync-cache-poisoning-issue"></a>
|
||||
|
||||
[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) era possibile memorizzare nella cache la risposta di un bucket arbitrario come se appartenesse a un altro. Questo avrebbe potuto essere abusato per modificare, per esempio, le risposte di file javascript e compromettere pagine arbitrarie che usano S3 per memorizzare codice statico.
|
||||
[**According to this research**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) era possibile memorizzare nella cache la risposta di un bucket arbitrario come se appartenesse a un altro. Questo poteva essere abusato per modificare, ad esempio, le risposte di file javascript e compromettere pagine arbitrarie che utilizzano S3 per immagazzinare codice statico.
|
||||
|
||||
## Amazon Athena
|
||||
|
||||
Amazon Athena è un servizio di query interattivo che semplifica l'**analisi dei dati** direttamente in Amazon Simple Storage Service (Amazon **S3**) **usando** SQL standard.
|
||||
Amazon Athena è un servizio di query interattivo che rende semplice **analizzare i dati** direttamente in Amazon Simple Storage Service (Amazon **S3**) **usando** standard **SQL**.
|
||||
|
||||
Devi **preparare una tabella DB relazionale** con il formato del contenuto che apparirà nei bucket S3 monitorati. Poi, Amazon Athena sarà in grado di popolare il DB dai log, permettendoti di eseguire query.
|
||||
È necessario **preparare una tabella DB relazionale** con il formato dei contenuti che appariranno nei bucket S3 monitorati. Successivamente, Amazon Athena sarà in grado di popolare il DB dai log, così potrai eseguirvi query.
|
||||
|
||||
Amazon Athena supporta la **possibilità di interrogare dati S3 già cifrati** e, se configurata per farlo, **Athena può anche cifrare i risultati della query che poi possono essere memorizzati in S3**.
|
||||
Amazon Athena supporta la **possibilità di interrogare dati S3 già crittografati** e, se configurato per farlo, **Athena può anche crittografare i risultati della query che poi possono essere archiviati in S3**.
|
||||
|
||||
**Questa cifratura dei risultati è indipendente dai dati S3 sottostanti interrogati**, il che significa che anche se i dati S3 non sono cifrati, i risultati della query possono esserlo. Un paio di punti da tenere a mente: Amazon Athena supporta solo dati che sono stati **cifrati** con i **seguenti metodi di cifratura S3**, **SSE-S3, SSE-KMS, and CSE-KMS**.
|
||||
**Questa crittografia dei risultati è indipendente dai dati S3 sottostanti interrogati**, il che significa che anche se i dati S3 non sono crittografati, i risultati della query possono esserlo. Un paio di punti da tenere a mente: Amazon Athena supporta solo dati che sono stati **crittografati** con i **seguenti metodi di crittografia S3**, **SSE-S3, SSE-KMS, e CSE-KMS**.
|
||||
|
||||
SSE-C e CSE-C non sono supportati. Inoltre, è importante capire che Amazon Athena eseguirà query solo su **oggetti cifrati che si trovano nella stessa regione della query**. Se è necessario interrogare dati S3 cifrati usando KMS, sono richieste specifiche autorizzazioni per l'utente Athena per permettere l'esecuzione della query.
|
||||
SSE-C e CSE-C non sono supportati. Inoltre, è importante capire che Amazon Athena eseguirà query solo su **oggetti crittografati che si trovano nella stessa regione della query stessa**. Se devi interrogare dati S3 crittografati con KMS, sono necessarie autorizzazioni specifiche per l'utente Athena per consentire l'esecuzione della query.
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user