Usar el almacenamiento de registros de reglas de cortafuegos

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

En esta página se explica cómo habilitar e inhabilitar el registro de las reglas de firewall de la nube privada virtual. Para obtener instrucciones sobre el registro de reglas de políticas de cortafuegos, consulta Utilizar reglas y políticas de cortafuegos jerárquicas.

En esta página también se explica cómo ver los registros generados. Para obtener más información sobre qué se registra, ejemplos de registros y formatos de registro, consulta Almacenamiento de registros de reglas de cortafuegos.

Si habilitas el registro en una regla de cortafuegos, puedes ver información valiosa y recomendaciones sobre ella en Firewall Insights. Para obtener más información, consulta Firewall Insights en la documentación de Network Intelligence Center.

Permisos

Para modificar reglas de cortafuegos o registros de acceso, las entidades de IAM necesitan uno de los siguientes roles.

Tarea Rol obligatorio
Crear, eliminar o actualizar reglas de cortafuegos Propietario o editor del proyecto o administrador de seguridad
Ver registros Propietario, editor o lector del proyecto o Lector de registros
Consulta la guía de control de acceso de Logging para obtener más información sobre los roles y permisos de gestión de identidades y accesos de Logging.

Habilitar e inhabilitar el almacenamiento de registros de reglas de cortafuegos

Cuando creas una regla de cortafuegos, puedes activar el registro de reglas de cortafuegos. Para obtener más información, consulta el artículo Crear reglas de firewall.

Para habilitar o inhabilitar el almacenamiento de registros de reglas de cortafuegos en una regla de cortafuegos, sigue estas instrucciones. Cuando habilitas el registro, puedes controlar si se incluyen los campos de metadatos. Si los omite, puede ahorrar en costes de almacenamiento.

Habilitar el almacenamiento de registros de reglas de cortafuegos

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. En la columna Registros, compruebe si el registro de cortafuegos está activado o desactivado en cada regla de cortafuegos.

  3. Para habilitar el registro de una o varias reglas de cortafuegos, marque la casilla situada junto a cada regla que quiera actualizar.

  4. En la barra de acciones Reglas de cortafuegos de VPC, haga clic en Configurar registros.

  5. En el cuadro de diálogo Configurar registros, selecciona Activado.

  6. Para omitir los campos de metadatos, despliega Mostrar detalles de los registros y, a continuación, desmarca la casilla Incluir metadatos.

  7. Haz clic en Guardar configuración.

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --enable-logging \
    --logging-metadata=LOGGING_METADATA

Haz los cambios siguientes:

  • RULE_NAME: el nombre de la regla de cortafuegos.
  • LOGGING_METADATA: si el registro de reglas de cortafuegos incluye campos de metadatos en los registros de reglas de cortafuegos. Solo puedes configurar este campo si el registro está habilitado. El valor debe ser exclude-all o include-all. De forma predeterminada, los campos de metadatos están incluidos.

Para obtener más información, consulta la documentación de referencia del SDK.

Terraform

Puedes usar el recurso de Terraform para crear una regla de cortafuegos con el registro habilitado.

resource "google_compute_firewall" "rules" {
  project     = var.project_id # Replace this with your project ID in quotes
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  log_config {
    metadata = "INCLUDE_ALL_METADATA"
  }

  allow {
    protocol = "tcp"
    ports    = ["80", "8080", "1000-2000"]
  }
  target_tags = ["web"]
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

API

Habilita el registro de reglas de cortafuegos en una regla de cortafuegos ya creada.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME,
  "logConfig": {
    "enable": true,
    "metadata": LOGGING_METADATA
  }
}

Sustituye los marcadores de posición por valores válidos:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la regla de cortafuegos.
  • RULE_NAME: el nombre de la regla de cortafuegos.
  • LOGGING_METADATA: si el registro de reglas de cortafuegos incluye campos de metadatos en los registros de reglas de cortafuegos. Solo puedes configurar este campo si el registro está habilitado. El valor debe ser exclude-all o include-all. De forma predeterminada, los campos de metadatos están incluidos.

