# GCP - VPC & Networking

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

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

**VPCs** sadrže **Firewall** pravila koja omogućavaju dolazni saobraćaj u VPC. VPCs takođe sadrže **podmreže** gde će biti **povezane** **virtuelne mašine**.\
U poređenju sa AWS, **Firewall** bi bio **najbliža** stvar **AWS** **Security Groups i NACLs**, ali u ovom slučaju, ona su **definisana u VPC** i ne u svakoj instanci.

## **VPC, Podmreže & Firewall u GCP**

Compute Instances su povezane **podmreže** koje su deo **VPCs** ([Virtual Private Clouds](https://cloud.google.com/vpc/docs/vpc)). U GCP ne postoje sigurnosne grupe, postoje [**VPC firewall**](https://cloud.google.com/vpc/docs/firewalls) sa pravilima definisanim na ovom mrežnom nivou, ali primenjenim na svaku VM instancu.

### Podmreže

**VPC** može imati **several podmreža**. Svaka **podmreža je u 1 regionu**.

### Firewall

Podrazumevano, svaka mreža ima dva [**implicitna firewall pravila**](https://cloud.google.com/vpc/docs/firewalls#default_firewall_rules): **dozvoli izlazni** i **odbaci ulazni**.

Kada se kreira GCP projekat, VPC pod nazivom **`default`** se takođe kreira, sa sledećim firewall pravilima:

- **default-allow-internal:** dozvoli sav saobraćaj od drugih instanci na `default` mreži
- **default-allow-ssh:** dozvoli 22 sa svuda
- **default-allow-rdp:** dozvoli 3389 sa svuda
- **default-allow-icmp:** dozvoli ping sa svuda

> [!WARNING]
> Kao što možete videti, **firewall pravila** imaju tendenciju da budu **više permisivna** za **interni IP adrese**. Podrazumevani VPC dozvoljava sav saobraćaj između Compute Instances.

Više **Firewall pravila** mogu se kreirati za podrazumevani VPC ili za nove VPCs. [**Firewall pravila**](https://cloud.google.com/vpc/docs/firewalls) mogu se primeniti na instance putem sledećih **metoda**:

- [**Mrežni tagovi**](https://cloud.google.com/vpc/docs/add-remove-network-tags)
- [**Servisni nalozi**](https://cloud.google.com/vpc/docs/firewalls#serviceaccounts)
- **Sve instance unutar VPC**

Nažalost, ne postoji jednostavna `gcloud` komanda koja bi izbacila sve Compute Instances sa otvorenim portovima na internetu. Morate povezati tačke između firewall pravila, mrežnih tagova, servisnih naloga i instanci.

Ovaj proces je automatizovan korišćenjem [ovog python skripta](https://gitlab.com/gitlab-com/gl-security/gl-redteam/gcp_firewall_enum) koji će izvesti sledeće:

- CSV fajl koji prikazuje instancu, javni IP, dozvoljeni TCP, dozvoljeni UDP
- nmap skeniranje za ciljanje svih instanci na portovima ulaza dozvoljenim sa javnog interneta (0.0.0.0/0)
- masscan za ciljanje celog TCP opsega onih instanci koje dozvoljavaju SVE TCP portove sa javnog interneta (0.0.0.0/0)

### Hijerarhijske Firewall Politike <a href="#hierarchical-firewall-policies" id="hierarchical-firewall-policies"></a>

_Hijerarhijske firewall politike_ vam omogućavaju da kreirate i **sprovodite doslednu firewall politiku širom vaše organizacije**. Možete dodeliti **hijerarhijske firewall politike organizaciji** kao celini ili pojedinačnim **folderima**. Ove politike sadrže pravila koja mogu eksplicitno odbiti ili dozvoliti veze.

Kreirate i primenjujete firewall politike kao odvojene korake. Možete kreirati i primeniti firewall politike na **organizaciji ili folderima** [**resursne hijerarhije**](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy). Pravilo firewall politike može **blokirati veze, dozvoliti veze, ili odložiti evaluaciju firewall pravila** na niže nivoe foldera ili VPC firewall pravila definisana u VPC mrežama.

Podrazumevano, sva hijerarhijska firewall pravila primenjuju se na sve VM-ove u svim projektima pod organizacijom ili folderom gde je politika povezana. Međutim, možete **ograničiti koji VM-ovi dobijaju dato pravilo** specificiranjem [ciljnih mreža ili ciljanih servisnih naloga](https://cloud.google.com/vpc/docs/firewall-policies#targets).

Možete pročitati ovde kako da [**kreirate Hijerarhijsku Firewall Politiku**](https://cloud.google.com/vpc/docs/using-firewall-policies#gcloud).

### Evaluacija Firewall Pravila

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

1. Org: Firewall politike dodeljene organizaciji
2. Folder: Firewall politike dodeljene folderu
3. VPC: Firewall pravila dodeljena VPC-u
4. Global: Druga vrsta firewall pravila koja se mogu dodeliti VPC-ima
5. Regional: Firewall pravila povezana sa VPC mrežom NIC-a VM-a i regionom VM-a.

## VPC Mrežno Peering

Omogućava povezivanje dve Virtual Private Cloud (VPC) mreže tako da **resursi u svakoj mreži mogu komunicirati** jedni s drugima.\
Povezane VPC mreže mogu biti u istom projektu, različitim projektima iste organizacije, ili **različitim projektima različitih organizacija**.

Ovo su potrebne dozvole:

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

[**Više u dokumentaciji**](https://cloud.google.com/vpc/docs/vpc-peering).

## Reference

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