Usa el registro de reglas de firewall

El registro de reglas de firewall te permite auditar, verificar y analizar los efectos de estas reglas. 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.

En esta página, se muestra cómo inhabilitar y habilitar el registro para las reglas de firewall de la nube privada virtual. Si deseas obtener instrucciones para registrar reglas de política de firewall, consulta Usa reglas y políticas de firewall jerárquicas.

En esta página, también se muestra cómo ver los registros generados. Para obtener más información sobre lo que se registra, los ejemplos y los formatos de registro, consulta Registro de reglas de firewall.

Si habilitas el registro en una regla de firewall, puedes ver estadísticas y recomendaciones para la regla desde Estadísticas de firewall. Para obtener más información, consulta la página sobre Firewall Insights en la documentación de Network Intelligence Center.

Permisos

Para modificar las reglas de firewall o los registros de acceso, los principales de IAM necesitan una de las siguientes funciones.

Tarea Función requerida
Crear, borrar o actualizar las reglas de firewall Propietario o editor del proyecto o administrador de seguridad
Visualiza los registros Propietario, editor o visualizador del proyecto o visualizador de registros
Consulta la Guía de control de acceso de Logging para obtener detalles sobre los permisos y las funciones de IAM de Logging.

Inhabilita y habilita el registro de las reglas de firewall

Cuando creas una regla de firewall, puedes elegir activar el registro de las reglas de firewall. Para obtener más información, consulta Crea reglas de firewall.

Si deseas habilitar o inhabilitar el registro de las reglas de firewall para una regla existente, sigue estas instrucciones. Cuando habilitas el registro, puedes controlar si se incluyen los campos de metadatos. Si los omites, puedes ahorrar en costos de almacenamiento.

Habilita el registro de las reglas de firewall

Consola

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

    Ir a Políticas de firewall

  2. En la columna Registros, determina si el registro de firewall está activado o desactivado para cada regla de firewall.

  3. Para habilitar el registro de una o más reglas de firewall, selecciona la casilla de verificación junto a cada regla que deseas actualizar.

  4. En la barra de acciones de Reglas de firewall de VPC, haz clic en Configurar registros.

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

  6. Para omitir los campos de metadatos, expande Mostrar detalles de registros y, luego, desmarca la casilla de verificación Incluir metadatos.

  7. Haga clic en Guardar configuración.

gcloud

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

Reemplaza lo siguiente:

  • RULE_NAME: Es el nombre de la regla de firewall.
  • LOGGING_METADATA: si el registro de reglas de firewall incluye campos de metadatos en los registros de reglas de firewall. Puedes configurar este campo solo si el registro está habilitado. El valor debe ser exclude-all o include-all. De forma predeterminada, se incluyen los campos de metadatos.

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

Terraform

Puedes usar el recurso Terraform para crear una regla de firewall 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"]
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

API

Habilita el registro de reglas de firewall en una regla de firewall existente.

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

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

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

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

Inhabilita el registro de reglas de firewall

Consola

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

    Ir a Políticas de firewall

  2. En la columna Registros, determina si el registro de firewall está activado o desactivado para cada regla de firewall.

  3. Para inhabilitar el registro de una o más reglas de firewall, selecciona la casilla de verificación junto a cada regla que deseas actualizar.

  4. En la barra de acciones de Reglas de firewall de VPC, haz clic en Configurar registros.

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

gcloud

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

Reemplaza RULE_NAME por el nombre de la regla de firewall.

API

Inhabilita el registro de reglas de firewall en una regla de firewall existente.

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

Reemplaza lo siguiente:

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

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

Visualiza los registros

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

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

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

Ver todos los registros de firewall

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

    Ir al Explorador de registros

  2. Haz clic en Recurso.

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

  4. Haz clic en Nombre del registro y, luego, en la lista, selecciona firewall.

  5. Haga clic en Aplicar.

O, como alternativa:

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

    Ir al 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 de activar o desactivar Mostrar consulta.

  4. Pega lo siguiente en el campo del Editor de consultas en el panel Consulta. Reemplaza PROJECT_ID por el ID del proyecto.

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

