Ejemplos de políticas de cortafuegos jerárquicas

En esta página se muestran ejemplos de implementaciones de políticas de cortafuegos jerárquicas. Se da por hecho que conoces los conceptos descritos en el artículo Políticas de cortafuegos jerárquicas.

Ejemplo 1: Permitir que el verificador acceda a todas las VMs

En este caso práctico, todas las instancias de máquina virtual (VM) de una organización deben analizarse y registrarse mediante sondas desde una dirección IP concreta (10.100.0.1) a un puerto de destino específico (123). El administrador de seguridad de la organización se asegura de que ningún administrador de red ni otro administrador de seguridad pueda bloquear ese puerto en ninguna instancia de VM de la organización.

En este ejemplo se presupone que no hay políticas de cortafuegos a nivel de carpeta implementadas.

La configuración de este caso práctico se describe en el siguiente diagrama.

Permitir que la sonda acceda a todas las máquinas virtuales
Permitir que el verificador acceda a todas las VMs

Política aplicable en las VMs

En este ejemplo, la política de cortafuegos de la máquina virtual efectiva después de evaluar las reglas de toda la jerarquía es la siguiente.

Conexiones de entrada

  • Se permiten las conexiones entrantes con la IP de origen 10.100.0.1 y el puerto de destino 123, tal como se define en la política. Si se encuentra una coincidencia en la política de la organización, se permiten las conexiones de prueba y no se evalúan más reglas en la jerarquía.

  • En el caso de las conexiones entrantes que no procedan de la IP de origen 10.100.0.1 y del puerto de destino 123, no habrá ninguna coincidencia. Por lo tanto, se aplicará la regla de entrada predeterminada de las reglas de cortafuegos de la VPC, que deniega la conexión.

Conexión de salida

  • No hay ninguna coincidencia en las reglas definidas por la jerarquía. Por lo tanto, se aplica la regla de salida predeterminada de las reglas de cortafuegos de VPC, lo que permite las conexiones de salida.

Cómo se configura

  1. Crea una política de cortafuegos que contenga la regla:

    gcloud compute firewall-policies create \
         --organization=123456789012 \
         --short-name="example-firewall-policy" \
         --description="rules that apply to all VMs in the organization"
    
  2. Añade la regla a la política de cortafuegos:

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-scan-probe" \
        --layer4-configs=tcp:123 \
        --firewall-policy=example-firewall-policy \
        --organization=123456789012 \
        --src-ip-ranges=10.100.0.1/32
  3. Asocia la política de cortafuegos a la organización:

    gcloud compute firewall-policies associations create \
        --firewall-policy=example-firewall-policy \
        --organization=123456789012

Ejemplo 2: Denegar todas las conexiones externas excepto las que se realicen a determinados puertos

En este caso práctico, una política de cortafuegos bloquea todas las conexiones de fuentes de Internet externas, excepto las conexiones de los puertos de destino 80, 443 y 22. Se bloquea una conexión a Internet de entrada en cualquier puerto que no sea 80, 443 y 22, independientemente de las reglas de cortafuegos a nivel de red de VPC. En el caso de las conexiones en los puertos 80, 443 o 22, la política delega en el administrador de seguridad de la VPC el comportamiento que quiera aplicar en su respectiva red de VPC para esos puertos.

La configuración de este caso práctico se describe en el siguiente diagrama.

Denegar todas las conexiones externas excepto determinados puertos de destino
Denegar todas las conexiones externas, excepto las de determinados puertos de destino

Política aplicable en las VMs

En este ejemplo, la política de cortafuegos de la máquina virtual efectiva después de evaluar las reglas de toda la jerarquía es la siguiente.

Conexiones de entrada

  • Las conexiones entrantes de 10.0.0.0/8 coinciden con la regla de nivel de organización de mayor prioridad delegate-internal-traffic y omiten el resto de las reglas de la política de la organización para evaluarse con las reglas de cortafuegos configuradas a nivel de red de VPC. En la regla de cortafuegos de la VPC, se permiten las conexiones de 10.2.0.0/16 y el resto de las conexiones se evalúan en función de la regla de entrada implícita, que es deny.

  • Las conexiones de entrada con un intervalo de IPs de origen que no sea 10.0.0.0/8 para los puertos de destino 22, 80 y 443 se delegan al siguiente nivel, donde se permiten los puertos 80 y 443, pero no 22.

  • El resto de las conexiones se bloquean.

