Usando o DNS da sua rede para bloquear sites indesejados

Existem inúmeras formas de se bloquear o acesso a sites em nossas redes. Cada uma tem suas vantagens e desvantagens de implementação que devem ser avaliados criteriosamente por quem implementa para evitar problemas e minimizar as ineficiências de cada método. O método apresentado aqui é simples, se você tiver controle sobre o seu DNS, ou alternativamente ao arquivo hosts das máquinas em questão, caso sejam poucas máquinas a serem controladas.

Só umas explicações

Se quiser você pode pular esta seção, mas antes de prosseguir não posso deixar de colocar este aviso importante para que os marketeiros chatos não venham a me azucrinar com suas lamentações.

Eu não sou contra as propagandas que são exibidas em sites, alias, se você nobre leitor acha que a Internet é cara, lembre-se que poderia ser muito mais cara se não tivéssemos propagandas nos sites. O problema é quando a propaganda impede ou dificulta o acesso ao conteúdo que te levou ao site, ou pior que isso quando é mentirosa ou te induz a uma falsa interpretação.

Exemplo? Você está lendo uma notícia sobre tecnologia ou qualquer outra coisa, quando lá em baixo aparece uma chamada assim: “Veja o que os famosos estão fazendo em RJ para secar a barriga em duas semanas”.

Não sei se você já experimentou este caso, mas com esta notícia dessa carregada em uma aba do navegador no celular eu fiz um passeio para dois outros estados próximos e para minha surpresa ao chegar em meu destino a notícia foi atualizada para: “Veja o que os famosos estão fazendo em MG para secar a barriga em duas semanas”, quando cheguei no outro estado atualizou denovo: “Veja o que os famosos estão fazendo em SP para secar a barriga em duas semanas”.

Aquilo me deixou irritado e então decidi que não valia a pena eu dedicar alguns kilobits da minha franquia de internet para estas propagandas. Usar adblock ou outros plugins do tipo no navegador é uma boa ideia mas nem sempre pega estas coisas, além de pesar sua máquina desnecessariamente.

Infelizmente não existe meio eficaz de bloqueio de nada na Internet. Nem o Governo chinês consegue isso com o seu “Grande Firewall”, que certamente não é só um mero firewall. Não será você com o seu roteadorzinho doméstico quem conseguirá. O máximo que conseguimos depende da colaboração ou da preguiça dos usuários.

Se você quer bloquear um site que “todo mundo quer acessar” (por exemplo youtube, facebook etc), talvez o método mais eficaz seja um combo entre firewall e proxy mas se os seus usuários não forem preguiçosos, com certeza vão descobrir um meio de burlar isso em algum momento.

Já para bloquear um site de propagandas usar o DNS é mais simples, rápido e nem precisa de bloqueadores nos navegadores ou algo mais sofisticado.

DNS Sinkhole

Esta técnica não é nova e consiste em responder as consultas de DNS com o endereço IP errado para o serviço requisitado.

Por exemplo, se eu quero impedir que o site www.example.com seja acessado a partir da minha rede, basta eu colocar uma entrada no DNS retornando um IP inexistente para este site.

No Bind9, por exemplo, eu poderia colocar a seguinte entrada:

www.example.com.    IN    A 127.0.0.2

Em um DNS nos equipamentos Mikrotik poderia ser algo como:

/ip dns static add address=127.0.0.2 name=www.example.com. type=A

Em todos os exemplos eu usei o endereço IP 127.0.0.2 mas na verdade poderia ser qualquer um, desde que ele não exista de fato.

Arquivo hosts na máquina do usuário

Veja que a forma de implementar varia de acordo com o seu DNS, mas se você não tem um DNS sob seu controle em sua rede, também pode fazer algo parecido usando o arquivo hosts que é uma especie de “DNS local” então bastaria adicionar uma linha assim em seu arquivo:

127.0.0.2   www.example.com

Na maioria das grandes distribuições Linux este arquivo fica em “/etc/hosts”, no Windows fica em “C:\Windows\System32\drivers\etc\hosts”, no Mac OS X fica em “/private/etc/hosts”.

Em todos os sistemas você precisará de privilégios administrativos (root, admin etc) para editá-lo e a linha a ser inclusa é a mesma apresentada acima.

Um pouco além do básico

Se você tiver um DNS gerenciado, a vantagem é que você pode implementar regras mais avançadas, por exemplo, veja a regra abaixo que uso no meu Mikrotik em casa:

/ip dns static add comment="Site chato no sinkhole" forward-to=blackhole-1.iana.org regexp=".*\.example\.(org|com)\$" type=FWD

Esta regra não é limitada apenas ao “www.example.com”. Aqui eu uso uma REGEX que pega qualquer endereço dentro do domínio “example” (e que inclusive pode ser “.com” ou “.org”) e redireciona para um DNS especifico do IANA que destina a este fim de agir como Sinkhole.

Cada sistema de DNS possui seus recursos e que podem ser diferentes de outros.

Por exemplo o Bind9, um dos sistemas de DNS mais usados no mundo, não suporta REGEX, como no Mikrotik, mas por outro lado eu poderia criar ACLs que restringem este controle a um grupo de máquinas.

Se for um ssitema que permita scripts eu posso ainda ainda definir horários para que estas regras sejam ativadas ou não etc. Você deverá explorar os recursos do seu sistema caso queira ir além do básico.

Fora de casa

Com exceção do uso do arquivo hosts local, observe que como esta técnica é usada na sua rede, quando você está usando um dispositívo móvel fora dela, a propaganda voltará a ser exibida (como no exemplo que dei da maldita propaganda da pílula seca barriga).

Duas alternativas para isso são: Ou você publica seu DNS para uso externo e o deixa fixo nos seus dispositivos móveis, ou então fecha uma VPN entre o seu dispositivo móvel e a sua rede domestica / corporativa onde o DNS está configurado. Mas ambos os casos são temas para um outro texto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.