Visão geral da geração de registros de regras de firewall

O recurso de geração de registros de regras de firewall permite auditar, verificar e analisar os efeitos das suas regras de firewall. Por exemplo, você pode determinar se uma regra de firewall criada para negar tráfego está funcionando conforme o esperado. A geração de registros também é útil quando você precisa determinar quantas conexões são afetadas por uma determinada regra de firewall.

Ative a geração de registros de regra de firewall individualmente para cada regra de firewall que tenha conexões que precisam ser registradas. A geração de registros de regras de firewall é uma opção para qualquer regra de firewall, independentemente da ação (permitir ou negar) ou da direção (entrada ou saída) da regra.

Quando você ativa a geração de registros de uma regra de firewall, o Google Cloud Platform (GCP) cria uma entrada chamada registro de conexão toda vez que a regra permite ou nega tráfego. Você pode exportar esses registros de conexão para o Stackdriver Logging, o Cloud Pub/Sub ou o BigQuery para análise.

Cada registro de conexão contém os endereços IP de origem e de destino, o protocolo e as portas, a data e a hora e uma referência à regra de firewall aplicada ao tráfego.

Especificações

A geração de registros de regras de firewall tem as seguintes especificações:

  • Você só pode ativar a geração de registros de regras de firewall para regras em uma rede VPC. Redes legadas não são compatíveis.
  • A geração de registros de regras de firewall é compatível apenas com as conexões TCP e UDP. Você pode criar uma regra de firewall aplicável a outros protocolos, mas não será possível registrar suas conexões.
  • Não é possível ativar a geração de registros de regras de firewall para as regras padrão criadas automaticamente na rede padrão. Se você precisar registrar conexões que correspondam a essas regras, primeiro substitua as regras padrão por outras personalizadas. Ative a geração de registros de regras de firewall ao criar as regras de substituição personalizadas.
  • Não é possível ativar a geração de registros de regras de firewall para regras implícitas de negação de entrada e de permissão de saída.
  • As entradas de registro são gravadas da perspectiva das instâncias da VM. As entradas de registro só serão criadas se uma regra de firewall tiver a geração de registros ativada e se a regra se aplicar ao tráfego enviado para a VM ou a partir dela. As entradas são criadas de acordo com os limites de geração de registros de conexão em uma base de melhor esforço.

Limites de geração de registros de conexão

O número máximo de conexões que podem ser registradas por instância de VM depende do tipo de máquina. Os limites de geração de registros de conexão são expressos como um número máximo de conexões que podem ser registradas em um intervalo de cinco segundos.

Tipo de máquina de instância Número máximo de conexões registradas em um intervalo de 5 segundos
f1-micro 100 conexões
g1-small 250 conexões
Tipos de máquina com 1 a 8 vCPUs 500 conexões por vCPU
Tipos de máquinas com mais de 8 vCPUs 4.000 (500×8) conexões

Exemplos de geração de registros

Uma entrada de registro é gerada sempre que uma regra de firewall com a geração de registros ativada se aplica ao tráfego. Um determinado fluxo de pacotes pode gerar mais de uma entrada de registro no total. No entanto, da perspectiva de uma determinada VM, apenas uma entrada de registro pode ser gerada se a regra de firewall que se aplica a ela tiver o registro ativado.

Os exemplos a seguir demonstram como os registros de firewall funcionam.

Exemplo de negação de saída

Neste exemplo:

  • O tráfego entre as instâncias de VM na rede VPC example-net no projeto example-proj é considerado.
  • As duas instâncias de VM são:
    • VM1 na zona us-west1-a com o endereço IP 10.10.0.99 em west-subnet (região us-west1).
    • VM2 na zona us-east1-a com o endereço IP 10.20.0.99 em east-subnet (região us-east1).
  • Regra A: uma regra de negação de saída de firewall tem um destino em todas as instâncias na rede, um destino em 10.20.0.99 (VM2) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra B: uma regra de permissão de entrada de firewall tem um destino em todas as instâncias na rede, uma origem em 10.10.0.99 (VM1) e se aplica à porta TCP 80.
    • A geração de registros também está ativada para essa regra.

Os seguintes comandos do gcloud podem ser usados para criar as regras de firewall:

  1. Regra A: regra de negação de saída para TCP 80, aplicável a todas as instâncias, 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. Regra B: regra de permissão de entrada para TCP 80, aplicável a todas as instâncias, origem 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
    
conexão vm1 a vm2 (clique para ampliar)
Conexão VM1 a VM2 (clique para ampliar)

