Controle de acesso a sites com Raspberry Pi 5

Uma das vantagens de possuir seu próprio servidor DNS recursivo é a liberdade de administração. Podemos por exemplo, implementar um simples mas funcional controle de acesso a sites, ou seja, bloquear o acesso a determinados websites em nossa rede local. Como vimos no post sobre DNS recursivo com Raspberry Pi, toda vez que digitamos no navegador o endereço de uma página Web, por exemplo www.facebook.com, é solicitado ao servidor DNS recursivo que pesquise e converta esse nome para um endereço IP, algo como 157.240.12.35, pois as comunicações na Internet se baseiam em endereços IP. A proposta desse post, é configurar o servidor DNS recursivo para redirecionar o endereço do website a ser bloqueado para um endereço IP incorreto, por exemplo 127.0.0.1, causando sua indisponibilidade para todos os dispositivos conectados a rede local.

Material necessário

Para realizar este projeto, vamos precisar de :

E ter concluído o post Servidor DNS recursivo com Raspberry Pi.

Configurando o servidor DNS recursivo

Para começar precisamos de algum tipo de acesso ao terminal, seja remoto via ssh ou local via teclado. Tudo certo?, então vamos lá.

É uma boa prática fazer uma cópia do arquivo de configuração antes de editá-lo.

cp -p /etc/unbound/unbound.conf/etc/unbound/unbound.conf.default

Agora iremos editar o arquivo de configuração.

vim /etc/unbound/unbound.conf

E incluir o conteúdo abaixo no final do arquivo ou antes de stub-zone caso exista (fique atento aos comentários).

# Redireciona qualquer endereço de webiste que contenha facebook.com para o endereço IP 127.0.0.1.
local-zone: "facebook.com" redirect
local-data: "facebook.com A 127.0.0.1"

Vamos checar se o arquivo /etc/unbound/unbound.conf possui algum erro de sintaxe.

unbound-checkconf

Se a resposta for algo como.

unbound-checkconf: no errors in /etc/unbound/unbound.conf

Está tudo certo.

E agora reiniciar o serviço.

systemctl restart unbound

A configuração do DNS recursivo está pronta!!

Uma ótima ferramenta para testes é o dig, ele faz consultas a servidores DNS, e sua sintaxe é bem simples.

dig @ip_servidor_recursivo nome_de_domínio

Para um teste básico, você pode digitar no próprio servidor.

dig www.facebook.com

Ou de qualquer computador na rede local.

dig @ip_do_servidor www.facebook.com

Se o resultado for parecido com a imagem abaixo.

DNS recursivo

E no navegador virmos algo como.

Controle de acesso a sites com Raspberry Pi

Parabéns!! O endereço do webiste, nesse caso www.facebook.com, foi bloqueado com sucesso.

Curiosidade (controle de acesso a sites na China)

Na China, onde existe um rígido controle de acesso a sites, entre outras técnicas eles também utilizam servidores DNS recursivos para redirecionar os endereços de webistes a serem bloqueados para endereços IP incorretos. A diferença fundamental está no fato de ficarmos restrito a nossa rede local, ou seja apenas os dispositivos conectados a nossa rede local serão afetados. Na China, sem entrar no mérito da questão, essa é aparentemente uma política de Estado que afeta todos os habitantes. A imagem abaixo exibe a consulta feita a um servidor DNS recursivo chinês.

Controle de acesso a sites na china

Utilizando a ferramenta dig, velha conhecida, perguntamos ao servidor DNS chinês (223.5.5.5) qual o endereço IP do website www.facebook.com (em vermelho). A resposta foi o endereço IP 74.86.118.24 (em azul). Ocorre que esse endereço IP sequer pertence ao Facebook, como apresentado na imagem abaixo.

Controle de acesso a sites da China

Aqui utilizamos a ferramenta whois para consultar informações sobre o endereço IP (74.86.118.24) fornecido pelo servidor DNS recursivo chinês (em vermelho). Entre outras informações está o nome da organização (em azul), e não é o Facebook. E mesmo que o endereço IP pertencesse ao Facebook, como aconteceu durante os testes, não seria o endereço IP associado ao webiste www.facebook.com.

Controverso mas interessante, não é?

Gostou de criar um controle de acesso a sites com Raspberry Pi? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Até a próxima!!

Faça seu comentário

Acesse sua conta e participe

5 Comentários

  1. é possível configurar para ter controle de quem esta na internet? Senha por exemplo?

    1. Olá Anderson,

      Cai num caso parecido do questionamento do Alexandre, seria possível por proxy e com a autenticação de usuários no proxy.

      Aqui você pode ver o básico de como configurar o proxy: https://www.arduinoecia.com.br/squid-proxy-com-raspberry-pi/
      E aqui tem um tutorial de como configurar a autenticação: https://gist.github.com/jackblk/fdac4c744ddf2a0533278a38888f3caf
      O tutorial de autenticação é feito no Ubuntu, mas como o Raspberry Pi OS é da mesma família de distribuições, acredito que também funcione nele.

      Abraços!
      Vinícius – Equipe MakerHero

  2. Muito interessante Marcos
    Pensei em fazer isso lá em casa para “forçar” a gurizada a estudar e ou dormir cedo largando o celular hehehe.
    Seria legal se pudesse fazer isso em determinados horários e para determinadas estações. é possível? Muito complicado?

    1. Oi Alexandre,
      Para atender sua demanda seria necessário trabalhar com proxy (squid) e firewall (iptables), além de adicionar mais uma inteface de rede (usb) ao Raspberry Pi. Complicado mas possível. Uma boa ideia para um post futuro. Obrigado.

      1. “Faça seus filhos estudarem com Raspberry Pi” 😀