Compartilhar via


Implementar Zero Trust DNS

Este artigo fornece orientações abrangentes para implementar Zero Trust DNS (ZTDNS) em ambientes Windows 11 Enterprise, incluindo passos obrigatórios, opções de configuração e considerações de implementação.

Pré-requisitos

Antes de implementar o ZTDNS, certifique-se de que o seu ambiente cumpre os seguintes requisitos:

Requisitos de sistema

  • Windows 11 Compilação: o dispositivo tem de executar a compilação mais recente de Windows 11 Enterprise ou Windows 11 Education.
  • Privilégios de administrador: todos os comandos de configuração ZTDNS requerem acesso ao nível do administrador.
  • Servidor DNS encriptado acessível: o servidor DNS encriptado tem de estar acessível a partir do dispositivo.

Requisitos do servidor DNS de proteção

Para que os servidores DNS sejam compatíveis com o ZTDNS, têm de cumprir estes requisitos:

  • Suporte de DNS encriptado: tem de suportar DNS através de PROTOCOLOS HTTPS (DoH) ou DNS através de protocolos TLS (DoT).
  • Imposição de política: só deve resolve nomes de domínio permitidos com base em políticas organizacionais.
  • Autenticação de cliente com mTLS (Opcional): deve suportar o TLS mútuo (mTLS) para políticas de resolução por cliente com certificados de cliente.

Exceções manuais

Determinadas aplicações e serviços que não utilizam DNS para detetar pontos finais requerem exceções de permissão manual para que os intervalos de endereços IP necessários continuem a funcionar após a ativação do ZTDNS. As aplicações do Microsoft 365, como o Exchange, SharePoint, Teams e Office, requerem exceções manuais para intervalos de endereços IP listados aqui.

Modos de implementação

O ZTDNS suporta dois modos operacionais:

  • Modo de auditoria: regista todo o comportamento ZTDNS esperado sem bloquear o tráfego de saída. Este modo ajuda os administradores a compreender os padrões de tráfego antes da imposição total. Vivamente recomendado para testes iniciais e validação, fornece visibilidade sobre potenciais cenários de bloqueio sem interromper a conectividade de rede.
  • Modo de imposição: bloqueia ativamente o tráfego não fidedigno e mantém um registo abrangente. Ative apenas o modo de imposição depois de testar exaustivamente o modo de auditoria e confirmar se todas as exceções necessárias estão configuradas.

Implementar o ZTDNS com netsh

Siga estes passos para implementar o ZTDNS:

Passo 1: Configurar as definições de DNS da aplicação

Certifique-se de que todas as aplicações utilizam o cliente DNS do Windows em vez de implementações DNS personalizadas:

  • Microsoft Edge: Configurar a política BuiltInDnsClientEnabled para desativar o cliente DNS personalizado
  • Google Chrome: Configurar a política BuiltInDnsClientEnabled para desativar o cliente DNS personalizado
  • Outras aplicações: reveja e configure definições semelhantes para outros browsers e aplicações com os seus clientes DNS personalizados

Passo 2: Adicionar exceções de permissão manual

Antes de ativar o ZTDNS, configure exceções para aplicações que necessitem de ligações IP diretas:

Serviços do Microsoft 365

Adicione exceções aos serviços do Microsoft 365 que requerem exceções de permissão manual para manter a conectividade.

netsh ztdns add exception name=M365Services description="Microsoft 365 IP ranges" subnets=192.0.2.128/25,198.51.100.0/24,3fff::/48,3fff:123::/38

Aplicações de teleconferência

As aplicações de teleconferência como o Teams utilizam o WebRTC, que negoceia endereços IP para elementos dentro de um túnel TLS e não tem visibilidade DNS. Estas sub-redes IP também estão documentadas publicamente e precisam de exceções de permissão manual para a aplicação funcionar com zTDNS.

netsh ztdns add exception name=TeamsWebRTC description="Teams WebRTC IP ranges" subnets=3fff::/48,3fff:123::/38

Exceções de aplicações personalizadas

As aplicações e serviços personalizados essenciais para a produtividade dos funcionários que não detetam pontos finais através de DNS ou utilizam endereços IP codificados requerem exceções de permissão manual para funcionarem corretamente após a ativação do ZTDNS.

netsh ztdns add exception name=AppName description="Description of AppName" subnets=192.0.2.128/25,198.51.100.0/24,3fff::/48,3fff:123::/38

Passo Opcional: Autenticação de cliente com mTLS

Se o seu servidor DNS fidedigno suportar a autenticação de cliente através do TLS mútuo (mTLS):

Configurar autoridades de certificação fidedignas

Defina hashes de certificados de AC fidedignos para validar o certificado do servidor DNS:

netsh ztdns set trustedca certhashes=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff,11112233445566778899aabbccddeeff00112233445566778899aabbccddeeff

Configurar certificados de cliente

Defina hashes de certificados de cliente e OIDs de Utilização Alargada de Chaves (EKU):

netsh ztdns set clientcert certhashes=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff,00112233445566778899aabbccddeeff00112233 ekus=1.3.6.1.4.1.311.64.256,1.3.6.1.4.1.311.64.255

Passo 3: Configurar o servidor DNS fidedigno

Adicione um ou mais servidores DNS Protetores que suportem DoH ou DoT:

DNS através do servidor HTTPS (DoH)

netsh ztdns add server type=doh address=203.0.113.0 template=https://doh.resolver.example/dns-query priority=0

DNS através do servidor TLS (DoT)

netsh ztdns add server type=dot address=2001:db8::1 hostname=dot.resolver.example priority=1

Passo 4: Ativar o ZTDNS no modo de auditoria

Importante: comece sempre com o modo de auditoria para validar a configuração antes de ativar a imposição:

netsh ztdns set state enable=yes audit=yes

Este comando ativa o registo ZTDNS sem bloquear o tráfego, o que lhe permite:

  • Identificar aplicações que possam precisar de exceções
  • Validar a configuração do servidor DNS
  • Monitorizar padrões de tráfego antes da imposição

Passo 5: Monitorizar e validar

Depois de ativar o modo de auditoria:

  1. Monitorizar registos ZTDNS para padrões de tráfego bloqueados
  2. Adicionar exceções conforme necessário
  3. Verificar se todas as aplicações críticas funcionam corretamente
  4. Rever e ajustar políticas de resolução de nomes no servidor DNS fidedigno

Passo 6: Ativar o modo de imposição

Após testes minuciosos no modo de auditoria, ative a imposição:

netsh ztdns set state enable=yes audit=no

Embora não seja necessário reiniciar para ativar a funcionalidade ZTDNS, recomendamos que reinicie o dispositivo depois de ativar o ZTDNS para garantir que as aplicações não continuam a utilizar endereços IP em cache dos quais o ZTDNS não tem conhecimento ou que terminem as ligações existentes que não foram aprovadas pela política.

Implementar o ZTDNS com JSON

Para simplificar a gestão da configuração ZTDNS, considere implementar o ZTDNS através de um ficheiro JSON com todas as configurações necessárias.

Apresentar as definições atuais no formato JSON

netsh ztdns show settings

Guardar a configuração no ficheiro JSON (executar através do PowerShell)

netsh ztdns show settings | Out-File ztdns_config.json

Configurar com o ficheiro JSON

netsh ztdns set settings json=ztdns_config.json

Alterar o estado do serviço ZTDNS com JSON

netsh ztdns set state json=state_config.json

Configuração JSON de exemplo

O exemplo seguinte mostra um ficheiro de configuração JSON de exemplo completo:

{
  "config": {
    "flags": 511,
    "enableZtdns": "whenready",
    "auditMode": false,
    "blockLocalIps": false,
    "allowHostsFile": false,
    "enableForwarder": false,
    "maxRecordAge": 86400,
    "allowICSDHCPserver": false,
    "serviceNameRefreshTimeout": 1800
  },
  "rules": {
    "app_name": {
      "description": "Exception for app_name",
      "flags": 0,
      "subnets": ["192.0.2.1", "2001:db8::/64"]
    },
    "app_name2": {
      "description": "Exception for app_name2",
      "flags": 0,
      "subnets": ["192.0.2.1", "2001:db8::/64"]
    }
  },
  "clientCerts": {
    "flags": 0,
    "hashes": ["00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", "00112233445566778899aabbccddeeff00112233"],
    "ekus": ["1.3.6.1.4.1.311.64.256", "1.3.6.1.4.1.311.64.255"]
  },
  "trustedCas": {
    "flags": 0,
    "hashes": ["00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", "11112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"]
  },
  "servers": {
    "1.1.1.1": {
      "flags": 0,
      "priority": 0,
      "dot": {
        "hostname": null,
        "port": 853
      }
    },
    "8.8.8.8": {
      "flags": 0,
      "priority": 0,
      "doh": {
        "template": "https://test.com/dns-query",
        "port": 443
      }
    }
  },
  "message": "The operation completed successfully.",
  "status": 0
}

Parâmetros de configuração JSON

  • enableZtdns: definido como yes, noou whenready (ativa quando os pré-requisitos são cumpridos)
  • auditMode: valor booleano para o modo de auditoria (verdadeiro = auditoria, falso = imposição)
  • blockLocalIps: controla o tráfego para endereços de computador locais
  • allowHostsFile: permite o tráfego para entradas no ficheiro de anfitriões do Windows
  • enableForwarder: permite que o localhost receba consultas DNS feitas por clientes DNS da aplicação e reencaminhe-as para o servidor DNS fidedigno através de ZTDNS
  • maxRecordAge: tempo máximo (em segundos) um endereço IP permanece na lista de permitidos após a resolução de DNS
  • serviceNameRefreshTimeout: tempo entre as atualizações de obtenção do nome do serviço

Embora não seja necessário reiniciar para ativar a funcionalidade ZTDNS, recomendamos que reinicie o dispositivo depois de ativar o ZTDNS para garantir que as aplicações não continuam a utilizar endereços IP em cache dos quais o ZTDNS não tem conhecimento ou que terminem as ligações existentes que não foram aprovadas pela política.

Desativar o ZTDNS

Se tiver problemas de conectividade inesperados durante a implementação do ZTDNS:

netsh ztdns set state enable=no audit=no

Este comando desativa imediatamente a imposição do ZTDNS e restaura a conectividade de rede normal.