Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Reforce a segurança da rede: filtragem de egress por Fully Qualified Domain Name (FQDN) com o GCP…

By Chimbu ChinnaduraiJun 11, 20237 min read

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

No mundo de hoje, os dados trafegam entre redes e sistemas sem qualquer barreira. Por isso, ficou essencial adotar medidas de segurança robustas para proteger informações sensíveis. Embora a filtragem do tráfego de entrada costume receber bastante atenção, a filtragem de egress é igualmente importante. Ela permite que as organizações controlem a comunicação de saída da rede, garantindo que apenas conexões autorizadas e seguras sejam estabelecidas.

Uma das principais técnicas para filtragem de egress é a filtragem por Fully Qualified Domain Name (FQDN). Essa abordagem dá aos administradores um controle preciso sobre o tráfego de saída com base em nomes de domínio. Ao combiná-la com o Firewall Policy do Google Cloud Platform (GCP), as organizações ganham um nível excepcional de segurança e gestão dos pontos de egress da rede.

Neste post, mostramos 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 dentro do cloud firewall e oferece muito mais funcionalidades em comparação às VPC firewall rules.

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

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áquinas virtuais (VMs) 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 tráfego com base em diversos critérios e elevar o nível geral de segurança.

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

Confira os principais recursos e benefícios do GCP Firewall Policy:

  • Gerenciamento centralizado: você administra e configura regras de firewall em vários projetos, regiões e redes VPC a partir de uma única interface, simplificando a gestã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 dá um controle granular sobre o tráfego de entrada e saída e permite definir políticas de segurança bem específicas.
  • Atualizações dinâmicas: dá para alterar regras de firewall em tempo real, adaptando-se a novas exigências de segurança sem interromper o tráfego de rede em andamento.
  • Integração com serviços do Google Cloud: o Cloud Firewall Policy se integra de forma nativa 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 traz recursos detalhados de logging e monitoramento, dando visibilidade sobre o tráfego de rede, análise de eventos de segurança e resolução eficiente de problemas.

Arquitetura de referência

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 com a internet.

Também é preciso 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 somente dentro do Google Cloud.

O Private Google Access é habilitado por sub-rede. Ative-o 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

Para essa configuração, é preciso criar zonas de DNS no Cloud DNS para private.googleapis.com. Use restricted.googleapis.com caso esteja usando VPC Service Controls. Consulte as Domain options para mais detalhes.

Crie uma zona de 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

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." \
--type="A" \
--ttl="300" \
--rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11" \
--zone="googleapis-com"

Crie um registro CNAME para *.googleapis.com que aponte para o domínio configurado: private.googleapis.com.

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

Algumas APIs e serviços do Google são oferecidos 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 abrir conexões de saída para a internet. O recomendado é usar o Cloud NAT em vez do internet gateway padrão para ter controle do 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 do 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

Configuração de exemplo do Cloud NAT

Configurar regras do firewall policy

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

  • As hierarchical firewall policies permitem criar e aplicar uma política de firewall consistente em toda a organização. Você pode atribuí-las à organização inteira ou a pastas específicas.
  • As global network firewall policies permitem atualizar em lote todas as regras de firewall agrupando-as em um único objeto de política, e as regras valem para 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 esta 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

Regras de firewall padrão fazem parte da política

Associação da rede à política

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.

Nesta 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 para a internet.

Crie uma regra padrão que libere o tráfego de ingress. O acesso de entrada é permitido sem restrição, mas você pode personalizar a regra conforme 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 que libere a comunicação com faixas de IP privadas. Garanta que a regra contemple também outras faixas privadas customizadas usadas 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 que libere requisições de saída para os 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 que libere 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 negação para egress e confirme que já criou as regras de permissão para os domínios e faixas de IP necessários antes de criar a 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 da firewall policy.

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

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

Neste exemplo, mostramos como usar objetos FQDN nas regras do Firewall Policy para fazer filtragem de egress. O método é extremamente útil para reforçar a segurança da rede e ter controle dos pontos de egress.

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