Conexiones de salida

  • No hay ninguna coincidencia en las reglas definidas por la jerarquía. Por lo tanto, se aplica la regla de salida predeterminada de las reglas de cortafuegos de VPC, lo que permite las conexiones de salida.

Cómo se configura

  1. Crea una política de cortafuegos que contenga la regla:

    gcloud compute firewall-policies create \
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --description="rules that apply to all VMs in the organization"
    
  2. Añade una regla para delegar las conexiones internas al propietario del proyecto:

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-internal-traffic" \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy" \
        --src-ip-ranges=10.0.0.0/8
    
  3. Añade una regla para delegar las reglas de conexiones externas a los puertos 80/443/22 al propietario del proyecto:

    gcloud compute firewall-policies rules create 2000 \
        --action=goto_next \
        --description="delegate-external-traffic-spec-ports" \
        --src-ip-ranges=0.0.0.0/0 \
        --layer4-configs=tcp:80,tcp:443,tcp:22 \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy"
  4. Añade una regla para denegar todas las demás conexiones externas:

    gcloud compute firewall-policies rules create 3000 \
        --action=deny \
        --description="block-other-external-traffic-spec-ports" \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy" \
        --src-ip-ranges=0.0.0.0/0
    
  5. Asocia la política de cortafuegos a la organización:

    gcloud compute firewall-policies associations create \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy"
  6. En el proyecto, añade una regla de cortafuegos para permitir las conexiones internas desde la subred designada:

    gcloud compute firewall-rules create allow-internal-traffic \
        --action=allow \
        --priority=1000 \
        --source-ranges=10.2.0.0/16
    
  7. En el proyecto, añade una regla de cortafuegos para permitir conexiones TCP externas 80/443:

    gcloud compute firewall-rules create allow-external-traffic \
        --action=allow \
        --priority=2000 \
        --rules=tcp:80,tcp:443
    

Ejemplo 3: Denegar las conexiones de salida, excepto las de una red de VPC específica

En este caso práctico, el administrador de seguridad de la organización no permite conexiones de salida en ninguna red VPC, excepto las que se originan en la red VPC myvpc. El administrador delega la decisión de abrir el tráfico de salida al servidor público 203.0.113.1 en el administrador de seguridad myvpc.

En este ejemplo se presupone que no hay políticas de cortafuegos a nivel de carpeta implementadas. La configuración de este caso práctico se describe en el siguiente diagrama.

Denegar las conexiones de salida, excepto las de una red específica
Denegar las conexiones de salida, excepto las de una red específica

Política aplicable en las VMs

En este ejemplo, la política de cortafuegos de la máquina virtual efectiva después de evaluar las reglas de toda la jerarquía es la siguiente.

Conexiones de entrada

  • No hay ninguna coincidencia en las reglas definidas por la jerarquía. Por lo tanto, se aplica la regla de entrada predeterminada de las reglas de cortafuegos de VPC, que deniega las conexiones de entrada.

Conexiones de salida

  • Se permiten todas las conexiones de salida destinadas a 203.0.113.1, pero se deniegan el resto. Todas las conexiones de salida destinadas a 203.0.113.1 coinciden con la regla delegate-egress-my-vpc y omiten el resto de las reglas de la política de la organización.

  • Las conexiones salientes se evalúan en función de las reglas de cortafuegos configuradas en myvpc. La regla predeterminada permite las conexiones de salida. La regla block-egress-traffic-sepc-ports de la política a nivel de organización deniega el resto de las conexiones.

Cómo se configura

  1. Crea una política de cortafuegos que contenga la regla:

    gcloud compute firewall-policies create \
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --description="rules that apply to all VMs in the organization"
    
  2. Añade una regla para delegar determinadas conexiones de salida:

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-egress-myvpc" \
        --dest-ip-ranges=203.0.113.1/32
        --direction=egress
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --target-resources=projects/PROJECT_ID/networks/myvpc
    
  3. Añade una regla para denegar todas las demás conexiones de salida:

    gcloud compute firewall-policies rules create 2000 \
        --action=deny \
        --description="block-egress-external-traffic-spec-ports" \
        --direction=egress \
        --dest-ip-ranges=0.0.0.0/0 \
        --organization=123456789012 \
        --short-name="example-firewall-policy"
  4. Asocia la política de cortafuegos a la organización:

    gcloud compute firewall-policies associations create \
        --organization=123456789012 \
        --short-name="example-firewall-policy"