Suponha que a VM1 tente se conectar à VM2 na porta TCP 80. As seguintes regras de firewall são registradas:

  • Uma entrada de registro para a regra A da perspectiva da VM1 é gerada como tentativas da VM1 de se conectar a 10.20.0.99 (VM2).
  • Como a regra A bloqueia o tráfego, a regra B nunca é considerada. Portanto, não há entrada de registro para a regra B da perspectiva da VM2.

O seguinte registro de firewall será gerado neste exemplo:

Campo Valores
connection src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposition DENIED
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
instance 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-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Sem informações. Este campo é usado apenas quando o destino está fora da sua rede VPC.

Exemplo de permissão de saída e permissão de entrada

Neste exemplo:

  • O tráfego entre as instâncias de VM na rede VPC example-net no projeto example-proj é considerado.
  • As duas instâncias de VM são:
    • VM1 na zona us-west1-a com o endereço IP 10.10.0.99 em west-subnet (região us-west1).
    • VM2 na zona us-east1-a com o endereço IP 10.20.0.99 em east-subnet (região us-east1).
  • Regra A: uma regra de permissão de saída de firewall tem um destino em todas as instâncias na rede, um destino em 10.20.0.99 (VM2) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra B: uma regra de permissão de entrada de firewall tem um destino em todas as instâncias na rede, uma origem em 10.10.0.99 (VM1) e se aplica à porta TCP 80.
    • A geração de registros também está ativada para essa regra.

Os seguintes comandos do gcloud podem ser usados para criar as duas regras de firewall:

  1. Regra A: regra de permissão de saída para TCP 80, aplicável a todas as instâncias, 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. Regra B: regra de permissão de entrada para TCP 80, aplicável a todas as instâncias, origem 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
    
conexão vm1 a vm2 (clique para ampliar)
Conexão VM1 a VM2 (clique para ampliar)

Suponha que a VM1 tente se conectar à VM2 na porta TCP 80. As seguintes regras de firewall são registradas:

  • Uma entrada de registro para a regra A da perspectiva da VM1 é gerada quando a VM1 se conecta a 10.20.0.99 (VM2).
  • Uma entrada de registro para a regra B da perspectiva da VM2 é gerada, já que a VM2 permite conexões de entrada a partir de 10.10.0.99 (VM1).

O seguinte registro de firewall relatado pela VM1 é gerado:

Campo Valores
connection src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposition ALLOWED
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
instance 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-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Sem informações. Este campo é usado apenas quando o destino está fora da sua rede VPC.

O seguinte registro de firewall relatado pela VM2 é gerado:

Campo Valores
connection src_ip=10.10.0.99, src_port=[EPHEMERAL_PORT], dest_ip=10.20.0.99, dest_port=80, protocol=tcp
disposition ALLOWED
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
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=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
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=subnet-west
remote_location Sem informações. Este campo é usado apenas quando o destino está fora da sua rede VPC.

Exemplo de entrada de Internet

Neste exemplo:

  • O tráfego de um sistema fora da rede VPC example-net para uma instância de VM nessa rede é considerado. A rede está no projeto example-proj.
  • O sistema na Internet tem endereço IP 203.0.113.114.
  • A VM1 na zona us-west1-a tem endereço IP 10.10.0.99 em west-subnet (região us-west1).
  • Regra C: uma regra de permissão de entrada de firewall tem um destino em todas as instâncias na rede, uma origem em qualquer endereço IP (0.0.0.0/0) e se aplica à porta TCP 80.
    • A geração de registros está ativada para essa regra.
  • Regra D: uma regra de negação de saída de firewall tem um destino em todas as instâncias na rede, um destino em qualquer endereço IP (0.0.0.0/0) e é aplicável a todos os protocolos.
    • A geração de registros também está ativada para essa regra.

Os seguintes comandos do gcloud podem ser usados para criar as regras de firewall:

  1. Regra C: regra de permissão de entrada para TCP 80, aplicável a todas as instâncias, qualquer origem:

    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. Regra D: regra de negação de saída para todos os protocolos, aplicável a todas as instâncias, a qualquer 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
    
conexão de internet para VM (clique para ampliar)
Conexão de Internet para VM (clique para ampliar)

Suponha que o sistema com o endereço IP 203.0.113.114 tente se conectar à VM1 na porta TCP 80. O seguinte acontece:

  • Uma entrada de registro para a regra C da perspectiva da VM1 é gerada conforme a VM1 aceita tráfego de 203.0.113.114.
  • Desconsiderando a regra D, a VM1 tem permissão para responder à solicitação recebida porque as regras de firewall do GCP estão com estado. As respostas estabelecidas não podem ser bloqueadas por nenhum tipo de regra de saída desde que a solicitação recebida seja permitida.
  • Como a regra D não é aplicável, ela nunca é considerada. Portanto, não há entrada de registro para a regra D.

