Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Reforce a segurança de rede: filtragem de egress por FQDN com Google Cloud Firewall Policy

By Chimbu ChinnaduraiJun 21, 20237 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Uma das principais técnicas de filtragem de egress é a filtragem por Fully Qualified Domain Name (FQDN). Essa abordagem dá aos administradores controle preciso sobre o tráfego de saída por nomes de domínio.

fqdn

No mundo atual, os dados trafegam entre redes e sistemas sem qualquer barreira. Por isso, ficou indispensável adotar medidas de segurança robustas para proteger informações sensíveis. Embora a filtragem de tráfego de entrada receba bastante atenção, a importância da filtragem de egress não pode ser subestimada. A filtragem de egress permite que as organizações regulem a comunicação de saída da rede, garantindo que apenas conexões autorizadas e seguras sejam estabelecidas.

Uma das principais técnicas de filtragem de egress é a filtragem por Fully Qualified Domain Name (FQDN). Essa abordagem dá aos administradores controle preciso sobre o tráfego de saída por nomes de domínio. Combinada com o Firewall Policy do Google Cloud Platform (GCP), as organizações ganham segurança e gerenciamento excepcionais dos seus pontos de egress de rede.

Neste post, vamos mostrar o passo a passo para implementar a filtragem de egress por FQDN no GCP usando objetos FQDN nas regras do firewall policy. O Firewall policy é um recurso à parte do cloud firewall e oferece muito mais funcionalidades do que as regras de firewall da VPC.

O recurso de objeto FQDN nas regras do firewall policy está atualmente em preview, e o suporte do GCP não fornece SLAs nem compromissos de suporte técnico.

O que é um Firewall Policy?

O Firewall Policy do Google Cloud Platform (GCP) é um recurso de segurança de rede que permite definir e aplicar regras de firewall centralizadas para suas instâncias de máquina virtual (VM) e redes VPC (Virtual Private Cloud).

Ele oferece uma abordagem unificada e escalável para gerenciar o tráfego de rede, permitindo controlar a comunicação de entrada e saída, filtrar o tráfego com base em diversos critérios e elevar o nível de segurança como um todo.

Com o Firewall Policy, você define regras granulares que especificam quais tipos de tráfego são permitidos ou negados a partir de fatores como faixas de IP, portas, protocolos e até Fully Qualified Domain Names (FQDNs). Assim, você estabelece um perímetro de rede seguro e protege seus recursos na nuvem contra acessos não autorizados ou atividades maliciosas.

Os principais recursos e benefícios do GCP Firewall Policy são:

  • Gerenciamento centralizado: gerencie e configure regras de firewall em vários projetos, regiões e redes VPC a partir de uma única interface centralizada, simplificando a administração das políticas de segurança de rede.
  • Definições flexíveis de regras: o Cloud Firewall Policy permite criar regras com base em endereços IP, faixas, portas, protocolos e FQDNs. Essa flexibilidade entrega controle granular sobre o tráfego de entrada e saída e viabiliza políticas de segurança altamente específicas.
  • Atualizações dinâmicas: ajuste regras de firewall em tempo real, adaptando-se às mudanças nos requisitos de segurança de rede sem interromper o tráfego existente.
  • Integração com serviços do Google Cloud: o Cloud Firewall Policy se integra de forma transparente a outros serviços do Google Cloud, como redes VPC, balanceadores de carga e instâncias de VM, oferecendo controles de segurança consistentes em toda a sua infraestrutura.
  • Logging e monitoramento: o Cloud Firewall Policy entrega recursos detalhados de logging e monitoramento, garantindo visibilidade do tráfego de rede, análise de eventos de segurança e diagnóstico eficaz de eventuais problemas.

Arquitetura de referência

alt-text

Configuração de exemplo

Etapas de implementação da arquitetura de referência

  • Configurar o Private Google Access
  • Cloud NAT para acesso à internet
  • Configurar regras do firewall policy

Configurar o Private Google Access

O Private Google Access permite que recursos dentro de uma rede Virtual Private Cloud (VPC) acessem serviços do Google usando endereços IP privados, sem precisar de conectividade externa à internet.

Também precisamos configurar o Private Google Access com o domínio private.googleapis.com ou restricted.googleapis.com para garantir que as requisições às APIs do Google sejam roteáveis apenas dentro do Google Cloud.

O Private Google Access é habilitado por sub-rede. Habilite o Private Google Access em uma sub-rede existente e atualize as variáveis.

gcloud config set project $PROJECT_ID
gcloud compute networks subnets update $SUBNET_NAME \
--region=$REGION \
--enable-private-ip-google-access

alt-text

Para essa configuração, precisamos criar zonas de Cloud DNS para private.googleapis.com. Use restricted.googleapis.com caso esteja utilizando o VPC Service Control. Consulte Domain options para mais detalhes.

Crie uma zona DNS privada para googleapis.com

gcloud dns managed-zones create googleapis-com \
--dns-name=googleapis.com. \
--description="googleapis-com domain for PGA" \
--visibility=private \
--networks=$NETWORK_NAME

alt-text

Crie um registro A para private.googleapis.com apontando para os seguintes endereços IP: 199.36.153.8 , 199.36.153.9 , 199.36.153.10 , 199.36.153.11 .

gcloud dns record-sets create "private.googleapis.com." \<br>
--type="A" \<br>
--ttl="300" \<br>
--rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11" \<br>
--zone="googleapis-com"

Crie um registro CNAME para *.googleapis.com apontando para o domínio que você configurou: private.googleapis.com .