Visualiza los registros de subredes específicas

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

    Ir al Explorador de registros

  2. Haz clic en Recurso.

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

  4. Selecciona la subred cuyos registros deseas ver y, luego, haz clic en Aplicar.

  5. Haz clic en Nombre del registro y, luego, en la lista, selecciona firewall.

  6. Haga clic en Aplicar.

O, como alternativa:

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

    Ir al 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 de activar o desactivar Mostrar consulta.

  4. Pega lo siguiente en el campo del Editor de consultas en el panel Consulta. Reemplaza 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. Haga clic en Ejecutar consulta.

Visualiza registros en VM específicas

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

    Ir al 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 deseas ver los registros y haz clic en Aplicar.

  5. Haz clic en Nombre del registro y, luego, en la lista, selecciona firewall.

  6. Haga clic en Aplicar.

O, como alternativa:

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

    Ir al 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 de activar o desactivar Mostrar consulta.

  4. Pega lo siguiente en el campo del Editor de consultas en el panel Consulta. Reemplaza PROJECT_ID por el ID del proyecto y INSTANCE_ID por el ID de la VM de la que deseas ver los registros.

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

Visualiza los registros de las conexiones de un país específico

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

    Ir al 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 de activar o desactivar Mostrar consulta.

  4. Pega lo siguiente en el campo del Editor de consultas en el panel Consulta. Reemplaza PROJECT_ID por el ID del proyecto y COUNTRY por el código ISO 3166-1alpha-3.

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

Exporta registros

Para exportar registros de reglas de firewall, consulta Configura y administra receptores.

Puedes usar las consultas de ejemplo para limitar los registros que exportas.

Tabla de interacciones

  • En el caso de la comunicación de VM a VM, ambas VM pueden generar registros, según sus respectivas reglas de firewall.
  • La conexión registrada incluye paquetes que circulan en ambos sentidos si el firewall permitió el paquete inicial.
  • Para una VM determinada, las conexiones entrantes se comparan con las reglas de firewall configuradas en esas VM, y las conexiones salientes se comparan con la regla de firewall de salida configurada en esa VM.
  • Una conexión permitida que coincide con una regla de firewall con la indicación "permitir y registrar" se registra solo una vez. La entrada de registro no se repite cada 5 segundos, incluso si la conexión perdura.
  • Una conexión denegada que coincide con una regla de firewall con la indicación "denegada y registrar" 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 de firewall desde el punto de vista de una VM única.

Si 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 de firewall es el siguiente:

La VM1 tiene una regla de entrada R1 (coincide con los paquetes) La VM1 tiene una regla de salida R2 (coincide con los paquetes) Dirección de conexión Acción Registro
Permitir + registrar Permitir Entrada Permitir Una entrada de registro:
disposition=allow, rule=R1
Denegar
Permitir + registrar
Denegar + registrar
Permitir Permitir Entrada Permitir Sin registro
Denegar
Permitir + registrar
Denegar + registrar
Denegar + registrar No disponible Entrada Denegar Una entrada de registro cada 5 segundos:
disposition=deny, rule=R1
Denegar No disponible Entrada Denegar Sin registro
Permitir Permitir + registrar Salida Permitir Una entrada de registro:
disposition=allow, rule=R2
Denegar
Permitir + registrar
Denegar + registrar
Permitir Permitir Salida Permitir Sin registro
Denegar
Permitir + registrar
Denegar + registrar
No disponible Denegar + registrar Salida Denegar Una entrada de registro cada 5 segundos:
disposition=deny, rule=R2
No disponible Denegar Salida Denegar Sin registro

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

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

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

    • La conexión iniciada en la dirección en la que se aplica la regla crea un registro único.
    • Se permite el tráfico de respuesta debido al seguimiento de la conexión. El tráfico de respuesta no genera ningún registro, independientemente de las reglas de firewall en esa dirección.
    • Si la conexión expira desde el firewall (inactiva durante 10 minutos o RST de TCP recibido), es posible que otro paquete en cualquier dirección active el registro.
    • El registro se basa en 5 tuplas. Los marcadores de TCP no influyen en el comportamiento del registro.
  • Denegar + registrar (el registro solo es compatible con TCP y UDP)

    • Los paquetes se descartan (no se inicia ninguna conexión).
    • Cada paquete que corresponde a una tupla única de 5 se registra como un intento de conexión con errores.
    • La misma tupla de 5 se vuelve a registrar cada 5 segundos si continúa recibiendo paquetes.

