WPAD (Web Proxy Auto-Discovery) é um protocolo que permite que navegadores e sistemas operacionais descubram automaticamente a localização de um arquivo Proxy Auto-Configuration (PAC), que define como as aplicações cliente devem se conectar a um proxy para acessar a internet.
Visão geral do WPAD
O WPAD simplifica a configuração de proxy no lado do cliente eliminando a necessidade de ajustes manuais. Em vez de configurar cada aplicação cliente (por exemplo, navegadores ou as configurações de proxy do sistema) com o endereço IP e a porta de um proxy, os administradores podem publicar um único arquivo PAC. Os clientes configurados para usar WPAD localizam e baixam esse arquivo automaticamente e executam sua lógica em JavaScript para determinar o proxy apropriado para uma URL específica. Isso é especialmente útil em organizações grandes ou em ambientes de rede dinâmicos, onde as configurações de proxy mudam com frequência ou variam conforme a localização na rede.
Como o WPAD funciona: métodos de descoberta
O WPAD usa dois métodos principais para descobrir o arquivo PAC: DHCP e DNS. Normalmente os clientes tentam primeiro a descoberta via DHCP e recorrem ao DNS se o DHCP falhar ou não fornecer as informações de WPAD.
Descoberta via DHCP
No método DHCP (Dynamic Host Configuration Protocol), o servidor DHCP entrega aos clientes a URL do arquivo PAC.
- Requisição do cliente: quando um cliente configurado para WPAD obtém um endereço IP de um servidor DHCP, ele solicita opções DHCP específicas.
- Opção DHCP 252: o servidor DHCP pode ser configurado para incluir a Opção 252 (Proxy Auto-Discovery) na oferta de lease. O valor dessa opção é uma string com a URL do arquivo
wpad.dat(por exemplo,http://wpad.example.com/wpad.dat). - Download do arquivo PAC: o cliente recebe a URL e tenta baixar o arquivo
wpad.datdo local indicado.
Descoberta via DNS
Se a descoberta via DHCP não tiver sucesso ou não estiver configurada, os clientes normalmente tentam a descoberta baseada em DNS.
- Construção do hostname: o cliente monta uma série de hostnames possíveis para o servidor WPAD removendo progressivamente componentes do próprio nome de domínio. Por exemplo, se o FQDN de um cliente for
host.sub.example.com, ele tentará resolverwpad.sub.example.com, depoiswpad.example.come, por fim,wpad.com(embora o último costume ser bloqueado por motivos de segurança). - Consulta DNS: para cada hostname construído (por exemplo,
wpad.example.com), o cliente faz uma consulta DNS por um registro A (ou registro AAAA, no caso de IPv6). - Download do arquivo PAC: se a resolução DNS for bem-sucedida, o cliente monta a URL
http://<resolved_IP_address>/wpad.datouhttp://<resolved_hostname>/wpad.date tenta baixar o arquivo PAC.
Comparação entre descoberta via DHCP e via DNS
| Característica | Descoberta pela Opção DHCP 252 | Descoberta via DNS (wpad.domain.tld) |
|---|---|---|
| Configuração | Configurada no servidor DHCP (opção de escopo). | Configurada no servidor DNS (registro A ou CNAME para wpad). |
| Prioridade | Em geral preferida e tentada primeiro pelos clientes. | Usada como alternativa se o DHCP falhar ou não estiver configurado. |
| Mecanismo | URL fornecida diretamente pelo servidor DHCP. | O cliente deduz o hostname e resolve via DNS. |
| Segurança | Exige confiança no servidor DHCP. | Exige confiança na infraestrutura DNS. Mais suscetível a spoofing de DNS se não for protegida. |
| Facilidade | Relativamente simples para administradores de rede. | Exige gestão de registros DNS e configuração de servidor web. |
| Problemas comuns | Valor incorreto na Opção 252, configuração equivocada do servidor DHCP. | Problemas na ordem de busca DNS, envenenamento de DNS, bloqueio do hostname wpad, problemas de tipo MIME. |
O arquivo PAC (Proxy Auto-Configuration)
O núcleo do WPAD é o arquivo PAC, normalmente chamado wpad.dat. Esse arquivo é um script JavaScript que define uma única função: FindProxyForURL(url, host). Quando um cliente precisa acessar uma URL, ele chama essa função passando a URL de destino e seu hostname. O valor retornado pela função determina como o cliente deve prosseguir.
Requisitos do arquivo PAC
- Nome do arquivo: precisa se chamar
wpad.dat. - Tipo MIME: o servidor web que hospeda o
wpad.datprecisa entregá-lo com o tipo MIME correto:application/x-ns-proxy-autoconfig. Sem isso, alguns clientes podem se recusar a processar o arquivo.
Exemplo básico de arquivo PAC
function FindProxyForURL(url, host) {
// Acesso direto para domínios internos
if (isPlainHostName(host) ||
dnsDomainIs(host, ".example.com") ||
isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
}
// Encaminha tráfego específico por um proxy principal
if (shExpMatch(url, "*.google.com/*")) {
return "PROXY proxy1.example.com:8080";
}
// Todo o restante do tráfego passa por um proxy primário com failover para um secundário
return "PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080; DIRECT";
}
Valores de retorno comuns do arquivo PAC
DIRECT: conecta diretamente ao destino, sem usar proxy.PROXY host:port: usa o proxy HTTP especificado. É possível indicar vários proxies para failover (por exemplo,PROXY proxy1:8080; PROXY proxy2:8080).SOCKS host:port: usa o proxy SOCKS especificado.
Vantagens do WPAD para serviços de proxy
- Gestão centralizada: os administradores podem gerenciar as configurações de proxy de toda a rede a partir de um único ponto (o arquivo
wpad.datem um servidor web). - Configuração dinâmica: as configurações de proxy podem variar conforme o endereço IP do cliente, a URL de destino, o horário do dia ou outra lógica definida no arquivo PAC. Isso atende a requisitos de roteamento complexos.
- Mobilidade: notebooks e dispositivos móveis reconfiguram automaticamente suas configurações de proxy ao circular entre redes diferentes (por exemplo, a LAN do escritório e o Wi-Fi de visitantes) que fornecem configurações WPAD distintas.
- Balanceamento de carga e failover: os arquivos PAC podem especificar vários proxies, permitindo que os clientes distribuam o tráfego ou mudem automaticamente para um proxy alternativo se o principal estiver indisponível.
- Controle granular: tipos específicos de tráfego (por exemplo, recursos internos ou sites seguros) podem ignorar o proxy, enquanto os demais são roteados por ele, otimizando desempenho e segurança.
Desvantagens e questões de segurança
Embora o WPAD ofereça conveniência, ele traz vários riscos de segurança e desafios operacionais:
- Ataques Man-in-the-Middle (MITM):
- Spoofing de DNS: um atacante pode forjar respostas DNS para
wpad.domain.tld, direcionando os clientes a um servidor WPAD malicioso. - Spoofing de DHCP: um atacante pode subir um servidor DHCP não autorizado para entregar aos clientes uma URL de WPAD maliciosa.
- Arquivos PAC maliciosos: se um cliente baixar um arquivo PAC malicioso, o atacante pode redirecionar todo o tráfego pelo proxy dele, interceptando ou alterando dados, ou até bloqueando o acesso a serviços críticos.
- Spoofing de DNS: um atacante pode forjar respostas DNS para
- Ponto único de falha: se o servidor WPAD ou o servidor web que hospeda o arquivo
wpad.datficar indisponível, os clientes perdem a configuração de proxy e podem perder o acesso à internet, a menos que a lógica do arquivo PAC preveja failover paraDIRECT. - Vulnerabilidade da ordem de busca DNS: os clientes costumam anexar seus sufixos de domínio a
wpaddurante a descoberta via DNS. Se o cliente estiver em uma rede com sufixo de domínio curto (por exemplo,company.local), ele pode consultarwpad.localou atéwpad.com(casolocalnão esteja configurado). Um atacante que controle esses domínios genéricos poderia hospedar um arquivowpad.datmalicioso. Muitos navegadores e sistemas operacionais modernos mitigam isso impedindo a descoberta WPAD em domínios de topo como.comou.local. - Sobrecarga de desempenho: o processo de descoberta WPAD (consultas DHCP e DNS) e a execução do arquivo PAC podem introduzir um pequeno atraso ao estabelecer conexões, embora isso normalmente seja desprezível.
- Possibilidade de contorno: usuários avançados ou malwares podem contornar as configurações de WPAD, principalmente se elas não forem impostas por outros controles de rede.
- Tipo MIME configurado errado: um tipo MIME incorreto no servidor web (por exemplo,
text/plainem vez deapplication/x-ns-proxy-autoconfig) pode fazer com que os clientes ignorem o arquivowpad.dat.
Configurando o WPAD para um serviço de proxy
Implementar o WPAD envolve várias etapas para garantir que os clientes consigam descobrir e usar o seu serviço de proxy.
-
Crie o arquivo PAC (
wpad.dat):- Desenvolva a lógica em JavaScript da função
FindProxyForURLque define suas regras de roteamento de proxy. - Teste o arquivo PAC a fundo, com ferramentas dedicadas ou com o console de desenvolvedor do navegador, para garantir que ele se comporta como esperado.
- Desenvolva a lógica em JavaScript da função
-
Hospede o arquivo PAC em um servidor web:
- Publique o
wpad.datem um servidor web acessível (por exemplo, Apache, Nginx, IIS). - Garanta que o servidor web esteja configurado para entregar o
wpad.datcom o tipo MIMEapplication/x-ns-proxy-autoconfig.- Apache: adicione
AddType application/x-ns-proxy-autoconfig .dataohttpd.confou a um arquivo.htaccess. - Nginx: adicione
types { application/x-ns-proxy-autoconfig dat; }aonginx.conf. - IIS: adicione uma entrada de tipo MIME para a extensão
.datcom o tipoapplication/x-ns-proxy-autoconfig.
- Apache: adicione
- Publique o
-
Configure o DHCP:
- No seu servidor DHCP, configure a Opção 252 (Proxy Auto-Discovery) para os escopos relevantes.
- Defina o valor da string como a URL completa do seu arquivo PAC (por exemplo,
http://wpad.example.com/wpad.dat).
-
Configure o DNS:
- No seu servidor DNS interno, crie um registro A (ou CNAME) para
wpad.<your_domain.tld>apontando para o endereço IP do servidor web que hospeda owpad.dat. - Exemplo: um registro A para
wpad.example.comapontando para192.168.1.100.
- No seu servidor DNS interno, crie um registro A (ou CNAME) para
-
Configuração do cliente:
- Garanta que os sistemas operacionais e navegadores dos clientes estejam configurados para "Detectar configurações automaticamente" ou "Usar script de configuração automática de proxy". Normalmente essa já é a configuração padrão.
- Em clientes Windows, essa opção costuma ficar em Opções da Internet -> Conexões -> Configurações da LAN.
Desativando o WPAD
Em ambientes nos quais o WPAD representa riscos de segurança inaceitáveis ou não é necessário, ele pode ser desativado:
- Política de Grupo (Windows): os administradores podem usar Objetos de Política de Grupo (GPO) para desativar a detecção automática de proxy em máquinas ingressadas no domínio.
- Registro (Windows): edições manuais no registro podem desativar o WPAD. A chave
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connectionscontém entradas comoDefaultConnectionSettingseSavedLegacySettings, nas quais as flags de WPAD podem ser alteradas. - Configurações do navegador: a maioria dos navegadores tem uma opção para desativar explicitamente a detecção automática de proxy.
- Configuração de rede: não configure a Opção DHCP 252 e não crie um registro DNS
wpad.
Boas práticas para serviços de proxy com WPAD
- Proteja o endpoint do WPAD: garanta que o servidor web que hospeda o
wpad.datesteja endurecido e receba patches regularmente. Considere entregar owpad.datpor HTTPS, embora nem todos os clientes tenham suporte pleno a HTTPS na descoberta WPAD, especialmente os mais antigos. - Valide os arquivos PAC: revise regularmente o conteúdo do seu arquivo
wpad.datpara verificar se está correto e evitar injeção de código malicioso. - Monitore o uso do WPAD: registre em log as requisições ao
wpad.datno seu servidor web para detectar padrões de acesso incomuns ou possíveis ataques. - Implemente segmentação de rede: isole o servidor WPAD e a infraestrutura de proxy das redes de usuários comuns.
- Oriente os usuários: informe os usuários sobre a importância das configurações de proxy e sobre os riscos de desativá-las ou de se conectar a redes não confiáveis.
- Considere alternativas em ambientes sensíveis: em ambientes altamente seguros ou sensíveis, avalie a configuração explícita de proxy via Política de Grupo ou por soluções de Mobile Device Management (MDM), que oferecem controle mais direto e menos dependência de protocolos de descoberta.
- Bloqueie o WPAD para domínios externos: configure os servidores DNS internos para impedir a resolução de
wpadem domínios fora do controle da sua organização (por exemplo,wpad.com,wpad.org). Isso mitiga a vulnerabilidade da ordem de busca DNS.