gcloud dns record-sets create "*.googleapis.com." \
--type="CNAME" \
--ttl="300" \
--rrdatas="private.googleapis.com." \
--zone="googleapis-com"

alt-text

Algumas APIs e serviços do Google são disponibilizados por meio de domínios adicionais, como *.gcr.io , *.gstatic.com , *.pkg.dev e pki.goog.

Consulte a tabela de domínios e faixas de endereços IP em Domain options para verificar se os serviços desses domínios podem ser acessados via private.googleapis.com ou restricted.googleapis.com . Por exemplo, se você usa o Google Kubernetes Engine (GKE), também precisa configurar zonas privadas de *.gcr.io e *.pkg.dev no Cloud DNS.

Configurar o Cloud NAT

O Cloud NAT é um serviço gerenciado, distribuído e definido por software que permite a recursos sem endereços IP externos criarem conexões de saída com a internet. O Cloud NAT é recomendado em vez do gateway de internet padrão para controlar o tráfego de saída.

Crie um Cloud Router na região desejada.

gcloud compute routers create cloud-firewall-policy-demo-cloud-nat \
--network=$NETWORK_NAME \
--region=$REGION

Crie o gateway Cloud NAT.

gcloud compute routers nats create cloud-firewall-policy-demo-cloud-nat \
--router=cloud-firewall-policy-demo-cloud-nat \
--region=$REGION \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

alt-text

Configurar regras do firewall policy

As firewall policies vêm em três variações.

  • As Hierarchical firewall policies permitem criar e aplicar uma política de firewall consistente em toda a sua organização. Você pode atribuir hierarchical firewall policies à organização como um todo ou a pastas individuais.
  • As Global network firewall policies permitem atualizar em lote todas as regras de firewall agrupando-as em um único objeto de policy, e as regras se aplicam a todas as regiões.
  • As Regional network firewall policies permitem criar e aplicar uma política de firewall consistente em todas as sub-redes de uma região da sua rede VPC.

Crie uma Global Network firewall policy para essa configuração.

gcloud compute network-firewall-policies create global-demo-firewall-policy \
--global

Crie uma nova associação entre a firewall policy e a rede de destino.

gcloud compute network-firewall-policies associations create \
--firewall-policy=global-demo-firewall-policy \
--network=$NETWORK_NAME --global-firewall-policy

alt-text

As regras de firewall padrão fazem parte da policy

alt-text

Associação da rede com a policy

Agora temos todos os recursos necessários para aplicar a filtragem de egress por FQDN usando os objetos FQDN nas regras do firewall policy. O próximo passo é adicionar as regras necessárias à firewall policy.

No momento, nenhuma restrição é aplicada ao tráfego de egress, e as instâncias na rede têm acesso irrestrito à internet.

alt-text

alt-text

Para essa configuração, vamos liberar o tráfego de saída apenas para www.example.com e para o endereço IP público atribuído a private.googleapis.com, bloqueando o restante do tráfego de internet.

Crie uma regra padrão de ingress allow. O acesso de entrada fica liberado sem restrição, mas ajuste a regra conforme a sua necessidade.

gcloud compute network-firewall-policies rules create 1001 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="INGRESS" \
--description="Allow ingress traffic" \
--src-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy

Crie uma regra de firewall para liberar a comunicação com faixas de IP privadas. Garanta que a regra inclua qualquer outra faixa privada customizada usada no seu ambiente, para que a comunicação entre instâncias não seja afetada.

gcloud compute network-firewall-policies rules create 999 \
--firewall-policy="global-demo-firewall-policy" -\
-action="allow" \
--direction="EGRESS" \
--description="Allow communication with private IP ranges" \
--dest-ip-ranges="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \
--layer4-configs="all" \
--global-firewall-policy

Crie uma regra de firewall policy para liberar requisições de saída aos IPs públicos de private.googleapis.com. Esses IPs são roteáveis apenas dentro do Google Cloud.

gcloud compute network-firewall-policies rules create 998 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="Allow DNS resolution requests to private.googleapis.com" \
--dest-ip-ranges="199.36.153.8/32,199.36.153.9/32,199.36.153.10/32,199.36.153.11/32" \
--layer4-configs="tcp:443" \
--global-firewall-policy

Crie uma regra de firewall policy para liberar requisições de saída para www.example.com.

gcloud compute network-firewall-policies rules create 997 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="FQDN egress filtering rules" \
--dest-fqdns="www.example.com" \
--layer4-configs="tcp:80,tcp:443" \
--global-firewall-policy

Crie uma regra padrão de egress deny e garanta que as regras de allow para os domínios e faixas de IP necessários já estejam criadas antes da regra de Deny.

gcloud compute network-firewall-policies rules create 1000 \
--firewall-policy="global-demo-firewall-policy" \
--action="deny" \
--direction="EGRESS" \
--description="Deny all Egress traffic" \
--dest-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy

Lista consolidada das regras do Firewall policy.

alt-text

As regras podem levar até 30 segundos para entrar em vigor; teste a conectividade de rede a partir da instância GCE ou de pods do GKE. As requisições de saída só são permitidas para os domínios e faixas de IP definidos nas regras do firewall policy.

alt-text

Resultados dos testes após a aplicação das regras do firewall policy

Neste exemplo, mostramos como objetos FQDN podem ser usados em regras de Firewall policy para filtragem de egress. Esse método é extremamente útil para reforçar a segurança de rede e controlar os pontos de egress.

Para mais informações sobre o Firewall Policy, consulte a página do produto.