Solución de problemas

No es posible ver los registros

Si no puedes ver los registros de reglas de firewall en la sección Registros de la consola de Google Cloud, comprueba lo siguiente:

Causa posible: Permisos insuficientes.

Consulta al propietario del proyecto a fin de asegurarte de que tu principal de IAM tenga, al menos, la función de visualizador de registros en el proyecto. Consulta los permisos para obtener más información.
Causa posible: Redes heredadas no admitidas
No puedes usar el registro de reglas de firewall en una red heredada. Solo se admiten las redes de VPC.
Causa posible: Asegúrate de buscar en el proyecto correcto
Dado que los registros de reglas de firewall se almacenan con el proyecto que contiene la red, es importante que te asegures de buscar los registros en el proyecto correcto. Con la VPC compartida, las instancias de VM se crean en los proyectos de servicio, pero usan una red de VPC compartida ubicada en el proyecto host. Para los casos de VPC compartida, los registros de las reglas de firewall se guardan en ese proyecto host.

Si usas una VPC compartida, necesitarás tener los permisos adecuados de acceso al proyecto host para ver los registros de las reglas de firewall. Si bien las instancias de VM se encuentran ubicadas en los proyectos de servicio, los registros de las reglas de firewall de estas instancias se encuentran en el proyecto host.

Entradas de registro faltantes

Causa posible: Es posible que las conexiones no coincidan con la regla de firewall que esperas.

Verifica que la regla de firewall que esperas se encuentre en la lista de reglas de firewall aplicables para una instancia. Usa la consola de Google Cloud para ver los detalles de la instancia relevante y, luego, haz clic en el botón Ver detalles de la sección Interfaces de red en la página de detalles de la instancia de VM. Inspecciona las reglas de firewall aplicables en las secciones Detalles de firewall y rutas de la página Detalles de la interfaz de red de la VM.

Para asegurarte de crear las reglas de firewall de forma correcta, revisa las Reglas de firewall de VPC.

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

Causa posible: Puede que se aplique una regla de mayor prioridad con el registro de las reglas de firewall inhabilitado.

Las reglas de firewall se evalúan en función de sus prioridades. Desde el punto de vista de una instancia de VM, solo una regla de firewall se aplica al tráfico.

Puede que una regla que consideras la regla aplicable de mayor prioridad en realidad no lo sea. En su lugar, se puede aplicar una regla de mayor prioridad que no tenga el registro habilitado.

Si deseas solucionar el problema, puedes habilitar de forma temporal el registro de todas las posibles reglas de firewall aplicables para una VM. Usa la consola de Google Cloud para ver los detalles de la VM relevante y, luego, haz clic en el botón Ver detalles de la sección Interfaces de red en la página de detalles de la instancia de VM. Inspecciona las reglas de firewall aplicables en la sección Detalles de firewall y rutas de la página Detalles de la interfaz de red de la VM y, luego, identifica tus reglas personalizadas en esa lista. Habilita temporalmente el registro de todas estas reglas de firewall personalizadas.

Con el registro habilitado, puedes identificar la regla aplicable. Una vez identificada, asegúrate de inhabilitar el registro de todas las reglas que realmente no lo necesiten.

Metadatos faltantes para algunas entradas de registro

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

Si actualizas una regla de firewall que tiene habilitado el registro de firewall, puede que la propagación de los cambios necesarios para registrar el tráfico que coincide con los componentes actualizados de la regla demore unos minutos en Google Cloud.

Próximos pasos