Ejemplo 4: Configurar reglas para toda la organización y para carpetas específicas

En este caso de uso, un administrador de seguridad no permite conexiones entrantes a ninguna VM de la organización, excepto a las que se encuentran en el intervalo que se añade a una lista de permitidas: 203.0.113.0/24. El administrador delega las decisiones sobre qué hacer con las conexiones de 203.0.113.0/24 en los administradores de seguridad de los niveles de carpeta.

Hay dos carpetas diferentes:

  • Folder1, en la que la política permite conexiones solo a los puertos 80 y 443 de las VMs de backend, y el resto de los puertos están bloqueados.
  • Folder2, en la que la política obliga a que ninguna máquina virtual de la carpeta pueda bloquear ningún puerto de destino para el tráfico procedente de la dirección IP 203.0.113.1. El administrador de seguridad de la carpeta 2 delega otras decisiones en el administrador de seguridad de la VPC, que decide abrir los puertos 80, 443 y 22, y denegar el resto.

La configuración de este caso práctico se describe en el siguiente diagrama.

Reglas a nivel de organización y específicas de carpetas
Reglas de toda la organización y específicas de carpetas

Política aplicable en las VMs

En este ejemplo, la política de cortafuegos de la máquina virtual efectiva después de evaluar las reglas de toda la jerarquía es la siguiente.

Para las máquinas virtuales que pertenecen a my-vpc

  • Se permiten todas las conexiones entrantes de 203.0.113.0/24 con los puertos de destino TCP 80 y 443. Se deniegan todas las demás conexiones de entrada.

  • Todas las conexiones de salida se aceptan según la regla de cortafuegos de la VPC aplicada, ya que no hay ninguna coincidencia en las reglas de políticas de cortafuegos de nivel superior.

Para las máquinas virtuales que pertenecen a vpc2

  • Se permiten todas las conexiones entrantes de 203.0.113.1. Las conexiones de entrada de otras fuentes de 203.0.113.0/24 que no sean 203.0.113.1 solo se permiten en los puertos 80, 443 y 22. Se deniegan todas las demás conexiones entrantes.

  • Todas las conexiones de salida se aceptan según la regla de cortafuegos de la VPC aplicada, ya que no hay ninguna coincidencia en las reglas de políticas de cortafuegos de nivel superior.

Cómo se configura

  1. Crea una política de cortafuegos que contenga las reglas de Org_A:

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --description="rules that apply to all VMs in the organization"
    
  2. Añade una regla para delegar el acceso entrante de 203.0.113.0/24 al propietario del proyecto:

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-ingress" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --src-ip-ranges=203.0.113.0/24
    
  3. Añade una regla para denegar todas las demás conexiones externas:

    gcloud compute firewall-policies rules create 2000 \
        --action=deny
        --description="block-ingress-external-traffic"
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --src-ip-ranges=0.0.0.0/0
    
  4. Asocia la política de cortafuegos a la organización:

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a"
  5. Crea una política de cortafuegos que contenga las reglas de Folder1:

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --description="rules that apply to all VMs under Folder1"
    
  6. Añade una regla para permitir todo el tráfico de entrada HTTP(S):

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-http-s-ingress" \
        --layer4-configs=tcp:80,tcp:443 \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1"
  7. Añade una regla para denegar el acceso en todos los demás puertos o protocolos:

    gcloud compute firewall-policies rules create 2000 \
        --action=deny \
        --description="block-ingress-external-traffic" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --src-ip-ranges=0.0.0.0/0
  8. Asocia la política de cortafuegos a Folder1:

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --folder=200000000000
  9. Crea una política de cortafuegos que contenga las reglas de Folder2:

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --description="rules that apply to all VMs under Folder2"
  10. Añade una regla para permitir el tráfico entrante de 203.0.113.1:

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-vul-scan-ingress" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --src-ip-ranges=203.0.113.1/32
  11. Asocia la política de cortafuegos a Folder2:

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --folder=300000000000
  12. Añade una regla de cortafuegos para permitir la entrada de conexiones HTTP(S):

    gcloud compute firewall-rules create allow-internal-traffic \
        --network=vpc2 \
        --action=allow \
        --rules=tcp:80,tcp:443,tcp:22
    

Siguientes pasos