GCP - VPC & Networking

Support HackTricks

GCP Compute Networking in a Nutshell

VPCs contiene reglas de Firewall para permitir el tráfico entrante a la VPC. Las VPCs también contienen subredes donde las máquinas virtuales van a estar conectadas. Comparando con AWS, Firewall sería lo más cercano a AWS Security Groups y NACLs, pero en este caso estas están definidas en la VPC y no en cada instancia.

VPC, Subredes & Firewalls en GCP

Las Instancias de Cómputo están conectadas a subredes que son parte de VPCs (Nubes Privadas Virtuales). En GCP no hay grupos de seguridad, hay firewalls de VPC con reglas definidas a este nivel de red pero aplicadas a cada Instancia de VM.

Subredes

Una VPC puede tener varias subredes. Cada subred está en 1 región.

Firewalls

Por defecto, cada red tiene dos reglas de firewall implícitas: permitir salidas y denegar entradas.

Cuando se crea un proyecto de GCP, también se crea una VPC llamada default, con las siguientes reglas de firewall:

  • default-allow-internal: permite todo el tráfico de otras instancias en la red default

  • default-allow-ssh: permite 22 desde cualquier lugar

  • default-allow-rdp: permite 3389 desde cualquier lugar

  • default-allow-icmp: permite ping desde cualquier lugar

Como puedes ver, las reglas de firewall tienden a ser más permisivas para las direcciones IP internas. La VPC por defecto permite todo el tráfico entre Instancias de Cómputo.

Se pueden crear más reglas de Firewall para la VPC por defecto o para nuevas VPCs. Las reglas de Firewall se pueden aplicar a instancias a través de los siguientes métodos:

Desafortunadamente, no hay un simple comando gcloud para listar todas las Instancias de Cómputo con puertos abiertos en internet. Tienes que conectar los puntos entre las reglas de firewall, etiquetas de red, cuentas de servicio e instancias.

Este proceso fue automatizado usando este script de python que exportará lo siguiente:

  • Archivo CSV mostrando instancia, IP pública, TCP permitido, UDP permitido

  • Escaneo nmap para apuntar a todas las instancias en puertos de entrada permitidos desde internet público (0.0.0.0/0)

  • masscan para apuntar al rango completo de TCP de aquellas instancias que permiten TODOS los puertos TCP desde internet público (0.0.0.0/0)

Políticas de Firewall Jerárquicas

Las políticas de firewall jerárquicas te permiten crear y hacer cumplir una política de firewall consistente en toda tu organización. Puedes asignar políticas de firewall jerárquicas a la organización en su conjunto o a carpetas individuales. Estas políticas contienen reglas que pueden denegar o permitir explícitamente conexiones.

Creas y aplicas políticas de firewall como pasos separados. Puedes crear y aplicar políticas de firewall en los nodos de organización o carpeta de la jerarquía de recursos. Una regla de política de firewall puede bloquear conexiones, permitir conexiones o diferir la evaluación de reglas de firewall a carpetas de menor nivel o reglas de firewall de VPC definidas en redes de VPC.

Por defecto, todas las reglas de políticas de firewall jerárquicas se aplican a todas las VMs en todos los proyectos bajo la organización o carpeta donde se asocia la política. Sin embargo, puedes restringir qué VMs obtienen una regla dada especificando redes objetivo o cuentas de servicio objetivo.

Puedes leer aquí cómo crear una Política de Firewall Jerárquica.

Evaluación de Reglas de Firewall

  1. Org: Políticas de firewall asignadas a la Organización

  2. Carpeta: Políticas de firewall asignadas a la Carpeta

  3. VPC: Reglas de firewall asignadas a la VPC

  4. Global: Otro tipo de reglas de firewall que pueden ser asignadas a VPCs

  5. Regional: Reglas de firewall asociadas con la red VPC de la NIC de la VM y región de la VM.

VPC Network Peering

Permite conectar dos redes de Nube Privada Virtual (VPC) para que los recursos en cada red puedan comunicarse entre sí. Las redes VPC emparejadas pueden estar en el mismo proyecto, en diferentes proyectos de la misma organización, o en diferentes proyectos de diferentes organizaciones.

Estos son los permisos necesarios:

  • compute.networks.addPeering

  • compute.networks.updatePeering

  • compute.networks.removePeering

  • compute.networks.listPeeringRoutes

Más en la documentación.

References

Support HackTricks

Last updated