Descripción general del registro de las reglas de firewall

El registro de las reglas de firewall te permite auditar, verificar y analizar los efectos de las reglas de firewall. Por ejemplo, puedes determinar si una regla de firewall diseñada para denegar tráfico está funcionando según lo previsto. El registro también es útil si necesitas determinar cuántas conexiones se ven afectadas por una regla de firewall determinada.

Puedes habilitar el registro de las reglas de firewall de forma individual para cada regla de firewall cuyas conexiones necesitas registrar. El registro de las reglas de firewall es una opción para cualquier regla de firewall, independientemente de la acción (permitir o denegar) o la dirección (entrada o salida) de la regla.

Cuando habilitas el registro para una regla de firewall, Google Cloud Platform (GCP) crea una entrada denominada registro de conexión cada vez que la regla permite o deniega el tráfico. Puedes exportar estos registros de conexión a Stackdriver Logging, Cloud Pub/Sub o BigQuery para su análisis.

Cada registro de conexión contiene las direcciones IP de origen y destino, el protocolo y los puertos, la fecha y la hora, y una referencia a la regla de firewall que se aplica al tráfico.

Especificaciones

El registro de las reglas de firewall tiene las siguientes especificaciones:

Límites de registro de la conexión

La cantidad máxima de conexiones que pueden registrarse por instancia de VM depende del tipo de máquina. Los límites de registro de la conexión se expresan como la cantidad máxima de conexiones que pueden registrarse en un intervalo de cinco segundos.

Tipo de máquina de instancia Cantidad máxima de conexiones registradas en un intervalo de 5 segundos
f1-micro 100 conexiones
g1-small 250 conexiones
Tipos de máquinas con 1 a 8 CPU virtuales 500 conexiones por CPU virtual
Tipos de máquinas con más de 8 CPU virtuales 4,000 (500×8) conexiones

Ejemplos de registro

Una entrada de registro se genera cada vez que una regla de firewall con el registro habilitado se aplica al tráfico. Un flujo de paquetes determinado puede generar más de una entrada de registro en total; sin embargo, desde la perspectiva de una VM dada, a lo sumo solo una entrada de registro puede generarse si la regla de firewall que se aplica a esa entrada tiene el registro habilitado.

Los siguientes ejemplos son una demostración de cómo funcionan los registros de firewall.

Ejemplo de denegación de salida

En este ejemplo:

  • Se considera el tráfico entre las instancias de VM en la red de VPC example-net en el proyecto example-proj.
  • Las dos instancias de VM son:
    • VM1 en la zona us-west1-a con la dirección IP 10.10.0.99 en west-subnet (región us-west1).
    • VM2 en la zona us-east1-a con la dirección IP 10.20.0.99 en east-subnet (región us-east1).
  • Regla A: Una regla de firewall de denegación de salida está orientada a todas las instancias en la red, tiene un destino de 10.20.0.99 (VM2) y se aplica al puerto TCP 80.
    • El registro está habilitado para esta regla.
  • Regla B: Una regla de firewall de permiso de entrada está orientada a todas las instancias en la red, tiene una fuente de 10.10.0.99 (VM1) y se aplica al puerto TCP 80.
    • El registro también está habilitado para esta regla.

Los siguientes comandos de gcloud pueden utilizarse para crear las reglas de firewall:

  1. Regla A: La regla de denegación de salida para TCP 80, aplicable a todas las instancias, destino 10.20.0.99:

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  2. Regla B: La regla de permiso de entrada para TCP 80, aplicable a todas las instancias, fuente 10.10.0.99:

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
Conexión de vm1 a vm2 (haz clic para agrandar)
Conexión de vm1 a vm2 (haz clic para agrandar)

Supongamos que VM1 intenta conectarse a VM2 en el puerto TCP 80. Se registran las siguientes reglas de firewall:

  • Una entrada de registro para la regla A desde la perspectiva de VM1 se genera cuando VM1 intenta conectarse a 10.20.0.99 (VM2).
  • Debido a que la regla A realmente bloquea el tráfico, la regla B nunca se tiene en cuenta, por lo que no hay entrada de registro para la regla B desde la perspectiva de VM2.

Se generará el siguiente registro de firewall en este ejemplo:

Campo Valores
conexión src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposición DENEGADA
regla Referencia = "network:example-net/firewall:rule-a"
prioridad = 10
acción = DENEGAR
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
dirección = salida
instancia project_id="example-proj"
instance_name=VM1
región=us-west1
zona=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
región=us-east1
zona=us-east1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location No hay información. Este campo solo se utiliza si el destino está fuera de la red de VPC.

Ejemplo de permiso de salida, permiso de entrada

En este ejemplo:

  • Se considera el tráfico entre las instancias de VM en la red de VPC example-net en el proyecto example-proj.
  • Las dos instancias de VM son:
    • VM1 en la zona us-west1-a con la dirección IP 10.10.0.99 en west-subnet (región us-west1).
    • VM2 en la zona us-east1-a con la dirección IP 10.20.0.99 en east-subnet (región us-east1).
  • Regla A: Una regla de firewall de permiso de salida está orientada a todas las instancias en la red, tiene un destino de 10.20.0.99 (VM2) y se aplica al puerto TCP 80.
    • El registro está habilitado para esta regla.
  • Regla B: Una regla de firewall de permiso de entrada está orientada a todas las instancias en la red, tiene una fuente de 10.10.0.99 (VM1) y se aplica al puerto TCP 80.
    • El registro también está habilitado para esta regla.

Los siguientes comandos de gcloud pueden utilizarse para crear las dos reglas de firewall:

  1. Regla A: La regla de permiso de salida para TCP 80, aplicable a todas las instancias, destino 10.20.0.99 (VM2):

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  2. Regla B: La regla de permiso de entrada para TCP 80, aplicable a todas las instancias, fuente 10.10.0.99 (VM1):

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
Conexión de vm1 a vm2 (haz clic para agrandar)
Conexión de vm1 a vm2 (haz clic para agrandar)

Supongamos que VM1 intenta conectarse a VM2 en el puerto TCP 80. Se registran las siguientes reglas de firewall:

  • Una entrada de registro para la regla A desde la perspectiva de VM1 se genera cuando VM1 se conecta a 10.20.0.99 (VM2).
  • Una entrada de registro para la regla B desde la perspectiva de VM2 se genera cuando VM2 permite las conexiones entrantes desde 10.10.0.99 (VM1).

Se genera el siguiente registro de firewall que informa VM1:

Campo Valores
conexión src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposición PERMITIDA
regla Referencia = "network:example-net/firewall:rule-a"
Prioridad = 10
Acción = PERMITIR
Destination_range = 10.20.0.99/32
Ip_port_info = tcp:80
Dirección = salida
instancia project_id="example-proj"
instance_name=VM1
región=us-west1
zona=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
región=us-east1
zona=us-east1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location No hay información. Este campo solo se utiliza si el destino está fuera de la red de VPC.

Se genera el siguiente registro de firewall que informa VM2:

Campo Valores
conexión src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposición PERMITIDA
regla Referencia = "network:example-net/firewall:rule-b"
Prioridad = 10
Acción = PERMITIR
Source_range = 10.10.0.99/32
Ip_port_info = tcp:80
Dirección = entrada
instancia project_id="example-proj"
instance_name=VM2
región=us-east1
zona=us-east1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=subnet-east
remote_instance project_id="example-proj"
instance_name=VM1
región=us-west1
zona=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=subnet-west
remote_location No hay información. Este campo solo se utiliza si el destino está fuera de la red de VPC.

Ejemplo de entrada a Internet

En este ejemplo:

  • Se considera el tráfico desde un sistema fuera de la red de VPC example-net a una instancia de VM en esa red. La red está en el proyecto example-proj.
  • El sistema en Internet tiene la dirección IP 203.0.113.114.
  • VM1 en la zona us-west1-a tiene la dirección IP 10.10.0.99 en west-subnet (región us-west1).
  • Regla C: Una regla de firewall de permiso de entrada está orientada a todas las instancias en la red, tiene una fuente de cualquier dirección IP (0.0.0.0/0) y se aplica al puerto TCP 80.
    • El registro está habilitado para esta regla.
  • Regla D: Una regla de firewall de denegación de salida está orientada a todas las instancias en la red, tiene un destino de cualquier dirección IP (0.0.0.0/0) y se aplica a todos los protocolos.
    • El registro también está habilitado para esta regla.

Los siguientes comandos de gcloud pueden utilizarse para crear las reglas de firewall:

  1. Regla C: La regla de permiso de entrada para TCP 80, aplicable a todas las instancias, a cualquier fuente:

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  2. Regla D: La regla de denegación de salida para todos los protocolos, aplicable a todas las instancias, a cualquier destino:

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction egress \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
Conexión de Internet a VM (haz clic para agrandar)
Conexión de Internet a VM (haz clic para agrandar)

Supongamos que el sistema con una dirección IP 203.0.113.114 intenta conectarse a VM1 en el puerto TCP 80. Sucede lo que se indica a continuación:

  • Se genera una entrada de registro para la regla C desde la perspectiva de VM1 cuando VM1 acepta el tráfico proveniente de 203.0.113.114.
  • A pesar de la regla D, VM1 tiene permitido responder a la solicitud entrante, porque las reglas de firewall de GCP tienen estado. Ningún tipo de regla de salida puede bloquear las respuestas establecidas, siempre que se permita la solicitud entrante.
  • Debido a que la regla D no se aplica, nunca se la tiene en cuenta, por lo que no hay entrada de registro para la regla D.

