AdGuard Home: Bloqueio de Anúncios e Malware via DNS para PME
As pequenas e médias empresas (PME) enfrentam hoje um volume crescente de anúncios intrusivos, rastreadores e domínios maliciosos que consomem largura de banda, reduzem a produtividade e expõem a rede a infecções por malware. Tradicionalmente, a filtragem de conteúdo era delegada a firewalls empresariais caros ou a soluções de proxy complexas. O AdGuard Home oferece uma alternativa leve e eficaz: um servidor DNS local que filtra todo o tráfego de DNS a nível de rede, bloqueando anúncios, rastreadores e domínios de malware antes que cheguem a qualquer dispositivo.
Neste artigo, exploramos como o AdGuard Home funciona, como instalá-lo via Docker, configurar DNS a montante com DNS-over-HTTPS e DNS-over-TLS, gerir listas de bloqueio personalizadas, activar DNS-over-HTTPS para clientes remotos e compará-lo com o Pi-hole — a outra solução DNS de filtragem mais popular.
Conteúdos
- O que é o AdGuard Home
- Instalação via Docker
- Configuração DNS e Upstream
- Listas de Bloqueio
- Cliente e DNS-over-HTTPS
- AdGuard Home vs Pi-hole
- Boas Práticas
O que é o AdGuard Home
O AdGuard Home é um servidor DNS recursivo e cache com capacidade de filtragem, desenvolvido em Go pela equipa AdGuard e distribuído como software livre sob a licença GPL. O seu código-fonte está disponível publicamente no repositório oficial no GitHub. Ao contrário das extensões de navegador que filtram apenas num navegador específico, o AdGuard Home opera a nível de DNS — o que significa que filtra todo o tráfego de todos os dispositivos conectados à rede: computadores, telemóveis, tablets, IoT e smart TVs.
Quando um dispositivo solicita a resolução de um domínio (por exemplo, ads.tracker.com), o AdGuard Home consulta as suas listas de bloqueio. Se o domínio estiver numa lista, o servidor devolve um endereço IP nulo (ou um IP de bloqueio configurável), impedindo a ligação. Se o domínio for legítimo, o AdGuard Home resolve-o normalmente através dos servidores DNS a montante configurados e guarda o resultado em cache para acelerar consultas futuras.
Para além da filtragem, o AdGuard Home oferece um painel de administração web com estatísticas em tempo real, registo de consultas, controlo de clientes individuais e suporte para protocolos DNS modernos como DNS-over-HTTPS (DoH), DNS-over-TLS (DoT) e DNSCrypt. Estas funcionalidades tornam-o numa solução completa para PME que pretendam proteger a sua rede sem investir em appliances dedicados.
ℹ Nota: O AdGuard Home filtra ao nível de DNS, o que significa que não bloqueia anúncios servidos a partir do mesmo domínio do conteúdo principal (ex: anúncios dentro do YouTube ou do Facebook). Para esses casos, complementar com uma extensão de navegador como o uBlock Origin continua a ser recomendado.
Instalação via Docker
A forma mais simples e recomendada de instalar o AdGuard Home numa PME é via Docker. Este método garante isolamento, facilita actualizações e permite gestão centralizada com Docker Compose. Antes de começar, é necessário ter o Docker e o Docker Compose instalados no servidor. O servidor deve ter um endereço IP estático na rede interna (ex: 192.168.1.10).
Como o AdGuard Home precisa de escutar nas portas 53 (DNS), 80 (HTTP para o painel inicial) e 3000 (painel web de configuração), é importante garantir que nenhum outro serviço está a usar essas portas. Em muitas distribuições Linux, o systemd-resolved ocupa a porta 53 por defeito. Para o desactivar temporariamente:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
# Remover o resolv.conf simbólico e criar um novo
sudo rm /etc/resolv.conf
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
De seguida, criar a estrutura de directórios e o ficheiro docker-compose.yml:
mkdir -p /opt/adguardhome/work
mkdir -p /opt/adguardhome/conf
cat <<'EOF' > /opt/adguardhome/docker-compose.yml
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "3000:3000/tcp"
- "853:853/tcp"
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
EOF
Iniciar o contentor com Docker Compose:
cd /opt/adguardhome
sudo docker compose up -d
Após iniciar o contentor, aceder ao assistente de configuração inicial através do navegador em http://192.168.1.10:3000 (substituir pelo IP do servidor). O assistente guia o administrador através da configuração da interface de escuta, porta do painel web e definição da palavra-passe de administrador. No final, o painel web fica disponível na porta 80 por defeito.
⚠ Atenção: Se o servidor tiver outros serviços web (ex: Nginx, Apache), a porta 80 pode entrar em conflito. Nesse caso, mapear o painel para outra porta (ex: "8080:80/tcp") e ajustar o assistente de configuração em conformidade.
Configuração DNS e Upstream
Após a instalação, o passo mais importante é configurar os servidores DNS a montante — os servidores para os quais o AdGuard Home encaminha as consultas que não bloqueia. Para uma PME preocupada com privacidade e segurança, recomenda-se usar servidores que suportem DNS-over-HTTPS (DoH) ou DNS-over-TLS (DoT), garantindo que as consultas DNS entre o AdGuard Home e o servidor a montante sejam cifradas e não interceptáveis na rede.
No painel web, aceder a Definições → Definições DNS. Na secção de servidores a montante, inserir os endereços em formato DoH/DoT. Exemplos recomendados:
# DNS-over-HTTPS (DoH)
https://dns.cloudflare.com/dns-query
https://dns.google/dns-query
# DNS-over-TLS (DoT)
tls://1dot1dot1dot1.cloudflare-dns.com
tls://dns.google
# Servidor DNS simples (fallback)
1.1.1.1
8.8.8.8
O AdGuard Home suporta o paralelismo de consultas a montante (parallel queries) — quando recebe uma consulta, envia-a em paralelo para todos os servidores a montante configurados e usa a resposta mais rápida. Para activar esta funcionalidade, marcar a opção “Paralelo” em vez de “Carga balanceada” nas definições de a montante. Isto reduz a latência percebida pelos clientes.
Outra configuração relevante é o Bootstrap DNS — os servidores DNS usados para resolver os endereços IP dos servidores DoH/DoT antes de estabelecer a ligação cifrada. Por defeito, o AdGuard Home usa 1.1.1.1 e 8.8.8.8. Para maior fiabilidade, pode-se adicionar 9.9.9.9 (Quad9) que também oferece filtragem de malware.
Para configurar o cache DNS, o AdGuard Home permite definir o tamanho do cache e o TTL mínimo. Um cache maior reduz consultas a montante e melhora o tempo de resposta. Para uma rede com 20-50 dispositivos, um cache de 4-8 MB é suficiente. A configuração pode ser feita via ficheiro AdGuardHome.yaml ou pelo painel web.
Após configurar os a montantes, é fundamental testar a resolução DNS. Num cliente configurado para usar o AdGuard Home como DNS, executar:
# Testar resolução de um domínio legítimo
nslookup kbase.pt 192.168.1.10
# Testar bloqueio de um domínio de anúncios
nslookup doubleclick.net 192.168.1.10
# Deve devolver 0.0.0.0 se o bloqueio estiver activo
Listas de Bloqueio
As listas de bloqueio (blocklists) são o coração do AdGuard Home. São ficheiros de texto com milhares ou milhões de domínios conhecidos por servir anúncios, rastreadores, malware, phishing e outros conteúdos maliciosos. O AdGuard Home inclui por defeito a lista oficial da AdGuard, mas permite adicionar listas de terceiros e criar regras personalizadas.
No painel web, aceder a Filtros → Listas de bloqueio DNS. Aqui é possível adicionar listas via URL. As listas mais recomendadas para PME incluem:
| Lista | Propósito | Domínios (aprox.) |
|---|---|---|
| AdGuard Base | Anúncios e rastreadores gerais | ~80 000 |
| StevenBlack Unified | Anúncios + malware + phishing | ~120 000 |
| OISD Big | Bloqueio sem falsos positivos | ~100 000 |
| HaGeZi Pro | Bloqueio agressivo de rastreadores | ~500 000 |
| URLHaus Malware | Domínios de malware activos | ~10 000 |
Para além das listas externas, o AdGuard Home permite criar regras de bloqueio personalizadas em Filtros → Filtros personalizados. A sintaxe é simples — cada regra numa linha. Por exemplo:
||ads.exemplo.com^
||analytics.exemplo.pt^
||tracking.empresa.com^
# Bloquear todo um TLD
||*.xyz^
# Permitir um domínio (whitelist)
@@||servidor-legitimo.com^
# Bloquear por wildcard
||*-ads-*.com^
O AdGuard Home também suporta listas de permissão (allowlists) — domínios que nunca devem ser bloqueados, mesmo que estejam numa lista de bloqueio. Isto é essencial para evitar falsos positivos que possam quebrar serviços corporactivos críticos. Para configurar, aceder a Definições → Serviços bloqueados e adicionar domínios à secção de allowlist.
ℹ Dica para PME: Comece com a lista AdGuard Base e a OISD Big — esta combinação oferece bom equilíbrio entre bloqueio e falsos positivos. Monitore o consulta registo durante a primeira semana para identificar domínios legítimos que possam ter sido bloqueados e adicione-os à allowlist.
Cliente e DNS-over-HTTPS
Existem duas formas de configurar os clientes para usar o AdGuard Home: configuração DNS directa na rede ou DNS-over-HTTPS para clientes remotos. Para os dispositivos dentro da rede corporativa, a forma mais eficaz é configurar o AdGuard Home como servidor DNS no router ou servidor DHCP da rede, garantindo que todos os dispositivos recebam automaticamente o endereço IP do AdGuard Home como resolver DNS.
Num router típico, esta configuração encontra-se em LAN → DHCP Server → DNS Server. Substituir o DNS primário pelo IP do AdGuard Home (ex: 192.168.1.10) e deixar o DNS secundário vazio ou com um servidor de emergência. Em Windows Server DHCP, a configuração é feita através das opções de âmbito (Scope Options) 006 DNS Servers.
Para clientes remotos — colaboradores em trabalho remoto, filiais ou dispositivos móveis fora do escritório — o AdGuard Home pode servir DNS-over-HTTPS (DoH) diretamente. Isto permite que dispositivos configurados com o ponto final DoH do AdGuard Home continuem a beneficiar da filtragem mesmo fora da rede corporativa. Para activar, no painel web aceder a Definições → Definições de encriptação:
# Endereço DoH do AdGuard Home (exemplo)
https://adguard.empresa.pt/dns-query
# Porta de escuta DoH/DoT: 853 (DoT) e 443 (DoH)
# É necessário um certificado TLS válido
Para obter um certificado TLS válido, o servidor AdGuard Home deve ser acessível por um domínio público (ex: adguard.empresa.pt) com o registo DNS a apontar para o IP público do servidor. O AdGuard Home pode gerar certificados automaticamente via Let’s Encrypt se a porta 80 estiver acessível a partir da Internet, ou pode-se importar um certificado existente.
Para configurar um cliente Windows com DoH para o AdGuard Home, abrir Definições → Rede & Internet → Adaptador → Propriedades → IPv4 → DNS e adicionar o endereço DoH. Em macOS, a configuração é feita através de perfis de configuração (.mobileconfig). Para telemóveis, existem apps como DNSCloak (iOS) ou Intra (Android) que permitem configurar DoH personalizado.
O AdGuard Home também permite configuração por cliente — aplicar políticas diferentes a dispositivos específicos. Por exemplo, pode-se configurar uma política que bloqueia redes sociais apenas em dispositivos de colaboradores sem necessidade de acesso, enquanto permite acesso total nos dispositivos de marketing. Para configurar, aceder a Definições → Clientes e adicionar cada dispositivo por IP, MAC ou hostname.
AdGuard Home vs Pi-hole
O Pi-hole é a alternativa mais conhecida no espaço de filtragem DNS auto-hospedado. Ambos os projectos são código aberto, executam-se em hardware modesto e oferecem filtragem a nível de rede. No entanto, existem diferenças significativas que podem influenciar a escolha para uma PME:
| Característica | AdGuard Home | Pi-hole |
|---|---|---|
| Linguagem | Go (binário único) | PHP + Bash (dependências) |
| DNS-over-HTTPS nativo | Sim (servidor e cliente) | Não (requer extra) |
| DNS-over-TLS nativo | Sim | Não (requer extra) |
| DNSCrypt | Sim | Não |
| Painel web | Moderno, integrado | Funcional, mais antigo |
| Controlo parental | Integrado (serviços bloqueados) | Via listas externas |
| Configuração por cliente | Sim, nativo | Sim, via grupos |
| Servidor DHCP integrado | Sim | Sim |
| API | REST JSON | Telnet + API web |
| Licença | GPL | EUPL |
Em síntese, o AdGuard Home tem vantagem em ambientes que valorizam DNS cifrado nativo (DoH/DoT), instalação simplificada (binário único sem dependências PHP) e um painel web mais moderno. O Pi-hole, por outro lado, tem uma comunidade mais vasta, mais tempo de maturidade e maior ecossistema de integrações. Para uma PME que procura uma solução all-in-one sem configurações adicionais, o AdGuard Home é geralmente a escolha mais directa.
Boas Práticas
Para garantir que o AdGuard Home funcione de forma fiável e segura numa PME, recomenda-se seguir um conjunto de boas práticas operacionais e de segurança:
1. Actualizar regularmente as listas de bloqueio. As listas de bloqueio são actualizadas pelos seus mantenedores com novos domínios maliciosos. No AdGuard Home, aceder a Filtros → Listas de bloqueio DNS e clicar em “Verificar actualizações” periodicamente, ou configurar a actualização automática nas definições. Uma lista desactualizada deixa de bloquear ameaças emergentes.
2. Configurar DNS de fallback. Mesmo com DoH/DoT configurado, é prudente ter pelo menos dois servidores a montante diferentes. Se o Cloudflare tiver uma interrupção, o Google DNS continua disponível. Configurar também um DNS de fallback no router para o caso de o servidor AdGuard Home ficar indisponível — mas garantir que esse fallback não seja um DNS sem filtragem que anule o propósito do AdGuard Home.
3. Monitorizar o consulta registo. O AdGuard Home regista todas as consultas DNS (se o registoging estiver activo). Analisar regularmente o registo para identificar domínios bloqueados indevidamente (falsos positivos) e domínios suspeitos que possam indicar infecção por malware em clientes. O painel de estatísticas mostra os clientes mais activos, os domínios mais consultados e os domínios mais bloqueados.
4. Aplicar políticas por cliente. Nem todos os dispositivos precisam do mesmo nível de filtragem. Configurar perfis diferentes para servidores (filtragem mínima), estações de trabalho (filtragem completa) e dispositivos IoT (bloqueio restritivo). Isto reduz falsos positivos em serviços críticos mantendo protecção onde é necessária.
5. Fazer cópia de segurança da configuração. O ficheiro AdGuardHome.yaml contém toda a configuração — listas, regras personalizadas, clientes e políticas. Fazer cópia de segurança regular deste ficheiro (incluído no volume /opt/adguardhome/conf no exemplo Docker) permite restaurar rapidamente em caso de falha do servidor.
6. Manter o AdGuard Home actualizado. O projecto lança versões regularmente com correcções de segurança e novas funcionalidades. Para actualizar via Docker:
cd /opt/adguardhome
sudo docker compose pull
sudo docker compose up -d
# O Docker substitui o container antigo pelo novo
# Os volumes preservam toda a configuração
7. Proteger o painel de administração. O painel web do AdGuard Home deve ser acessível apenas a partir da rede interna. Se for necessário acesso externo, usar um VPN ou restringir o acesso por IP no firewall. Nunca expor o painel directamente à Internet sem protecção adicional. Alterar a palavra-passe de administrador regularmente e usar uma palavra-passe forte.
ℹ Recomendação final: Para uma PME com 10-50 dispositivos, um servidor AdGuard Home num Raspberry Pi 4 ou numa VM pequena com 1 GB de RAM e 10 GB de disco é mais do que suficiente. O impacto no desempenho da rede é negligenciável — o cache DNS reduz o tempo de resposta para domínios já resolvidos, tornando a navegação mais rápida em comparação com DNS directo.