terça-feira, 17 de agosto de 2021

Instalando o Pi-Hole: um tutorial para instalação e acréscimo de listas de bloqueio!

Pessoal,

Estive meio sumido aqui do blog, mas pretendo fazer algumas alterações na rede daqui de casa e vou contando aos poucos.

Hoje vamos falar sobre o Pi-Hole.

No passado tentei instalar ele aqui no NAS, mas deu algum pau e zebrou foi tudo.

Os geradores de conteúdo na internet ganham dinheiro com publicidade (seja no site/Youtube/Instagram/etc) ou de outra renda não relacionada com o conteúdo que eles criam/divulgam. Eu mesmo estou nessa por hobby, para aprender e divulgar o que aprendi. Mas tem gente que vive disso e a publicidade pode ser a principal fonte de renda.

Por outro lado, algumas propagandas são muito invasivas, gerando um monte de anúncios e pop-ups que atrapalham a navegação. Quem nunca desistiu de ver um site por causa do excesso de propagandas?

Existem duas formas de resolver isso. Ou você instala um ad-block no navegador (que por si só pode gerar brechas para invasões, pode ser um malware ou pode coletar informações) ou você instala um bloqueador de anúncios de rede.

Este último é o Pi-Hole. Ele surgiu como alternativa de código aberto ao AdTrap e vem crescendo desde então. Ele funciona como um firewall, todos os anúncios e serviços de rastreamento são bloqueados para todos os dispositivos atrás dele. Ou seja, se você instalar na sua casa, todos os dispositivos (computadores, tablets, celulares, smartTVs) ficam "bloqueados". Funcionam, assim, melhor que os ad-blocks, que só bloqueiam os anúncios no navegador onde ele está rodando.

Se você tiver uma VPN residencial (veja aqui como fazer), pode direcionar mesmo o seu uso externo para sua VPN, filtrar tudo e receber os sites sem publicidade.

O pulo do gato é configurar o Pi-Hole como servidor de DHCP (ou receber a informação vinda da internet, filtrar e entregar ao cliente).

Basicamente é assim que o negócio funciona:

(Fonte: https://privacyinternational.org)


Vamos lá.

Vou usar o meu Raspberry Pi, mas poderia ser uma VM no NAS ou um contêiner do Docker. Fica a gosto do freguês. Eu vou usar uma instalação do RP com Raspian e vou instalar via linha de comando com o curl.

Entre no site do serviço (https://pi-hole.net) e escolha o modo de instalação. Aqui, como disse, vai de linha de comando.

curl -sSL https://install.pi-hole.net | bash

Se você não tiver o curl instalado, use "sudo apt-get install curl" para instalá-lo. Outra coisa interessante é utilizar o ssh para instalar isso.

O resto é seguir as orientações:



O Pi-Hole precisa de um IP fixo para funcionar. Veja aqui como fazer isso. Se você já usou o SSH alguma vez e não está conseguindo logar agora, veja aqui como resolver.


O meu RP está ligado por cabo e Wifi. Vou optar pelo cabo.

Agora o Pi-Hole que saber qual o serviço de DNS que você usa. O DNS (Domain Name System) localiza e traduz o nome do site digitado no navegador para o endereço IP do site. Clique aqui para saber o que é ECS e aqui para saber o que é DNSSEC. Eu uso o 8.8.8.8 do Google, mas o OpenDNS é muito bom também.


Agora ele mostra a lista de bloqueios utilizada. Dê ok e vá em frente:


Eu uso IPv4 mesmo, mas isso depende do seu provedor de internet. Vá em frente.


Agora ele mostra o IP do RP (que no meu caso já está fixado) e o endereço do roteador (Gateway).


 Agora ele avisa que precisa manter o IP reservado:



E, SIM, eu quero instalar a interface web do Pi-Hole para administrar. E, SIM, quero instalar os arquivos adicionais para dar tudo certo e não precisar fazer tudo "na unha" depois. E também quero os arquivos de log para saber o que foi acessado, por quem, por qual dispositivo e quando.




Agora o Pi-Hole termina de instalar e mostra um resumo, inclusive o endereço para logar na interface web e a senha de administrador. Essa senha a gente troca depois.


Agora o Pi-Hole termina de instalar. Por prudência, atualize o "apt" com apt-get update e upgrade e reinicie o computador/VM/RP.

Use o navegador e acesse o endereço pi.hole/admin para entrar nas configurações.

(Muito prazer, eu sou o Pi-Hole)

Bom, depois de ir em login e colocar a senha que o programa gerou, algumas opções são apresentadas:


Whitelist e Blacklist permitem que você libere ou bloqueie sites específicos que o Pi-Hole bloqueou ou não bloqueou, respectivamente.

Talvez a coisa mais interessante seja ir em "Settings -> DHCP" e habilitar o serviço de DHCP do Pi-Hole para que ele distribua os endereços IP da sua rede, direcionando o fluxo da navegação para o Pi-Hole. O problema é que provavelmente você já tem um servidor DHCP no seu roteador.

A solução é simples e é a seguinte: Desabilite o serviço de DHCP do seu roteador e habilite o DHCP no Pi-Hole. Pronto.

Mas eu tenho um Google Wifi e no Google Wifi nada é tão simples. Neste caso, o Google Wifi NÃO permite desabilitar o DHCP... Obrigado mais uma vez, Google.

Antes de resolver isso, vamos mudar a senha do Pi-Hole. Saia em Logout, clique para logar novamente mas escolha a opção "Forgot password". Ele vai mostrar um comando para ser feito no Shell:

    sudo pihole -a -p

O Pi-Hole agora vai pedir para você colocar a senha nova. Simples assim.

Vamos agora voltar ao problema do Google Wifi.

Procurando na internet, achei uma sugestão: deixo o IP do Pi-Hole fixo no Google Wifi (por exemplo 192.168.1.2) e limito o escopo do DHCP para apenas esse endereço (por exemplo de 192.168.1.1 a 192.168.1.2). Depois, no Pi-Hole, habilito o DHCP e a partir de, por exemplo, 192.168.1.10 até 19.1.68.1.251. Deve funcionar.

Mas achei outra solução mais simples. Fui no app do Google Wifi e, dentro de "Rede Avançada", alterei a configuração do DNS. Onde antes estava "Automático", direcionando para o DNS do Google (8.8.8.8), coloquei como servidor primário o IP do Pi-Hole (192.168.1.22) e como servidor secundário o do Google (8.8.8.8).

Bom, testei e deu certo. Os adds reduziram muito. Muito mesmo.

Este modo que fiz, colocando o DNS primário com o endereço do Pi-Hole tem um problema "sério". Todas as solicitações vem do meu Google Wifi, ou seja, todas tem o endereço 192.168.1.1, ou seja, não consigo saber qual dispositivo tentou acessar determinado site e teve a requisição bloqueada.

Pra mim não tem problema, mas concordo que a melhor solução seria deixar o Pi-Hole administrar o DHCP, mas não vou comprar um novo kit de roteadores Mesh só pra isso. Quem sabe no futuro, quando o GWF der pau...

Indo em Settings -> Adlist, você pode acrescentar algumas das dezenas de listas disponíveis, seja para bloquear anúncios, trackings, sites de malwares, etc.


Depois de acrescentar as listas, atualize em Tools -> Update Gravity.


Existem várias listas. Em peguei algumas (as verdes) neste site aqui. No Reddit tem uma discussão sobre essas listas (veja aqui).

No GitHub também tem várias listas. Utilizei este projeto aqui para acrescentar algumas listas.

Acrescentando algumas listas, saí de 87.069 domínios bloqueados para 198.222 domínios bloqueados.

Nem sempre mais é mais. É preciso colocar alguma lista e ver se a navegação continua boa. Qualquer coisa, você libera um domínio, colocando ele na Whitelist ou bloqueia algum em especial, colocando na Blacklist.

Vou continuar testando aqui e aviso se tiver alguma novidade.