El almacenamiento de registros de reglas de cortafuegos te permite auditar, verificar y analizar los efectos de estas. Por ejemplo, puedes determinar si una regla de firewall diseñada para denegar el tráfico funciona correctamente. El almacenamiento de registros de reglas de cortafuegos también es útil si necesitas determinar cuántas conexiones se ven afectadas por una regla de cortafuegos concreta.
Puedes habilitar el registro de reglas de cortafuegos de forma individual para cada regla de cortafuegos cuyas conexiones necesites registrar. El registro de reglas de cortafuegos es una opción para cualquier regla de cortafuegos, independientemente de la acción (allow
o deny
) o la dirección (entrada o salida) de la regla.
El registro de reglas de cortafuegos registra el tráfico que entra y sale de las instancias de máquina virtual (VM) de Compute Engine. como los clústeres de Google Kubernetes Engine (GKE) y las instancias del entorno flexible de App Engine. Google Cloud
Cuando habilitas el registro de una regla de cortafuegos, Google Cloud crea una entrada llamada registro de conexión cada vez que la regla permite o deniega el tráfico. Puedes ver estos registros en Cloud Logging y exportarlos a cualquier destino compatible con la exportación desde este servicio.
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 cortafuegos que se aplicó al tráfico.
La función de registro de reglas de cortafuegos está disponible tanto para las reglas de cortafuegos de VPC como para las políticas de cortafuegos jerárquicas.
Para obtener información sobre cómo ver los registros, consulta Usar el almacenamiento de registros de reglas de cortafuegos.
Especificaciones
El almacenamiento de registros de reglas de cortafuegos tiene las siguientes especificaciones:
El almacenamiento de registros de reglas de cortafuegos se puede habilitar en los siguientes casos:
Reglas de cortafuegos de políticas de cortafuegos jerárquicas, políticas de cortafuegos de red globales y políticas de cortafuegos de red regionales asociadas a una red de VPC normal.
Reglas de cortafuegos de VPC en una red de VPC normal.
Reglas de cortafuegos de las políticas de cortafuegos de red regionales que están asociadas a una red de VPC RoCE.
El almacenamiento de registros de reglas de cortafuegos no admite lo siguiente:
Reglas de cortafuegos de VPC en redes antiguas.
Reglas implícitas de denegación de entrada y de aceptación de salida de una red de VPC normal.
Reglas implícitas de entrada y salida de una red de VPC RoCE.
El registro de reglas de cortafuegos solo registra las conexiones TCP y UDP. Aunque puedes crear una regla de cortafuegos que se aplique a otros protocolos, no puedes registrar sus conexiones. Si también quieres registrar otros protocolos, te recomendamos que uses la replicación de paquetes.
Las entradas de registro se escriben desde la perspectiva de las VMs. Las entradas de registro solo se crean si una regla de cortafuegos tiene habilitado el registro y si la regla se aplica al tráfico enviado a la VM o desde ella. Las entradas se crean de acuerdo con los límites de registro de conexiones en la medida de lo posible.
Número de conexiones que puede registrar el almacenamiento de registros de reglas de cortafuegos por unidad de tiempo:
Se basa en el tipo de máquina de las redes VPC normales.
Depende de la acción de monitorización o registro de la regla de cortafuegos para las redes de VPC de RoCE.
Los cambios en las reglas de cortafuegos se pueden consultar en los registros de auditoría de VPC.
Ejemplos de registro
Se genera una entrada de registro cada vez que se aplica una regla de cortafuegos con el registro habilitado al tráfico. Un flujo de paquetes determinado puede generar más de una entrada de registro en total. Sin embargo, desde el punto de vista de una VM determinada, solo se puede generar una entrada de registro como máximo si la regla de cortafuegos que se aplica a ella tiene habilitado el registro.
En los siguientes ejemplos se muestra cómo funcionan los registros de firewall.
Ejemplo de denegación de salida
En este ejemplo:
- Se tiene en cuenta el tráfico entre las instancias de VM de la red de VPC
example-net
del proyectoexample-proj
. - Las dos instancias de VM son las siguientes:
- VM1 en la zona
us-west1-a
con la dirección IP10.10.0.99
en la regiónwest-subnet
(us-west1
). - VM2 en la zona
us-east1-b
con la dirección IP10.20.0.99
eneast-subnet
(regiónus-east1
).
- VM1 en la zona
- Regla A: una regla de cortafuegos de salida de denegación tiene como destino todas las instancias de la red, como destino
10.20.0.99
(VM2) y se aplica al puerto TCP80
.- El registro está habilitado en esta regla.
- Regla B: una regla de cortafuegos de entrada que permite el acceso tiene como destino todas las instancias de la red, como origen
10.10.0.99
(VM1) y se aplica al puerto TCP80
.- El registro también está habilitado para esta regla.
Puede usar los siguientes comandos de gcloud
para crear las reglas de cortafuegos:
Regla A: regla de denegación de salida para el puerto TCP
80
, aplicable a todas las instancias, destino10.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
Regla B: regla de entrada que permite el puerto TCP
80
, aplicable a todas las instancias, fuente10.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
Supongamos que la VM1 intenta conectarse a la VM2 en el puerto TCP 80
. Se registran las siguientes reglas de firewall:
- Se genera una entrada de registro para la regla A desde la perspectiva de VM1 mientras VM1 intenta conectarse a
10.20.0.99
(VM2). - Como la regla A bloquea el tráfico, no se tiene en cuenta la regla B, por lo que no hay ninguna entrada de registro para la regla B desde la perspectiva de la VM2.
Se registra el siguiente registro de firewall.
Campo | Valores |
---|---|
conexión | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposición | RECHAZADA |
rule_details | reference = "network:example-net/firewall:rule-a" priority = 10 action = DENY destination_range = 10.20.0.99/32 ip_port_info = tcp:80 direction = egress |
instancia | project_id="example-proj" instance_name=VM1 region=us-west1 zone=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 region=us-east1 zone=us-east1-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | No hay información. Este campo solo se usa si el destino está fuera de tu red de VPC. |
Ejemplo de reglas de salida y entrada
En este ejemplo:
- Se tiene en cuenta el tráfico entre las instancias de VM de la red de VPC
example-net
del proyectoexample-proj
. - Las dos instancias de VM son las siguientes:
- VM1 en la zona
us-west1-a
con la dirección IP10.10.0.99
en la regiónwest-subnet
(us-west1
). - VM2 en la zona
us-east1-b
con la dirección IP10.20.0.99
eneast-subnet
(regiónus-east1
).
- VM1 en la zona
- Regla A: una regla de cortafuegos de salida que permite el tráfico tiene como destino todas las instancias de la red,
10.20.0.99
(VM2) y se aplica al puerto TCP80
.- El registro está habilitado en esta regla.
- Regla B: una regla de cortafuegos de entrada que permite el acceso tiene como destino todas las instancias de la red, como origen
10.10.0.99
(VM1) y se aplica al puerto TCP80
.- El registro también está habilitado para esta regla.
Puede usar los siguientes comandos de gcloud
para crear las dos reglas de cortafuegos:
Regla A: regla de salida que permite el puerto TCP
80
, aplicable a todas las instancias, destino10.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
Regla B: regla de entrada que permite el puerto TCP
80
, aplicable a todas las instancias, fuente10.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
Supongamos que la VM1 intenta conectarse a la VM2 en el puerto TCP 80
. Se registran las siguientes reglas de firewall:
- Se genera una entrada de registro para la regla A desde la perspectiva de VM1 mientras VM1 se conecta a
10.20.0.99
(VM2). - Se genera una entrada de registro para la regla B desde la perspectiva de VM2 mientras VM2 permite las conexiones entrantes de
10.10.0.99
(VM1).
VM1 informa del siguiente registro de firewall.
Campo | Valores |
---|---|
conexión | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposición | PERMITIDA |
rule_details | reference = "network:example-net/firewall:rule-a" priority = 10 action = ALLOW destination_range = 10.20.0.99/32 ip_port_info = tcp:80 direction = egress |
instancia | project_id="example-proj" instance_name=VM1 region=us-west1 zone=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 region=us-east1 zone=us-east1-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | No hay información. Este campo solo se usa si el destino está fuera de tu red de VPC. |
VM2 informa del siguiente registro de firewall.
Campo | Valores |
---|---|
conexión | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposición | PERMITIDA |
rule_details | reference = "network:example-net/firewall:rule-b" priority = 10 action = ALLOW source_range = 10.10.0.99/32 ip_port_info = tcp:80 direction = ingress |
instancia | project_id="example-proj" instance_name=VM2 region=us-east1 zone=us-east1-b |
vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_instance | project_id="example-proj" instance_name=VM1 region=us-west1 zone=us-west1-a |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=west-subnet |
remote_location | No hay información. Este campo solo se usa si el destino está fuera de tu red de VPC. |
Ejemplo de entrada de Internet
En este ejemplo:
- Se considera el tráfico de un sistema que está fuera de la red de VPC
example-net
a una instancia de VM de esa red. La red se encuentra en el proyectoexample-proj
. - El sistema de Internet tiene la dirección IP
203.0.113.114
. - La VM1 de la zona
us-west1-a
tiene la dirección IP10.10.0.99
en la regiónwest-subnet
(us-west1
). - Regla C: una regla de cortafuegos de entrada que permite el acceso tiene como destino todas las instancias de la red, como origen cualquier dirección IP (
0.0.0.0/0
) y se aplica al puerto TCP80
.- El registro está habilitado en esta regla.
- Regla D: una regla de cortafuegos de denegación de salida tiene como destino todas las instancias de la red, 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.
Puede usar los siguientes comandos de gcloud
para crear las reglas de cortafuegos:
Regla C: regla de entrada que permite el puerto TCP
80
, aplicable a todas las instancias, cualquier origen: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
Regla D: regla de denegación de salida para todos los protocolos, aplicable a todas las instancias y 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
Supongamos que el sistema con la dirección IP 203.0.113.114
intenta conectarse a la VM1 en el puerto TCP 80
. Esto es lo que ocurre:
- Se genera una entrada de registro para la regla C desde la perspectiva de VM1 mientras VM1 acepta el tráfico de
203.0.113.114
. - A pesar de la regla D, la VM1 puede responder a la solicitud entrante porque las reglas de cortafuegos tienen estado.Google Cloud Si se permite la solicitud entrante, las respuestas establecidas no se pueden bloquear con ningún tipo de regla de salida.
- Como la regla D no se aplica, no se tiene en cuenta, por lo que no hay ninguna entrada de registro para la regla D.
Se registra el siguiente registro de firewall.
Campo | Valores |
---|---|
conexión | src_ip=203.0.113.114 src_port=[EPHEMERAL_PORT] dest_ip=10.10.0.99 dest_port=80 protocol=6 |
disposición | PERMITIDA |
rule_details | reference = "network:my-vpc/firewall:rule-c" priority = 10 action = ALLOW source_range = 0.0.0.0/0 ip_port_info = tcp:80 direction = ingress |
instancia | project_id="example-proj" instance_name=VM1 region=us-west1 zone=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 los registros de cortafuegos
De acuerdo con las especificaciones, se crea una entrada de registro en Cloud Logging por cada regla de cortafuegos que tenga el registro habilitado si esa regla se aplica al tráfico hacia o desde una instancia de VM. Los registros se incluyen en el campo de carga útil de JSON de un LogEntry de Logging.
Los registros de registro contienen campos base, que son los campos principales de cada registro de registro, y campos de metadatos que añaden información adicional. Puedes controlar si se incluyen los campos de metadatos. Si los omite, puede ahorrar en costes de almacenamiento.
Algunos campos de registro admiten valores que también son campos. Estos campos pueden tener más de un dato en un campo determinado. Por ejemplo, el campo connection
tiene el formato IpConnection
, que contiene la dirección IP y el puerto de origen y de destino, además del protocolo, en un solo campo. Estos campos se describen en las siguientes tablas.
Campo | Descripción | Tipo de campo: metadatos básicos u opcionales |
---|---|---|
conexión | IpConnection Quíntupla que describe la dirección IP de origen y de destino, el puerto de origen y de destino, y el protocolo IP de esta conexión. |
Base |
disposición | string Indica si la conexión se ha ALLOWED o
DENIED . |
Base |
rule_details | RuleDetails Detalles de la regla que se ha aplicado a esta conexión. |
|
Campo rule_details.reference |
Base | |
Otros campos de detalles de la regla | Metadatos | |
instancia | InstanceDetails Detalles de la instancia de VM. En una configuración de VPC compartida, project_id corresponde al proyecto de servicio. |
Metadatos |
vpc | VpcDetails Detalles de la red de VPC. En una configuración de VPC compartida, project_id corresponde al proyecto del host. |
Metadatos |
remote_instance | InstanceDetails Si el endpoint remoto de la conexión era una VM ubicada en Compute Engine, este campo se rellena con los detalles de la instancia de VM. |
Metadatos |
remote_vpc | VpcDetails Si el endpoint remoto de la conexión era una VM ubicada en una red de VPC, este campo se rellena con los detalles de la red. |
Metadatos |
remote_location | GeographicDetails Si el endpoint remoto de la conexión era externo a la red de VPC, este campo se rellena con los metadatos de ubicación disponibles. |
Metadatos |
IpConnection
Campo | Tipo | Descripción |
---|---|---|
src_ip | cadena | Dirección IP de origen. Si la fuente es una máquina virtual de Compute Engine, src_ip es la dirección IP interna principal o una dirección de un intervalo de IPs de alias de la interfaz de red de la máquina virtual. No se muestra la dirección IP externa. En los registros se muestra la dirección IP de la VM tal como la ve la VM en el encabezado del paquete, igual que si ejecutaras TCP dump en la VM. |
src_port | entero | Puerto de origen |
dest_ip | cadena | Dirección IP de destino. Si el destino es una Google Cloud máquina virtual,
dest_ip es la dirección IP interna principal o una dirección
de un intervalo de IPs de alias de la interfaz de red de la máquina virtual. La dirección IP externa no se muestra aunque se haya usado para establecer la conexión. |
dest_port | entero | Puerto de destino |
protocolo | entero | Protocolo IP de la conexión |
RuleDetails
Campo | Tipo | Descripción |
---|---|---|
referencia | cadena | Referencia a la regla de cortafuegos. Formato:"network:{network name}/firewall:{firewall_name}" |
prioridad | entero | La prioridad de la regla de cortafuegos. |
acción | cadena | PERMITIR o DENEGAR |
source_range[ ] | cadena | Lista de intervalos de origen a los que se aplica la regla de cortafuegos. |
intervalo_destino[ ] | cadena | Lista de intervalos de destino a los que se aplica la regla de cortafuegos. |
ip_port_info[ ] | IpPortDetails | Lista de protocolos IP e intervalos de puertos aplicables a las reglas. |
direction | cadena | Dirección a la que se aplica la regla de cortafuegos (entrada o salida). |
source_tag[ ] | cadena | Lista de todas las etiquetas de origen a las que se aplica la regla de cortafuegos. |
target_tag[ ] | cadena | Lista de todas las etiquetas de destino a las que se aplica la regla de cortafuegos. |
source_service_account[ ] | cadena | Lista de todas las cuentas de servicio de origen a las que se aplica la regla de cortafuegos. |
target_service_account[ ] | cadena | Lista de todas las cuentas de servicio de destino a las que se aplica la regla de cortafuegos. |
source_region_code[ ] | cadena | Lista de todos los códigos de país de origen a los que se aplica la regla de cortafuegos. |
destination_region_code[ ] | cadena | Lista de todos los códigos de país de destino a los que se aplica la regla de cortafuegos. |
source_fqdn[ ] | cadena | Lista de todos los nombres de dominio de origen a los que se aplica la regla de cortafuegos. |
destination_fqdn[ ] | cadena | Lista de todos los nombres de dominio de destino a los que se aplica la regla de cortafuegos. |
source_threat_intelligence[ ] | cadena | Lista de todos los nombres de las listas de Google Threat Intelligence de origen a las que se aplica la regla de cortafuegos. |
destination_threat_intelligence[ ] | cadena | Lista de todos los nombres de las listas de Google Threat Intelligence de destino a las que se aplica la regla de cortafuegos. |
source_address_groups[ ] | cadena | Lista de todos los grupos de direcciones de origen a los que se aplica la regla de cortafuegos. |
destination_address_groups[ ] | cadena | Lista de todos los grupos de direcciones de destino a los que se aplica la regla de cortafuegos. |
IpPortDetails
Campo | Tipo | Descripción |
---|---|---|
ip_protocol | cadena | Protocolo IP al que se aplica la regla de cortafuegos. "ALL" si se aplica a todos los protocolos. |
port_range[ ] | cadena | Lista de intervalos de puertos aplicables a las reglas. Por ejemplo, 8080-9090 . |
InstanceDetails
Campo | Tipo | Descripción |
---|---|---|
project_id | cadena | ID del proyecto que contiene la VM |
vm_name | cadena | Nombre de instancia de la VM |
región | cadena | Región de la VM |
zona | cadena | Zona de la VM |
VpcDetails
Campo | Tipo | Descripción |
---|---|---|
project_id | cadena | ID del proyecto que contiene la red |
vpc_name | cadena | Red en la que opera la VM |
subnetwork_name | cadena | Subred en la que opera la VM |
GeographicDetails
Campo | Tipo | Descripción |
---|---|---|
continente | cadena | Continente de los endpoints externos |
país | cadena | País de los puntos finales externos |
región | cadena | Región de los endpoints externos |
ciudad | cadena | Ciudad para endpoints externos |
Siguientes pasos
- Para configurar el registro y ver los registros, consulta Utilizar el almacenamiento de registros de reglas de cortafuegos.
- Para obtener información valiosa sobre cómo se usan tus reglas de cortafuegos, consulta Firewall Insights.
- Para almacenar, buscar, analizar, monitorizar y recibir alertas sobre datos y eventos de registro, consulta Cloud Logging.
- Para enrutar entradas de registro, consulta Configurar y gestionar sumideros.