GCP - VPC & Networking

Supporta HackTricks

GCP Compute Networking in a Nutshell

VPCs contengono regole di Firewall per consentire il traffico in entrata nella VPC. Le VPC contengono anche subnetworks dove le macchine virtuali saranno connesse. Confrontando con AWS, il Firewall sarebbe la cosa più simile ai Security Groups e NACLs di AWS, ma in questo caso sono definiti nella VPC e non in ogni istanza.

VPC, Subnetworks & Firewalls in GCP

Le Compute Instances sono connesse a subnetworks che fanno parte delle VPCs (Virtual Private Clouds). In GCP non ci sono security groups, ci sono VPC firewalls con regole definite a livello di rete ma applicate a ogni VM Instance.

Subnetworks

Una VPC può avere diverse subnetworks. Ogni subnetwork è in 1 regione.

Firewalls

Per impostazione predefinita, ogni rete ha due regole di firewall implicite: consentire il traffico in uscita e negare il traffico in entrata.

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

  • default-allow-internal: consente tutto il traffico da altre istanze sulla rete default

  • default-allow-ssh: consente 22 da ovunque

  • default-allow-rdp: consente 3389 da ovunque

  • default-allow-icmp: consente ping da ovunque

Come puoi vedere, le regole di firewall tendono a essere più permissive per gli indirizzi IP interni. La VPC predefinita consente tutto il traffico tra le Compute Instances.

Altre regole di Firewall possono essere create per la VPC predefinita o per nuove VPC. Le regole di Firewall possono essere applicate alle istanze tramite i seguenti metodi:

Purtroppo, non esiste un semplice comando gcloud per elencare tutte le Compute Instances con porte aperte su internet. Devi collegare i punti tra regole di firewall, network tags, service accounts e istanze.

Questo processo è stato automatizzato utilizzando questo script python che esporterà quanto segue:

  • File CSV che mostra istanza, IP pubblico, TCP consentito, UDP consentito

  • Scansione nmap per mirare tutte le istanze sulle porte con ingresso consentito da internet pubblico (0.0.0.0/0)

  • Scansione masscan per mirare l'intera gamma TCP di quelle istanze che consentono TUTTE le porte TCP da internet pubblico (0.0.0.0/0)

Hierarchical Firewall Policies

Le Hierarchical firewall policies ti permettono di creare e applicare una politica di firewall coerente in tutta la tua organizzazione. Puoi assegnare hierarchical firewall policies all'organizzazione nel suo complesso o a singole cartelle. 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 delle cartelle della gerarchia delle risorse. Una regola di politica di firewall può bloccare connessioni, consentire connessioni o deferire la valutazione delle regole 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 in cui è associata la politica. Tuttavia, puoi limitare quali VM ricevono una determinata regola specificando reti target o service accounts target.

Puoi leggere qui come creare una Hierarchical Firewall Policy.

Firewall Rules Evaluation

  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. Global: Un altro tipo di regole di firewall che possono essere assegnate alle VPC

  5. Regional: Regole di firewall associate alla rete VPC della NIC della VM e alla regione della VM.

VPC Network Peering

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

Questi sono i permessi necessari:

  • compute.networks.addPeering

  • compute.networks.updatePeering

  • compute.networks.removePeering

  • compute.networks.listPeeringRoutes

Maggiori informazioni nei documenti.

Riferimenti

Supporta HackTricks

Last updated