Se generará el siguiente registro de firewall en este ejemplo:

Campo Valores
conexión src_ip=203.0.113.114, src_port=[EPHEMERAL_PORT], dest_ip=10.10.0.99, dest_port=80, protocol=tcp
disposición PERMITIDA
regla Referencia = "network:my-vpc/firewall:rule-c"
Prioridad = 10
Acción = PERMITIR
Source_range = 0.0.0.0/0
Ip_port_info = tcp:80
Dirección = entrada
instancia project_id="example-proj"
instance_name=VM1
región=us-west1
zona=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location continente
país
región
ciudad

Formato de registro de firewall

Sujeto a las especificaciones, una entrada de registro se crea en Stackdrive Logging para cada regla de firewall que tenga el registro habilitado si esa regla se aplica al tráfico hacia la instancia de VM o desde esa instancia de VM.

Las reglas de firewall siguen el formato que se indica en la tabla que figura a continuación.

Los campos de carga útil JSON de LogEntry para Stackdriver contienen mensajes con el siguiente formato.

Campo Descripción
conexión Conexión IP
5 tuplas que describen la dirección IP de origen y destino, el puerto de origen y destino, y el protocolo de IP de esta conexión.
disposición string
Indica si la conexión estaba PERMITIDA O DENEGADA.
regla Detalles de la regla
Detalles de la regla que se aplicó a esta conexión.
instancia Detalles de la instancia
Detalles de la instancia de VM. Ten en cuenta que en una configuración de VPC compartida, project_id corresponde al proyecto de servicio.
vpc Detalles de VPC
Detalles de la red de VPC. Ten en cuenta que en una configuración de VPC compartida, project_id corresponde al proyecto host.
remote_instance Detalles de la instancia
Si el extremo remoto de la conexión era una VM ubicada en Google Compute Engine, este campo se propaga con los detalles de la instancia de VM.
remote_vpc Detalles de VPC
Si el extremo remoto de la conexión era una VM ubicada en la VPC de Google, este campo se propaga con los detalles de la red de VPC.
remote_location Detalles geográficos
Si el extremo remoto de la conexión era externa a la VPC de Google, este campo se propaga con los metadatos de ubicación disponibles.

Conexión IP

Campo Tipo Descripción
src_ip string Dirección IP de origen. Si el origen es una VM de Compute Engine, esta es la dirección IP interna de la interfaz. No se muestra la dirección IP pública externa. El registro muestra la IP de la VM como la VM la ve en el encabezado del paquete, de la misma manera que si ejecutaras el volcado de TCP en la VM.
src_port número entero Puerto de origen
dest_ip string Dirección IP de destino. Si el destino es una VM de GCP, esta es la dirección IP privada interna de la interfaz. La dirección IP pública externa no se muestra, incluso si se utilizó para establecer la conexión.
dest_port número entero Puerto de destino
protocolo número entero Protocolo IP de la conexión

Detalles de la regla

Campo Tipo Descripción
referencia string Referencia a la regla de firewall; formato: "red:{nombre de la red}/firewall:{firewall_name}".
prioridad número entero La prioridad para la regla de firewall.
acción string PERMITIR O DENEGAR
source_range[] string Lista de los rangos de origen a los que se aplica la regla de firewall.
destination_range[] string Lista de los rangos de destino a los que se aplica el firewall.
ip_port_info[] Detalles del puerto IP Lista de los protocolos ip y los rangos de puertos aplicables a las reglas.
dirección string La dirección en que se aplica el firewall (ENTRADA o SALIDA)
source_tag[] string Lista de todas las etiquetas de origen a las que se aplica la regla de firewall.
target_tag[] string Lista de todas las etiquetas de destino a las que se aplica la regla de firewall.
source_service_account[] string Lista de todas las cuentas de servicio de origen a las que se aplica la regla de firewall.
target_service_account[] string Lista de todas las cuentas de servicio de destino a las que se aplica la regla de firewall.

Detalles del puerto IP

Campo Tipo Descripción
ip_protocol string El protocolo IP al que se aplica la regla de firewall. "TODO" si se aplica a todos los protocolos.
port_range[] string Lista de los rangos de puertos aplicables a las reglas. P. ej., "8080-9090"

Detalles de la instancia

Campo Tipo Descripción
project_id string ID del proyecto que contiene la VM
vm_name string Nombre de la instancia de VM
región string Región de la VM
zona string Zona de la VM

Detalles de VPC

Campo Tipo Descripción
project_id string ID del proyecto que contiene la red
vpc_name string Red en la que opera la VM
subnetwork_name string Subred en la que opera la VM

Detalles geográficos

Campo Tipo Descripción
continente string Continente para los extremos externos
país string País para los extremos externos
región string Región para los extremos externos
ciudad string Ciudad para los extremos externos

¿Qué sigue?

¿Te sirvió esta página? Envíanos tu opinión: