Implantando o Zero Trust DNS

Este artigo fornece diretrizes abrangentes para implantar o Zero Trust DNS (ZTDNS) em ambientes Windows 11 Enterprise, incluindo etapas obrigatórias, opções de configuração e considerações de implantação.

Pré-requisitos

Antes de implantar o ZTDNS, certifique-se de que seu ambiente atenda aos seguintes requisitos:

Requisitos de sistema

  • Build do Windows 11: o dispositivo deve executar o build mais recente do Windows 11 Enterprise ou do Windows 11 Education.
  • Privilégios de administrador: Todos os comandos de configuração ZTDNS requerem acesso no nível do administrador.
  • Servidor DNS criptografado acessível: o servidor DNS criptografado deve ser acessível a partir do dispositivo.

Requisitos do servidor DNS de proteção

Para que os servidores DNS sejam compatíveis com o ZTDNS, eles devem atender a estes requisitos:

  • Suporte a DNS criptografado: deve dar suporte a protocolos DNS sobre HTTPS (DoH) ou DNS sobre TLS (DoT).
  • Imposição de política: só deve resolver nomes de domínio permitidos com base em políticas organizacionais.
  • Autenticação de cliente usando mTLS (opcional): deve dar suporte a TLS mútuo (mTLS) para políticas de resolução por cliente usando certificados de cliente.

Exceções manuais

Determinados aplicativos e serviços que não usam DNS para descobrir pontos de extremidade exigem exceções manuais para que os intervalos de endereços IP necessários continuem funcionando após a ativação do ZTDNS. Aplicativos do Microsoft 365 como Exchange, SharePoint, Teams e Office exigem exceções manuais para intervalos de endereços IP listados aqui.

Modos de implantação

O ZTDNS oferece suporte a dois modos operacionais:

  • Modo de auditoria: registra todo o comportamento esperado do ZTDNS sem realmente bloquear o tráfego de saída. Esse modo ajuda os administradores a entender os padrões de tráfego antes da aplicação total. Altamente recomendado para testes e validação iniciais, ele fornece visibilidade em possíveis cenários de bloqueio sem interromper a conectividade de rede.
  • Modo de imposição: bloqueia ativamente o tráfego não confiável, mantendo o registro em log abrangente. Só habilite o modo de imposição depois de testar minuciosamente o modo de auditoria e confirmar que todas as exceções necessárias estão configuradas.

Implantando ZTDNS usando netsh

Siga estas etapas para implantar o ZTDNS:

Etapa 1: Definir as configurações de DNS do aplicativo

Verifique se todos os aplicativos usam o cliente DNS do Windows em vez de implementações DNS personalizadas:

  • Microsoft Edge: Configurar a política BuiltInDnsClientEnabled para desabilitar o cliente DNS personalizado
  • Google Chrome: Configurar a política BuiltInDnsClientEnabled para desabilitar o cliente DNS personalizado
  • Outros aplicativos: examine e defina configurações semelhantes para outros navegadores e aplicativos usando seus clientes DNS personalizados

Etapa 2: adicionar exceções manuais de permissão

Antes de habilitar o ZTDNS, configure exceções para aplicativos que exigem conexões IP diretas:

Serviços do Microsoft 365

Adicione exceções para os serviços do Microsoft 365 que exigem permissões manuais 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

Aplicativos de teleconferência

Aplicativos de teleconferência como o Teams usam WebRTC, que negocia endereços IP para pares em um túnel TLS e não tem visibilidade de DNS. Essas sub-redes IP também são documentadas publicamente e precisam de exceções manuais para que o aplicativo funcione com ZTDNS.

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

Exceções de aplicativo personalizado

Aplicativos e serviços personalizados essenciais para a produtividade dos funcionários que não descobrem pontos de extremidade por meio do DNS ou usam endereços IP embutidos em código exigem que as exceções manuais funcionem 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

Etapa opcional: Autenticação do cliente com mTLS

Se o seu servidor DNS confiável der suporte à autenticação do cliente usando TLS mútuo (mTLS):

Configurar autoridades de certificação confiáveis

Defina hashes de certificado de AC confiáveis para validar o certificado do servidor DNS:

netsh ztdns set trustedca certhashes=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff,11112233445566778899aabbccddeeff00112233445566778899aabbccddeeff

Configurar certificados de cliente

Defina hashes de certificado do cliente e OIDs de Uso Estendido de Chave (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

Etapa 3: Configurar um servidor DNS confiável

Adicione um ou mais servidores DNS de proteção que dão suporte a DoH ou DoT:

Servidor DoH (DNS sobre HTTPS)

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

Servidor DoT (DNS sobre TLS)

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

Etapa 4: habilitar o ZTDNS no modo de auditoria

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

netsh ztdns set state enable=yes audit=yes

Esse comando habilita o registro em log ZTDNS sem bloquear o tráfego, permitindo que você:

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

Etapa 5: Monitorar e validar

Depois de habilitar o modo de auditoria:

  1. Monitorar logs ZTDNS para padrões de tráfego bloqueados
  2. Adicionar exceções conforme necessário
  3. Verifique se todos os aplicativos críticos funcionam corretamente
  4. Examine e ajuste as políticas de resolução de nomes em servidores DNS confiáveis

Etapa 6: habilitar o modo de imposição

Após testes completos no modo de auditoria, habilite a imposição:

netsh ztdns set state enable=yes audit=no

Embora uma reinicialização não seja necessária para habilitar a funcionalidade ZTDNS, recomendamos reinicializar o dispositivo após habilitar o ZTDNS para garantir que os aplicativos não continuem usando endereços IP em cache que o ZTDNS não conhece ou para encerrar conexões existentes que não foram aprovadas pela política.

Implantando ZTDNS usando JSON

Para simplificar o gerenciamento da configuração do ZTDNS, considere implantar o ZTDNS usando um arquivo JSON com todas as configurações necessárias.

Exibir as configurações atuais no formato JSON

netsh ztdns show settings

Salvar a configuração no arquivo JSON (executar pelo PowerShell)

netsh ztdns show settings | Out-File ztdns_config.json

Configurar usando arquivo JSON

netsh ztdns set settings json=ztdns_config.json

Alterar o estado do serviço ZTDNS usando JSON

netsh ztdns set state json=state_config.json

Configuração JSON de exemplo

O exemplo a seguir mostra um arquivo 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: Defina como yes, noou whenready (habilita quando os pré-requisitos são atendidos)
  • auditMode: Valor booliano para o modo de auditoria (true = audit, false = enforcement)
  • blockLocalIps: controla o tráfego para endereços de computador local
  • allowHostsFile: permite o tráfego para entradas no arquivo de hosts do Windows
  • enableForwarder: Permite que o localhost receba consultas DNS feitas por clientes DNS de aplicativo e as encaminhe para o servidor DNS confiável por meio do ZTDNS
  • maxRecordAge: tempo máximo (em segundos) que um endereço IP permanece na lista permitida após a resolução do DNS
  • serviceNameRefreshTimeout: Tempo entre as atualizações de recuperação do nome do serviço

Embora uma reinicialização não seja necessária para habilitar a funcionalidade ZTDNS, recomendamos reinicializar o dispositivo após habilitar o ZTDNS para garantir que os aplicativos não continuem usando endereços IP em cache que o ZTDNS não conhece ou para encerrar conexões existentes que não foram aprovadas pela política.

Desabilitando o ZTDNS

Se você tiver problemas inesperados de conectividade ao implantar o ZTDNS:

netsh ztdns set state enable=no audit=no

Esse comando desabilita imediatamente a imposição do ZTDNS e restaura a conectividade normal da rede.