# GCP - VPC & Networking

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

## **Rete di Calcolo GCP in Sintesi**

**VPC** contiene regole di **Firewall** per consentire il traffico in entrata nella VPC. Le VPC contengono anche **sottoreti** dove le **macchine virtuali** saranno **collegate**.\
Rispetto ad AWS, il **Firewall** sarebbe la cosa **più simile** ai **Gruppi di Sicurezza e NACLs** di **AWS**, ma in questo caso queste sono **definite nella VPC** e non in ciascuna istanza.

## **VPC, Sottoreti & Firewall in GCP**

Le Istanze di Calcolo sono collegate a **sottoreti** che fanno parte delle **VPC** ([Virtual Private Clouds](https://cloud.google.com/vpc/docs/vpc)). In GCP non ci sono gruppi di sicurezza, ci sono [**firewall VPC**](https://cloud.google.com/vpc/docs/firewalls) con regole definite a questo livello di rete ma applicate a ciascuna Istanza VM.

### Sottoreti

Una **VPC** può avere **diverse sottoreti**. Ogni **sottorete è in 1 regione**.

### Firewall

Per impostazione predefinita, ogni rete ha due [**regole di firewall implicite**](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules): **consenti in uscita** e **nega in entrata**.

Quando viene creato un progetto GCP, viene creata anche una VPC chiamata **`default`**, con le seguenti regole di firewall:

- **default-allow-internal:** consenti tutto il traffico da altre istanze sulla rete `default`
- **default-allow-ssh:** consenti 22 da ovunque
- **default-allow-rdp:** consenti 3389 da ovunque
- **default-allow-icmp:** consenti ping da ovunque

> [!WARNING]
> Come puoi vedere, le **regole di firewall** tendono ad essere **più permissive** per gli **indirizzi IP interni**. La VPC predefinita consente tutto il traffico tra le Istanze di Calcolo.

Ulteriori **regole di Firewall** possono essere create per la VPC predefinita o per nuove VPC. [**Le regole di Firewall**](https://cloud.google.com/vpc/docs/firewalls) possono essere applicate alle istanze tramite i seguenti **metodi**:

- [**Tag di rete**](https://cloud.google.com/vpc/docs/add-remove-network-tags)
- [**Account di servizio**](https://cloud.google.com/vpc/docs/firewalls#serviceaccounts)
- **Tutte le istanze all'interno di una VPC**

Sfortunatamente, non esiste un semplice comando `gcloud` per elencare tutte le Istanze di Calcolo con porte aperte su Internet. Devi collegare i punti tra le regole di firewall, i tag di rete, gli account di servizio e le istanze.

Questo processo è stato automatizzato utilizzando [questo script python](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_firewall_enum) che esporta quanto segue:

- File CSV che mostra istanza, IP pubblico, TCP consentito, UDP consentito
- Scansione nmap per mirare a tutte le istanze sulle porte in ingresso consentite da Internet pubblico (0.0.0.0/0)
- masscan per mirare all'intero intervallo TCP di quelle istanze che consentono TUTTE le porte TCP da Internet pubblico (0.0.0.0/0)

### Politiche di Firewall Gerarchiche <a href="#hierarchical-firewall-policies" id="hierarchical-firewall-policies"></a>

_Le politiche di firewall gerarchiche_ ti consentono di creare e **applicare una politica di firewall coerente in tutta l'organizzazione**. Puoi assegnare **politiche di firewall gerarchiche all'organizzazione** nel suo insieme o a singoli **folder**. Queste politiche contengono regole che possono esplicitamente negare o consentire connessioni.

Crei e applichi le politiche di firewall come passaggi separati. Puoi creare e applicare politiche di firewall ai **nodi dell'organizzazione o della cartella** della [**gerarchia delle risorse**](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). Una regola di politica di firewall può **bloccare connessioni, consentire connessioni o rinviare la valutazione della regola di firewall** a cartelle di livello inferiore o regole di firewall VPC definite nelle reti VPC.

Per impostazione predefinita, tutte le regole di politica di firewall gerarchiche si applicano a tutte le VM in tutti i progetti sotto l'organizzazione o la cartella a cui è associata la politica. Tuttavia, puoi **limitare quali VM ricevono una determinata regola** specificando [reti target o account di servizio target](https://cloud.google.com/vpc/docs/firewall-policies#targets).

Puoi leggere qui come [**creare una Politica di Firewall Gerarchica**](https://cloud.google.com/vpc/docs/using-firewall-policies#gcloud).

### Valutazione delle Regole di Firewall

<figure><img src="../../../../images/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>

1. Org: Politiche di firewall assegnate all'Organizzazione
2. Folder: Politiche di firewall assegnate alla Cartella
3. VPC: Regole di firewall assegnate alla VPC
4. Globale: Un altro tipo di regole di firewall che possono essere assegnate alle VPC
5. Regionale: Regole di firewall associate alla rete VPC della NIC della VM e alla regione della VM.

## Peering di Rete VPC

Consente di connettere due reti Virtual Private Cloud (VPC) in modo che **le risorse in ciascuna rete possano comunicare** tra loro.\
Le reti VPC collegate possono trovarsi nello stesso progetto, in progetti diversi della stessa organizzazione o **in progetti diversi di organizzazioni diverse**.

Queste sono le autorizzazioni necessarie:

- `compute.networks.addPeering`
- `compute.networks.updatePeering`
- `compute.networks.removePeering`
- `compute.networks.listPeeringRoutes`

[**Ulteriori informazioni nella documentazione**](https://cloud.google.com/vpc/docs/vpc-peering).

## Riferimenti

- [https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/](https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/)
- [https://cloud.google.com/vpc/docs/firewall-policies-overview#rule-evaluation](https://cloud.google.com/vpc/docs/firewall-policies-overview#rule-evaluation)

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