GCP - VPC & Networking

Support HackTricks

GCP Compute Networking in a Nutshell

VPCs contêm regras de Firewall para permitir tráfego de entrada na VPC. VPCs também contêm sub-redes onde máquinas virtuais serão conectadas. Comparando com AWS, Firewall seria o mais próximo de AWS Security Groups e NACLs, mas neste caso, estas são definidas na VPC e não em cada instância.

VPC, Subnetworks & Firewalls no GCP

Instâncias de Computação estão conectadas a sub-redes que fazem parte das VPCs (Virtual Private Clouds). No GCP não existem security groups, existem firewalls de VPC com regras definidas neste nível de rede, mas aplicadas a cada Instância de VM.

Subnetworks

Uma VPC pode ter várias sub-redes. Cada sub-rede está em 1 região.

Firewalls

Por padrão, toda rede tem duas regras de firewall implícitas: permitir saída e negar entrada.

Quando um projeto GCP é criado, uma VPC chamada default também é criada, com as seguintes regras de firewall:

  • default-allow-internal: permite todo o tráfego de outras instâncias na rede default

  • default-allow-ssh: permite 22 de qualquer lugar

  • default-allow-rdp: permite 3389 de qualquer lugar

  • default-allow-icmp: permite ping de qualquer lugar

Como você pode ver, as regras de firewall tendem a ser mais permissivas para endereços IP internos. A VPC padrão permite todo o tráfego entre Instâncias de Computação.

Mais regras de Firewall podem ser criadas para a VPC padrão ou para novas VPCs. Regras de Firewall podem ser aplicadas a instâncias através dos seguintes métodos:

Infelizmente, não há um comando gcloud simples para listar todas as Instâncias de Computação com portas abertas na internet. Você tem que conectar os pontos entre regras de firewall, network tags, contas de serviço e instâncias.

Este processo foi automatizado usando este script em python que exportará o seguinte:

  • Arquivo CSV mostrando instância, IP público, TCP permitido, UDP permitido

  • varredura nmap para direcionar todas as instâncias nas portas de entrada permitidas da internet pública (0.0.0.0/0)

  • masscan para direcionar o intervalo completo de TCP daquelas instâncias que permitem TODAS as portas TCP da internet pública (0.0.0.0/0)

Hierarchical Firewall Policies

Políticas de firewall hierárquicas permitem criar e impor uma política de firewall consistente em toda a sua organização. Você pode atribuir políticas de firewall hierárquicas à organização como um todo ou a pastas individuais. Essas políticas contêm regras que podem negar ou permitir conexões explicitamente.

Você cria e aplica políticas de firewall em etapas separadas. Você pode criar e aplicar políticas de firewall nos nós da organização ou da pasta da hierarquia de recursos. Uma regra de política de firewall pode bloquear conexões, permitir conexões ou adiar a avaliação da regra de firewall para pastas de nível inferior ou regras de firewall de VPC definidas em redes VPC.

Por padrão, todas as regras de política de firewall hierárquica se aplicam a todas as VMs em todos os projetos sob a organização ou pasta onde a política está associada. No entanto, você pode restringir quais VMs recebem uma determinada regra especificando redes de destino ou contas de serviço de destino.

Você pode ler aqui como criar uma Política de Firewall Hierárquica.

Avaliação de Regras de Firewall

  1. Org: Políticas de firewall atribuídas à Organização

  2. Folder: Políticas de firewall atribuídas à Pasta

  3. VPC: Regras de firewall atribuídas à VPC

  4. Global: Outro tipo de regras de firewall que podem ser atribuídas a VPCs

  5. Regional: Regras de firewall associadas à rede VPC do NIC da VM e à região da VM.

VPC Network Peering

Permite conectar duas redes Virtual Private Cloud (VPC) para que recursos em cada rede possam se comunicar entre si. Redes VPC emparelhadas podem estar no mesmo projeto, em projetos diferentes da mesma organização ou em projetos diferentes de diferentes organizações.

Estas são as permissões necessárias:

  • compute.networks.addPeering

  • compute.networks.updatePeering

  • compute.networks.removePeering

  • compute.networks.listPeeringRoutes

Mais na documentação.

Referências

Support HackTricks

Last updated