# GCP - VPC & Réseautage

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

## **Réseautage GCP Compute en un coup d'œil**

**Les VPC** contiennent des règles de **pare-feu** pour permettre le trafic entrant vers le VPC. Les VPC contiennent également des **sous-réseaux** où les **machines virtuelles** vont être **connectées**.\
Comparé à AWS, le **pare-feu** serait la chose **la plus proche** des **Groupes de Sécurité et NACLs** d'**AWS**, mais dans ce cas, ceux-ci sont **définis dans le VPC** et non dans chaque instance.

## **VPC, Sous-réseaux & Pare-feu dans GCP**

Les Instances de Calcul sont connectées à des **sous-réseaux** qui font partie des **VPC** ([Clouds Privés Virtuels](https://cloud.google.com/vpc/docs/vpc)). Dans GCP, il n'y a pas de groupes de sécurité, il y a des [**pare-feu VPC**](https://cloud.google.com/vpc/docs/firewalls) avec des règles définies à ce niveau de réseau mais appliquées à chaque Instance VM.

### Sous-réseaux

Un **VPC** peut avoir **plusieurs sous-réseaux**. Chaque **sous-réseau est dans 1 région**.

### Pare-feu

Par défaut, chaque réseau a deux [**règles de pare-feu implicites**](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules) : **autoriser sortant** et **interdire entrant**.

Lorsqu'un projet GCP est créé, un VPC appelé **`default`** est également créé, avec les règles de pare-feu suivantes :

- **default-allow-internal :** autoriser tout le trafic des autres instances sur le réseau `default`
- **default-allow-ssh :** autoriser 22 de partout
- **default-allow-rdp :** autoriser 3389 de partout
- **default-allow-icmp :** autoriser le ping de partout

> [!WARNING]
> Comme vous pouvez le voir, les **règles de pare-feu** tendent à être **plus permissives** pour les **adresses IP internes**. Le VPC par défaut permet tout le trafic entre les Instances de Calcul.

D'autres **règles de pare-feu** peuvent être créées pour le VPC par défaut ou pour de nouveaux VPC. [**Les règles de pare-feu**](https://cloud.google.com/vpc/docs/firewalls) peuvent être appliquées aux instances via les **méthodes** suivantes :

- [**Étiquettes de réseau**](https://cloud.google.com/vpc/docs/add-remove-network-tags)
- [**Comptes de service**](https://cloud.google.com/vpc/docs/firewalls#serviceaccounts)
- **Toutes les instances au sein d'un VPC**

Malheureusement, il n'y a pas de commande `gcloud` simple pour afficher toutes les Instances de Calcul avec des ports ouverts sur Internet. Vous devez relier les règles de pare-feu, les étiquettes de réseau, les comptes de service et les instances.

Ce processus a été automatisé à l'aide de [ce script python](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_firewall_enum) qui exportera les éléments suivants :

- Fichier CSV montrant l'instance, l'IP publique, TCP autorisé, UDP autorisé
- Scan nmap pour cibler toutes les instances sur les ports d'entrée autorisés depuis Internet public (0.0.0.0/0)
- masscan pour cibler l'ensemble de la plage TCP de ces instances qui autorisent TOUS les ports TCP depuis Internet public (0.0.0.0/0)

### Politiques de Pare-feu Hiérarchiques <a href="#hierarchical-firewall-policies" id="hierarchical-firewall-policies"></a>

_Les politiques de pare-feu hiérarchiques_ vous permettent de créer et **d'appliquer une politique de pare-feu cohérente à travers votre organisation**. Vous pouvez attribuer **des politiques de pare-feu hiérarchiques à l'organisation** dans son ensemble ou à des **dossiers** individuels. Ces politiques contiennent des règles qui peuvent explicitement interdire ou autoriser des connexions.

Vous créez et appliquez des politiques de pare-feu en tant qu'étapes distinctes. Vous pouvez créer et appliquer des politiques de pare-feu aux **nœuds d'organisation ou de dossier de la** [**hiérarchie des ressources**](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). Une règle de politique de pare-feu peut **bloquer des connexions, autoriser des connexions, ou différer l'évaluation des règles de pare-feu** vers des dossiers de niveau inférieur ou des règles de pare-feu VPC définies dans des réseaux VPC.

Par défaut, toutes les règles de politique de pare-feu hiérarchiques s'appliquent à toutes les VM dans tous les projets sous l'organisation ou le dossier auquel la politique est associée. Cependant, vous pouvez **restreindre quelles VM reçoivent une règle donnée** en spécifiant [des réseaux cibles ou des comptes de service cibles](https://cloud.google.com/vpc/docs/firewall-policies#targets).

Vous pouvez lire ici comment [**créer une Politique de Pare-feu Hiérarchique**](https://cloud.google.com/vpc/docs/using-firewall-policies#gcloud).

### Évaluation des Règles de Pare-feu

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

1. Org : Politiques de pare-feu assignées à l'Organisation
2. Dossier : Politiques de pare-feu assignées au Dossier
3. VPC : Règles de pare-feu assignées au VPC
4. Global : Un autre type de règles de pare-feu qui peuvent être assignées aux VPC
5. Régional : Règles de pare-feu associées au réseau VPC de la NIC de la VM et à la région de la VM.

## Peering de Réseau VPC

Permet de connecter deux réseaux de Cloud Privé Virtuel (VPC) afin que **les ressources de chaque réseau puissent communiquer** entre elles.\
Les réseaux VPC en peering peuvent être dans le même projet, dans des projets différents de la même organisation, ou **dans des projets différents de différentes organisations**.

Voici les permissions nécessaires :

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

[**Plus dans la documentation**](https://cloud.google.com/vpc/docs/vpc-peering).

## Références

- [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}}
