GCP - VPC & Networking

Apoya a HackTricks

GCP Compute Networking en Resumen

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

VPC, Subredes y Firewalls en GCP

Las Compute Instances están conectadas a subredes que son parte de VPCs (Virtual Private Clouds). En GCP no hay security groups, hay VPC firewalls con reglas definidas a nivel de red pero aplicadas a cada VM Instance.

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 salida y denegar entrada.

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 el puerto 22 desde cualquier lugar

  • default-allow-rdp: permite el puerto 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 Compute Instances.

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 las instancias mediante los siguientes métodos:

Desafortunadamente, no hay un comando gcloud simple para listar todas las Compute Instances con puertos abiertos en internet. Tienes que conectar los puntos entre las reglas de firewall, network tags, service accounts 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 permitidos de entrada desde internet público (0.0.0.0/0)

  • Escaneo 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 aplicar 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 totalidad o a carpetas individuales. Estas políticas contienen reglas que pueden negar o permitir conexiones explícitamente.

Creas y aplicas políticas de firewall en 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 nivel inferior o reglas de firewall de VPC definidas en redes 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 reciben 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. Folder: 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 la región de la VM.

VPC Network Peering

Permite conectar dos redes Virtual Private Cloud (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.

Referencias

Apoya a HackTricks

Last updated