Para obtener más información, consulta el método firewalls.patch.

Inhabilitar el almacenamiento de registros de reglas de cortafuegos

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. En la columna Registros, compruebe si el registro de cortafuegos está activado o desactivado en cada regla de cortafuegos.

  3. Para inhabilitar el registro de una o varias reglas de firewall, marque la casilla situada junto a cada regla que quiera actualizar.

  4. En la barra de acciones Reglas de cortafuegos de VPC, haga clic en Configurar registros.

  5. En el cuadro de diálogo Configurar registros, selecciona Desactivado y, a continuación, haz clic en Guardar configuración.

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --no-enable-logging

Sustituye RULE_NAME por el nombre de la regla de firewall.

API

Inhabilita el registro de reglas de cortafuegos en una regla de cortafuegos.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME,
  "logConfig": {
    "enable": false
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la regla de cortafuegos.
  • RULE_NAME: el nombre de la regla de cortafuegos.

Para obtener más información, consulta el método firewalls.patch.

Ver registros

Los registros de reglas de cortafuegos se crean en el proyecto que aloja la red que contiene las instancias de VM y las reglas de cortafuegos. Con la VPC compartida, las instancias de VM se crean en proyectos de servicio, pero usan una red de VPC compartida ubicada en el proyecto host. Los registros de las reglas de cortafuegos se almacenan en ese proyecto host.

Para ver los registros de reglas de cortafuegos, usa la sección Explorador de registros de la consola Google Cloud .

Las siguientes consultas muestran cómo puedes buscar eventos de firewall específicos.

Ver todos los registros de cortafuegos

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Recurso.

  3. En la lista Seleccionar recurso, haz clic en Subred y, a continuación, en Aplicar.

  4. Haga clic en Nombre de registro y, a continuación, en la lista, seleccione firewall.

  5. Haz clic en Aplicar.

Alternativa:

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Consulta.

  3. Si no ves el campo del editor de consultas en el panel Consulta, haz clic en el botón Mostrar consulta.

  4. Pega lo siguiente en el campo del editor de consultas del panel Consulta. Sustituye PROJECT_ID por el ID de tu proyecto.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    
  5. Haz clic en Realizar una consulta.

Ver los registros de subredes específicas

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Recurso.

  3. En la lista Seleccionar recurso, haz clic en Subred.

  4. Selecciona la subred de la que quieras ver los registros y, a continuación, haz clic en Aplicar.

  5. Haga clic en Nombre de registro y, a continuación, en la lista, seleccione firewall.

  6. Haz clic en Aplicar.

Alternativa:

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Consulta.

  3. Si no ves el campo del editor de consultas en el panel Consulta, haz clic en el interruptor Mostrar consulta.

  4. Pega lo siguiente en el campo del editor de consultas del panel Consulta. Sustituye PROJECT_ID por el ID de tu proyecto y SUBNET_NAME por tu subred.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    
  5. Haz clic en Realizar una consulta.

Ver registros en máquinas virtuales específicas

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Recurso.

  3. En la lista Seleccionar recurso, haz clic en Instancia de VM.

  4. Selecciona la instancia de la que quieras ver los registros y, a continuación, haz clic en Aplicar.

  5. Haga clic en Nombre de registro y, a continuación, en la lista, seleccione firewall.

  6. Haz clic en Aplicar.

Alternativa:

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Consulta.

  3. Si no ves el campo del editor de consultas en el panel Consulta, haz clic en el interruptor Mostrar consulta.

  4. Pega lo siguiente en el campo del editor de consultas del panel Consulta. Sustituye PROJECT_ID por el ID de tu proyecto y INSTANCE_ID por el ID de la VM cuyos registros quieras ver.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    
  5. Haz clic en Realizar una consulta.

Ver los registros de conexiones de un país concreto

  1. En la Google Cloud consola, ve a la página Explorador de registros.

    Ir a Explorador de registros

  2. Haz clic en Consulta.

  3. Si no ves el campo del editor de consultas en el panel Consulta, haz clic en el interruptor Mostrar consulta.

  4. Pega lo siguiente en el campo del editor de consultas del panel Consulta. Sustituye PROJECT_ID por el ID de tu proyecto y COUNTRY por el código ISO 3166-1 alfa-3.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.remote_location.country=COUNTRY
    

Exportar registros

Para exportar los registros de reglas de cortafuegos, consulta Configurar y gestionar receptores.

Puedes usar las consultas de ejemplo para acotar los registros que exportes.

Tabla de interacciones

  • En el caso de la comunicación entre máquinas virtuales, es posible que ambas generen registros de registro, en función de sus respectivas reglas de cortafuegos.
  • La conexión registrada incluye paquetes que fluyen en ambos sentidos si el cortafuegos ha permitido el paquete inicial.
  • En una VM determinada, las conexiones entrantes se comparan con las reglas de cortafuegos configuradas en esa VM, y las conexiones salientes se comparan con las reglas de cortafuegos de salida configuradas en esa VM.
  • Las conexiones permitidas que coinciden con una regla de cortafuegos con la opción "Permitir y registrar" se registran solo una vez. La entrada de registro no se repite cada 5 segundos, aunque la conexión se mantenga.
  • Una conexión denegada que coincida con una regla de cortafuegos con el valor "denegada y registrada" repite la entrada de registro cada 5 segundos mientras haya paquetes observados en esa conexión denegada.

En esta tabla se muestra el comportamiento del registro del cortafuegos desde la perspectiva de una sola VM.

En un caso en el que una VM1 tiene una regla de entrada R1 que coincide con los paquetes y una regla de salida R2 que también coincide con los paquetes, el comportamiento del registro del cortafuegos es el siguiente:

VM1 tiene la regla de entrada R1 (paquetes coincidentes) VM1 tiene la regla de salida R2 (paquetes coincidentes) Dirección de la conexión Acción Registro
Permitir y registrar Permitir Entrada Permitir Una entrada de registro:
disposition=allow, rule=R1
Denegar
Permitir y registrar
Denegar y registrar
Permitir Permitir Entrada Permitir Ningún almacenamiento de registros
Denegar
Permitir y registrar
Denegar y registrar
Denegar y registrar N/A Entrada Denegar Una entrada de registro cada 5 segundos:
disposition=deny, rule=R1
Denegar N/A Entrada Denegar Ningún almacenamiento de registros
Permitir Permitir y registrar Salida Permitir Una entrada de registro:
disposition=allow, rule=R2
Denegar
Permitir y registrar
Denegar y registrar
Permitir Permitir Salida Permitir Sin registro
Denegar
Permitir y registrar
Denegar y registrar
N/A Denegar y registrar Salida Denegar Una entrada de registro cada 5 segundos:
disposition=deny, rule=R2
N/A Denegar Salida Denegar Ningún almacenamiento de registros

Ten en cuenta que la entrada y la salida son simétricas.

Esta es la descripción detallada de la semántica de los registros del cortafuegos:

  • Permitir y registrar (el registro es compatible con TCP y UDP)

    • La conexión iniciada en la dirección a la que se aplica la regla provoca que se cree un único registro.
    • Se permite el tráfico de respuesta debido al seguimiento de conexiones. El tráfico de respuesta no provoca ningún registro, independientemente de las reglas de cortafuegos en esa dirección.
    • Si la conexión caduca en el cortafuegos (inactiva durante 10 minutos o se recibe un RST de TCP), es posible que otro paquete en cualquier dirección active el registro.
    • El registro se basa en tuplas de 5 elementos. Las marcas TCP no afectan al comportamiento de registro.
  • Denegar y registrar (el registro se admite en TCP y UDP)

    • Los paquetes se descartan (no se inicia ninguna conexión).
    • Cada paquete que corresponde a una tupla de 5 elementos única se registra como un intento de conexión fallido.
    • La misma tupla de 5 elementos se registra de nuevo cada 5 segundos si sigue recibiendo paquetes.

Solución de problemas

No se pueden ver los registros

Si no puedes ver los registros de reglas de cortafuegos en la sección Explorador de registros de laGoogle Cloud consola, comprueba lo siguiente:

Causa posible: permisos insuficientes

Pide al propietario del proyecto que se asegure de que tu entidad principal de gestión de identidades y accesos tenga al menos el rol Lector de registros del proyecto. Para obtener más información, consulta los permisos.
Posible causa: las redes antiguas no son compatibles
No puedes usar el registro de reglas de cortafuegos en una red antigua. Solo se admiten redes de VPC.
Posible causa: Asegúrate de que estás buscando en el proyecto correcto.
Como los registros de reglas de cortafuegos se almacenan en el proyecto que contiene la red, es importante que busques los registros en el proyecto correcto. Con la VPC compartida, las instancias de VM se crean en proyectos de servicio, pero usan una red de VPC compartida ubicada en el proyecto del host. En los casos de VPC compartida, los registros de reglas de cortafuegos se almacenan en ese proyecto host.

Si se trata de una VPC compartida, necesitarás los permisos adecuados para el proyecto host si quieres ver los registros de reglas de cortafuegos. Aunque las instancias de VM se encuentren en proyectos de servicio, los registros de reglas de cortafuegos correspondientes se encuentran en el proyecto del host.

Faltan entradas de registro

Posible causa: es posible que las conexiones no coincidan con la regla de cortafuegos que esperas

Verifica que la regla de cortafuegos que esperas esté en la lista de reglas de cortafuegos aplicables a una instancia. Usa la Google Cloud consola para ver los detalles de la instancia correspondiente y, a continuación, haz clic en el botón Ver detalles de la sección Interfaces de red de la página Detalles de la instancia de VM. Inspecciona las reglas de cortafuegos aplicables en la sección Detalles de cortafuegos y rutas de la página Detalles de interfaz de red de la VM.

Para asegurarte de que creas las reglas de cortafuegos correctamente, consulta las reglas de cortafuegos de VPC.

Puedes usar tcpdump en la VM para determinar si las conexiones que envía o recibe tienen direcciones, puertos y protocolos que coincidan con el cortafuegos que esperas.

Posible causa: puede que se aplique una regla de mayor prioridad con el registro de reglas de cortafuegos inhabilitado.

Las reglas de cortafuegos se evalúan según sus prioridades. Desde la perspectiva de una instancia de VM, solo se aplica una regla de cortafuegos al tráfico.

Una regla que creas que tiene la prioridad más alta puede que no sea la que se aplique con la prioridad más alta. En su lugar, se puede aplicar una regla de mayor prioridad que no tenga habilitado el registro.

Para solucionar problemas, puedes habilitar temporalmente el registro de todas las reglas de cortafuegos posibles aplicables a una VM. Usa la Google Cloud consola para ver los detalles de la VM correspondiente y, a continuación, haz clic en el botón Ver detalles de la sección Interfaces de red de la página Detalles de la instancia de VM. Inspecciona las reglas de cortafuegos aplicables en la sección Detalles de reglas y rutas de cortafuegos de la página Detalles de interfaz de red de la VM e identifica tus reglas personalizadas en esa lista. Habilita temporalmente el registro de todas esas reglas de cortafuegos personalizadas.

Si el registro está habilitado, puedes identificar la regla aplicable. Una vez identificadas, asegúrate de inhabilitar el registro de todas las reglas que no lo necesiten.

Faltan metadatos de algunas entradas de registro

Causa posible: retraso en la propagación de la configuración

Si actualizas una regla de cortafuegos que tiene habilitado el registro del cortafuegos, es posible que tarden unos minutos en propagarse los cambios necesarios para registrar el tráfico que coincida con los componentes actualizados de la regla.
Google Cloud

Siguientes pasos