O seguinte registro de firewall será gerado neste exemplo:

Campo Valores
connection src_ip=203.0.113.114, src_port=[EPHEMERAL_PORT], dest_ip=10.10.0.99, dest_port=80, protocol=tcp
disposition ALLOWED
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
instance 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 continent
country
region
city

Formato de registro de firewall

Sujeita às especificações, uma entrada de registro é criada no Stackdriver Logging para cada regra de firewall que tenha a geração de registros ativada, caso essa regra se aplique ao tráfego de ou para uma instância de VM.

As regras de firewall seguem o formato indicado pela tabela abaixo.

Os campos de payload JSON do LogEntry do Stackdriver contêm mensagens no formato a seguir.

Campo Descrição
connection IpConnection
Hash de cinco tuplas descrevendo o endereço IP de origem e destino, a porta de origem e destino e o protocolo IP dessa conexão.
disposition string
Indica se a conexão foi PERMITIDA ou NEGADA.
rule_details RuleDetails
Detalhes da regra aplicada a essa conexão.
instance InstanceDetails
Detalhes da instância de VM. Observe que, em uma configuração de VPC compartilhada, project_id corresponde ao project_id do projeto de serviço.
vpc VpcDetails
Detalhes da rede VPC. Observe que, em uma configuração de VPC compartilhada, project_id corresponde ao project_id do projeto host.
remote_instance InstanceDetails
Se o terminal remoto da conexão era uma VM localizada no Google Compute Engine, esse campo será preenchido com detalhes da instância da VM.
remote_vpc VpcDetails
Se o ponto de extremidade remoto da conexão for uma VM localizada na VPC do Google, este campo será preenchido com detalhes da rede VPC.
remote_location GeographicDetails
Se a origem da conexão for externa à VPC do Google, este campo será preenchido com os metadados de local disponíveis.

IpConnection

Campo Tipo Descrição
src_ip string Endereço IP de origem. Se a origem for uma VM do Compute Engine, será o endereço IP interno da interface. O endereço IP público externo não é mostrado. O registro mostra o IP da VM conforme a VM o vê no cabeçalho do pacote, da forma que seria caso você executasse o despejo de TCP na VM.
src_port número inteiro Porta de origem
dest_ip string Endereço IP de destino. Se o destino for uma VM do GCP, será o endereço IP privado interno da interface. O endereço IP público externo não é mostrado, mesmo que tenha sido usado na conexão.
dest_port número inteiro Porta de destino
protocol número inteiro Protocolo IP da conexão

RuleDetails

Campo Tipo Descrição
reference string Referência à regra de firewall. Formato: “rede: {nome da rede}/firewall: {nome_firewall}”.
priority número inteiro A prioridade da regra de firewall.
ação string PERMITIR ou NEGAR
source_range[] string Lista de intervalos de origem a que a regra de firewall se aplica.
destination_range[] string Lista de intervalos de destino a que o firewall se aplica.
ip_port_info[] IpPortDetails Lista de protocolos IP e intervalos de porta aplicáveis a regras.
direction string A direção a que o firewall se aplica (ENTRADA ou SAÍDA)
source_tag[] string Lista de todas as tags de origem a que a regra de firewall se aplica.
target_tag[] string Lista de todas as tags de destino a que a regra de firewall se aplica.
source_service_account[] string Lista de todas as contas de serviço de origem a que a regra de firewall se aplica.
target_service_account[] string Lista de todas as contas de serviço de destino a que a regra de firewall se aplica.

IpPortDetails

Campo Tipo Descrição
ip_protocol string Protocolo IP ao qual a regra de firewall se aplica. “ALL” se aplica a todos os protocolos.
port_range[] string Lista de intervalos de portas aplicáveis a regras. Por exemplo: "8080-9090"

InstanceDetails

Campo Tipo Descrição
project_id string Código do projeto que contém a VM
vm_name string Nome da instância da VM
region string Região da VM
zone string Zona da VM

VpcDetails

Campo Tipo Descrição
project_id string Código do projeto que contém a rede
vpc_name string Rede em que a VM está operando
subnetwork_name string Sub-rede em que a VM está operando

GeographicDetails

Campo Tipo Descrição
continent string Continente para pontos de extremidade externos
country string País para pontos de extremidade externos
region string Região para pontos de extremidade externos
city string Cidade para pontos de extremidade externos

A seguir

Esta página foi útil? Conte sua opinião sobre: