# GCP - VPC & Networking

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

## **GCP Compute Networking in a Nutshell**

**VPCs** bevat **Firewall** reëls om inkomende verkeer na die VPC toe te laat. VPCs bevat ook **subnetwerke** waar **virtuele masjiene** gaan wees **verbinde**.\
In vergelyking met AWS, sou **Firewall** die **nabyste** ding wees aan **AWS** **Security Groups en NACLs**, maar in hierdie geval is dit **gedefinieer in die VPC** en nie in elke instansie nie.

## **VPC, Subnetwerke & Firewalls in GCP**

Compute Instances is verbind met **subnetwerke** wat deel is van **VPCs** ([Virtual Private Clouds](https://cloud.google.com/vpc/docs/vpc)). In GCP is daar nie sekuriteitsgroepe nie, daar is [**VPC firewalls**](https://cloud.google.com/vpc/docs/firewalls) met reëls wat op hierdie netwerkvlak gedefinieer is maar toegepas op elke VM Instansie.

### Subnetwerke

'n **VPC** kan **verskeie subnetwerke** hê. Elke **subnetwork is in 1 streek**.

### Firewalls

Standaard het elke netwerk twee [**implisiete firewall reëls**](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules): **toelaat uitgaande** en **weier inkomende**.

Wanneer 'n GCP-projek geskep word, word 'n VPC genaamd **`default`** ook geskep, met die volgende firewall reëls:

- **default-allow-internal:** laat alle verkeer van ander instansies op die `default` netwerk toe
- **default-allow-ssh:** laat 22 van oral toe
- **default-allow-rdp:** laat 3389 van oral toe
- **default-allow-icmp:** laat ping van oral toe

> [!WARNING]
> Soos jy kan sien, neig **firewall reëls** om **meer toelaatbaar** te wees vir **interne IP adresse**. Die standaard VPC laat alle verkeer tussen Compute Instances toe.

Meer **Firewall reëls** kan geskep word vir die standaard VPC of vir nuwe VPCs. [**Firewall reëls**](https://cloud.google.com/vpc/docs/firewalls) kan op instansies toegepas word via die volgende **metodes**:

- [**Netwerk etikette**](https://cloud.google.com/vpc/docs/add-remove-network-tags)
- [**Diensrekeninge**](https://cloud.google.com/vpc/docs/firewalls#serviceaccounts)
- **Alle instansies binne 'n VPC**

Ongelukkig is daar nie 'n eenvoudige `gcloud` opdrag om al die Compute Instances met oop poorte op die internet uit te spit nie. Jy moet die punte tussen firewall reëls, netwerk etikette, diensrekeninge, en instansies verbind.

Hierdie proses is geoutomatiseer met behulp van [hierdie python skrip](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_firewall_enum) wat die volgende sal uitvoer:

- CSV-lêer wat instansie, publieke IP, toegelate TCP, toegelate UDP toon
- nmap skandering om al die instansies op poorte in te teiken wat van die publieke internet toegelaat word (0.0.0.0/0)
- masscan om die volle TCP-reeks van daardie instansies te teiken wat ALLE TCP-poorte van die publieke internet toelaat (0.0.0.0/0)

### Hierargiese Firewall Beleide <a href="#hierarchical-firewall-policies" id="hierarchical-firewall-policies"></a>

_Hierargiese firewall beleide_ laat jou toe om 'n **konsekwente firewall beleid oor jou organisasie** te skep en **af te dwing**. Jy kan **hierargiese firewall beleide aan die organisasie** as 'n geheel of aan individuele **mappes** toewys. Hierdie beleide bevat reëls wat eksplisiet verbindings kan weier of toelaat.

Jy skep en pas firewall beleide toe as aparte stappe. Jy kan firewall beleide skep en toepas op die **organisasie of map knooppunte van die** [**hulpbron hiërargie**](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). 'n Firewall beleid reël kan **verbinding blokkeer, verbinding toelaat, of firewall reël evaluering uitstel** na laer vlak mappes of VPC firewall reëls wat in VPC-netwerke gedefinieer is.

Standaard geld alle hierargiese firewall beleid reëls vir alle VM's in alle projekte onder die organisasie of map waar die beleid geassosieer is. Jy kan egter **beperk watter VM's 'n gegewe reël kry** deur [teiken netwerke of teiken diensrekeninge](https://cloud.google.com/vpc/docs/firewall-policies#targets) spesifiseer.

Jy kan hier lees hoe om [**'n Hierargiese Firewall Beleid te skep**](https://cloud.google.com/vpc/docs/using-firewall-policies#gcloud).

### Firewall Reëls Evaluering

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

1. Org: Firewall beleide toegewy aan die Organisasie
2. Map: Firewall beleide toegewy aan die Map
3. VPC: Firewall reëls toegewy aan die VPC
4. Globaal: 'n Ander tipe firewall reëls wat aan VPCs toegewy kan word
5. Streek: Firewall reëls geassosieer met die VPC netwerk van die VM se NIC en streek van die VM.

## VPC Netwerk Peering

Laat toe om twee Virtuele Privaat Wolk (VPC) netwerke te verbind sodat **hulpbronne in elke netwerk met mekaar kan kommunikeer**.\
Gepaarde VPC-netwerke kan in dieselfde projek wees, verskillende projekte van dieselfde organisasie, of **verskillende projekte van verskillende organisasies**.

Hierdie is die nodige toestemmings:

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

[**Meer in die dokumentasie**](https://cloud.google.com/vpc/docs/vpc-peering).

## References

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