Como usar o Raspberry Pi como roteador e filtro de conteúdo

  • Simon Gallagher
  • 0
  • 1759
  • 180

Se você tem filhos em sua casa, pode ter sentido a necessidade de bloquear determinados sites indesejáveis. Outra área de problema comum são os sites de mídia social - você pode sentir que crianças (e adultos) perdem muito tempo no Facebook, Twitter etc. e deseja bloqueá-las ou, pelo menos, torná-las acessíveis apenas em determinados momentos do dia.

Para tornar isso possível, precisamos de um roteador mais filtro de conteúdo - um dispositivo através do qual todos os nossos dispositivos, como laptops, smartphones e tablets, se conectam à Internet. Este dispositivo também intercepta os sites aos quais esses dispositivos acessam e os bloqueia se tentarem acessar um site na lista negra.

Existem filtros de conteúdo comerciais e prontos para uso disponíveis no mercado, mas para nós tipos de bricolage, não há graça nisso. Assim, vamos sujar as mãos e configurar um Raspberry Pi para o trabalho. Escolhemos o Raspberry Pi para este projeto devido ao seu tamanho minúsculo e consumo de energia insignificante. Contudo, estas instruções funcionarão quase não modificadas com praticamente qualquer computador executando o Debian Linux ou um derivado (Ubuntu, Mint etc.).

aviso Legal: Este guia pressupõe um nível intermediário de experiência com o Linux e uma disposição para solucionar problemas, se e quando eles surgirem. Experiência anterior com linhas de comando e firewalls é um bônus.

Como funciona

Hardware

Usaremos o Raspberry Pi 3 como um filtro de conteúdo cum do roteador. Para isso, precisaremos duas interfaces de rede nele - um para conectar-se à Internet e outro para atuar como um ponto de acesso WiFi para nossos outros dispositivos se conectarem. O Raspberry Pi 3 possui um conector Ethernet embutido e um módulo WiFi. Portanto, nesse cenário, podemos usar um cabo Ethernet (eth0) para se conectar à Internet, enquanto o módulo WiFi (wlan0) atuará como um ponto de acesso.

Obviamente, nem sempre é possível conectar-se à Internet usando Ethernet. Nesse caso, você precisará de um dongle USB WiFi compatível (wlan1) para se conectar à Internet, enquanto o módulo WiFi embutido (wlan0) atuará como um ponto de acesso. Essa é a configuração que usaremos neste guia.

Lembre-se de que, embora um Raspberry Pi 3 seja adequado principalmente para uma configuração doméstica com alguns laptops e smartphones, não fornecerá o desempenho necessário para uma instalação de grande escritório. Procure um hardware mais capaz se muitos clientes estiverem se conectando ao seu filtro de conteúdo.

Programas

Usaremos o excelente E2guardian para interceptar e filtrar nossas solicitações da web. Como a filtragem de conteúdo pode ter um impacto no desempenho (dependendo do tamanho da lista de bloqueio), usaremos o cache do Squid para compensar esse impacto no desempenho.

Pré-requisitos

1. Raspberry Pi 3 com a versão mais recente do Raspbian OS instalada e acesso à Internet. Se você está começando apenas com o Raspberry Pi, recomendamos a leitura do nosso guia sobre como começar com o Raspberry Pi 3.

2. [Opcional] Dongle USB WiFi - Isso é necessário se, e somente se, você não conseguir conectar o Raspberry Pi 3 à Internet com um cabo Ethernet. Se você planeja usar o WiFi para conectar-se à Internet e como um ponto de acesso, isso é necessário.

3. Acesso físico ao Raspberry Pi - Devido à natureza deste artigo, um único erro na configuração do firewall pode bloquear você do seu Pi se você o usar no modo sem cabeça. Portanto, é recomendável conectar um monitor, teclado e mouse enquanto o configura até que tudo esteja configurado.

Use o Raspberry Pi como roteador

1. Conecte seu Pi à Internet usando Ethernet (eth0) Se você estiver usando um dongle USB WiFi (provavelmente wlan1), conecte-o à Internet. Deixe o módulo WiFi embutido (wlan0) como é por enquanto.

2. Pegue o software obrigatório que precisamos:

sudo apt instala iptables iptables-persistent hostapd dnsmasq squid3

3. Vamos montar hostapd para que nosso Pi pode atuar como um ponto de acesso WiFi. Para isso, crie um arquivo de configuração usando seu editor de texto favorito, por exemplo sudo nano /etc/hostapd/hostapd.conf, e cole o conteúdo da nossa página do GitHub.

Algumas linhas que você pode querer modificar de acordo com o gosto são:

ssid = RaspberryPiAP

Esta linha determina qual será o nome do ponto de acesso. Eu escolhi RaspberryPiAP.

wpa_passphrase = beebom.com

Isso especifica a senha usada para acessar o ponto de acesso. eu usei beebom.com, mas é recomendável alterá-lo para uma senha forte de sua escolha.

4. Em seguida, vamos configurar um servidor DHCP usando dnsmasq. Edite o arquivo de configuração /etc/dnsmasq.conf, e adicione as seguintes linhas no final:

interface [código de origem] = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20.192.168.8.254.255.255.255.0,12h [/ sourcecode]

Isso faz com que a interface wlan0 (o módulo WiFi embutido) distribuir endereços IP para clientes no 192.168.8.20 para 192.168.8.254 alcance.

5. Configuração um endereço IP estático para o módulo WiFi embutido wlan0. Abra o arquivo / etc / network / interfaces. Provavelmente é algo parecido com isto (ênfase minha):

[código-fonte] diretório-fonte /etc/network/interfaces.d

auto lo
iface lo inet loopback

manual iface eth0 inet

permitir-hotplug wlan0
manual de iface wlan0 inet
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

permitir-hotplug wlan1
manual de iface wlan1 inet
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Aqui, localize as linhas em negrito com wlan0, e mude-os, para que o arquivo se pareça com o seguinte:

[código-fonte] diretório-fonte /etc/network/interfaces.d

auto lo
iface lo inet loopback

manual iface eth0 inet

permitir-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
endereço 192.168.8.1
máscara de rede 255.255.255.0
permitir-hotplug wlan1
manual de iface wlan1 inet
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Isso configura um endereço IP estático 192.168.8.1 no wlan0. Lembre-se deste endereço, pois este é o endereço que usaremos para se comunicar com nosso Raspberry Pi posteriormente.

6. Agora configurar o encaminhamento de IP. Edite o arquivo /etc/sysctl.conf, e adicione a seguinte linha a ele:

net.ipv4.ip_forward = 1

7. Agora vamos configurar tradução de endereços de rede (NAT) em nosso firewall. Para fazer isso, digite os 2 comandos a seguir:

sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4

O primeiro comando configura o NAT, enquanto o segundo comando salva nossa atual configuração de firewall em um arquivo chamado /etc/iptables/rules.v4. Isso garante que a configuração persista nas reinicializações.

8. Neste ponto, reinicie o seu Raspberry Pi. Isso é para garantir que todas as alterações que fizemos nos arquivos de configuração sejam funcionais.

9. Após a reinicialização, você poderá ver o recém-criado RaspberryPiAP ponto de acesso (a menos que você tenha alterado o nome na etapa 3) em outros dispositivos, como laptops e smartphones. Você pode se conectar a ele usando a senha especificada e acessar a Internet.

É tudo o que você precisa fazer se precisar de um roteador básico e de baixa potência. Se você também deseja configurar um filtro de conteúdo, continue lendo.

Configurar filtro de conteúdo usando o E2guardian

O E2guardian não está presente nos repositórios Raspbian padrão. Para instalá-lo, acesse a página do Github do projeto e faça o download do arquivo que termina em armhf.deb. Agora abra o Terminal, vá para o seu Transferências pasta (ou onde você escolher baixar o arquivo) e instale-o:

cd ~ / Downloads sudo dpkg -i ./e2guardian_*_jessie_armhf.deb

Você provavelmente verá alguns erros sobre a falta de pacotes ao instalar o E2guardian. Para corrigir isso, deixe a instalação terminar e digite o seguinte comando:

sudo apt-get install -f

Usando listas de conteúdo

Existem várias listas presentes no / etc / e2guardian / lists diretório. Esses arquivos incluem bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist e muito mais. Esses arquivos estão devidamente documentados com comentários. Dê uma olhada neles para se familiarizar.

Como exemplo, vamos supor que você deseja bloquear algumas redes sociais populares. Abra o / etc / e2guardian / lists / bannedsitelist arquivo e sob o Cobertor SSL / CONNECT bloco (já que esses sites usam https em vez de simples http), adicione as seguintes linhas:

facebook.com twitter.com reddit.com

Agora recarregue o serviço E2guardian usando o comando serviço sudo e2guardian reload (você precisará executar este comando toda vez que modificar os arquivos de configuração) Agora, qualquer cliente que use o filtro de conteúdo não poderá acessar esses sites. Mesmo os sites para celular (por exemplo, m.twitter.com) e os aplicativos dedicados para smartphones não funcionam.

E2guardian também bloqueia pornô por padrão. Se você deseja permitir (ei, não estamos julgando), abra o / etc / e2guardian / lists / bannedphraselist e localize a seguinte linha:

.Incluir

Comente adicionando um cerquilha (símbolo #) na frente, para que fique assim:

#.Incluir

Novamente, recarregue a configuração com serviço sudo e2guardian reload, e pronto.

Configurando clientes

Agora que nosso servidor proxy está configurado, podemos prosseguir para a configuração dos clientes. Para usar o filtro de conteúdo, todos os clientes precisam estar conectados ao ponto de acesso do Rapberry Pi e configurados para usar o proxy. A configuração de um proxy é diferente em todos os sistemas operacionais e dispositivos. No entanto, demonstraremos como configurá-lo no Windows e Android, já que estes são mais populares.

janelas

Vamos para Painel de controle> Rede e Internet> Opções da Internet. Na janela que se abre, navegue até o Conexões guia e clique em Configurações de lan.

Aqui, clique em Avançado, e entre 192.168.8.1 como o endereço proxy e 8080 como a porta. Verifique se o Use o mesmo servidor proxy para todos os protocolos caixa está marcada. Clique Está bem.

Isso é tudo o que você precisa fazer. Os navegadores mais populares, como Google Chrome e Firefox, selecionam automaticamente as configurações de proxy do sistema.

Android

Vamos para Configurações do sistema> WiFi. Agora toque e segure o hotspot Raspberry Pi e selecione Modificar rede. Debaixo Opções avançadas, colocou o Proxy opção para Manual. Agora, sob Nome do host do proxy, insira o endereço IP do Pi 192.168.8.1. Debaixo Porta proxy, entrar 8080, e toque em Salve .

Agora você pode testar a configuração do proxy. Tente acessar um site da sua lista negra - você verá uma página de "Acesso negado", como esta:

Aplicação do uso de proxy

Até agora, estamos contando com os clientes se comportando bem e usando a Internet através do filtro de conteúdo. Claro, isso raramente acontece no mundo real. Portanto, para impor todos os clientes ao proxy, execute os seguintes comandos:

sudo iptables -A PREROUTING -t nat -p tcp --destination-port 80 -j REDIRECT --to-ports 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 443 -j REDIRECT --to- portas 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4

Isso redirecionará automaticamente todos http (porta 80) e https (porta 443) do hotspot do raspberry Pi para o proxy do filtro de conteúdo. Agora, sem definir configurações de proxy em seus dispositivos, eles não poderão acessar dados seguros https sites como Facebook, Gmail, Twitter etc. Isso garante que qualquer pessoa que deseje se conectar ao seu hotspot Pi precise passar pelo proxy.

É tudo o que você precisa saber para o uso básico do filtro de conteúdo. Se você deseja aprender alguns recursos avançados, continue lendo.

Cenários avançados de uso

Configurando um filtro com base no tempo

Digamos que você queira bloquear os sites mencionados no Usando listas de conteúdo seção acima, mas somente em determinados horários do dia. Pessoalmente, prefiro bloquear o Reddit, o Facebook e o Twitter durante o horário de trabalho (das 9h às 17h) durante a semana porque eles são um pesadelo de produtividade.

Abra o / etc / e2guardian / lists / bannedsitelist e adicione a seguinte linha:

tempo: 9 0 17 0 01234

Esta linha funciona da seguinte maneira - o cronômetro começa às 9 (9 horas da manhã) 0 0 (00 minutos), até 17 (17:00 no formato 24 horas) 0 0 (00 minutos), de 0 0 (Segunda-feira) a 4 (Sexta-feira).

Vamos dar outro exemplo:

tempo: 10 30 20 45 024

Isso bloqueará os sites configurados das 10:30 (10 30) às 20:45 (20 45) na segunda-feira (0), quarta-feira (2) e sexta-feira (4).

Permitir que determinados endereços IP ignorem o proxy

É possível permitir que determinados endereços IP ignorem o filtro de conteúdo. Isso pode ser configurado por configurando o firewall. Você deve ter notado que em nossa dnsmasq.conf, apenas configuramos o ponto de acesso para atribuir endereços IP de 192.168.8.20 para 192.168.8.254 para clientes. Isso significa endereços de 192.168.8.2 para 192.168.8.19 não serão atribuídos automaticamente a nenhum cliente (não podemos usar 192.168.8.1 porque é isso que o próprio Raspberry Pi usa).

Para fazer isso, primeiro configurar um IP estático no dispositivo ao qual você deseja dar acesso total. Por exemplo, para configurar um IP estático de 192.168.8.2 em uma máquina Windows, use estas configurações:

Agora, no seu Raspberry Pi, execute os seguintes comandos.

sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j RETURN sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j RETURN

Agora, desativar o uso de proxy no seu dispositivo, e tente abrir um site proibido. Você deve poder abri-lo. Se houver mais endereços IP que você deseja adicionar à lista de permissões, execute os dois comandos acima novamente, mas substitua o endereço IP pelo que você deseja. Quando estiver satisfeito com a lista de permissões, execute o seguinte comando para salvar sua configuração de firewall:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Uma coisa importante a ter em mente é que você não deve deixar ninguém saber os endereços IP da lista de permissões. Caso contrário, eles podem simplesmente configurar o dispositivo para esse endereço IP para ignorar o proxy.

Preocupações com segurança

Como o Raspberry Pi será o ponto de entrada e saída de todas as suas comunicações, é importante protegê-lo. Aqui estão algumas dicas sobre como melhorar a segurança. Lembre-se de que esses são apenas indicadores básicos e não uma lista abrangente de armadilhas de segurança. A quantidade de segurança dependerá da natureza da sua rede (casa, pequeno escritório etc.) e do quão maliciosos os usuários são..

Desativar serviços desnecessários

Como esse é um roteador, é melhor executar apenas os serviços necessários. Mais serviços em execução significa mais vulnerabilidades que podem ser potencialmente exploradas. Definitivamente não use este sistema como uma área de trabalho comum.

Vamos para Menu> Preferências> Configuração do Raspberry Pi. No Interfaces guia, desative todos os serviços que você não precisa.

Alterar a senha padrão

Uma nova instalação do Raspbian vem com a senha padrão 'raspberry' para o usuário padrão 'pi'. É recomendável alterar isso para uma senha mais segura. Para alterá-lo, abra um terminal e execute este comando:

passwd

Remova o monitor e outros periféricos

Como tudo o que será executado neste Pi é o software necessário para usá-lo como roteador e filtro da Web, não precisamos de um monitor ou de outros periféricos, como mouse e teclado conectados a ele. Se você precisar alterar configurações, pode sempre usar o SSH ou conectar um monitor e teclado conforme necessário.

Desativar login automático

O Raspbian é configurado para efetuar login automaticamente com as credenciais de usuário 'pi' sem solicitar a senha. Isso pode ser bom para uma área de trabalho familiar de uso geral, mas perigoso para um roteador. Para desabilitar isso, na área de trabalho Raspbian, vá para Menu> Preferências> Configuração do Raspberry Pi. No Sistema guia, na frente da Login automático título, desmarque a Faça o login como usuário 'pi' caixa de seleção.

Na mesma caixa de diálogo, também é aconselhável definir o Boot definindo para Para CLI. Isso economizará recursos, pois não precisamos de uma GUI em um roteador. Se você quiser usar a área de trabalho por qualquer motivo, faça login com seu nome de usuário e execute o startx comando para ativar a interface gráfica.

Solução de problemas comuns

As interfaces continuam sendo renomeadas

Isso é muito comum se você estiver usando duas interfaces sem fio no seu Pi. Se você estiver usando Ethernet para conectar seu Pi à Internet, poderá ignorar com segurança esta seção. O problema é que ambas as interfaces sem fio (wlan0 e wlan1) às vezes trocam nomes após uma reinicialização. Ou seja, o módulo WiFi embutido wlan0 é renomeado para wlan1, e vice versa. Obviamente, esse é um grande problema, pois contamos com um nome consistente para nossos arquivos de configuração. Aqui está como torná-lo consistente nas reinicializações:

1. Descubra o Endereço MAC de suas interfaces. Execute o comando ifconfig | grep HWaddr no seu Raspberry Pi. Você verá uma saída como a seguinte:

Anote o texto à direita da palavra 'HWaddr' no campo wlan0 e wlan1 seção. Você pode ignorar com segurança o eth0 seção. Estes são os endereços MAC das suas interfaces sem fio.

Se você não tiver certeza de qual endereço MAC pertence a qual interface, basta desconectar o dongle USB WiFi e executar o comando novamente. o wlan A interface que aparece agora é a sua interface WiFi integrada, enquanto a outra é USB.

2. Crie um novo arquivo /etc/udev/rules.d/10-network.rules usando seu editor de texto favorito. Por exemplo :

sudo nano /etc/udev/rules.d/10-network.rules

3. Digite o seguinte texto neste arquivo. Substitua xx: xx: xx: xx etc. pelo endereço MAC apropriado:

[código de fonte] # Configure o módulo WiFi embutido como wlan0. Substitua xx: xx: xx etc. pelo
# endereço MAC do módulo embutido
SUBSISTEMA == "rede", AÇÃO == "adicionar", ATTR endereço == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"

# Configure o dongle USB WiFi como wlan1. Substitua yy: yy: yy etc. pelo
# Endereço MAC do dongle USB
SUBSISTEMA == "rede", AÇÃO == "adicionar", ATTR endereço == "aa: aa: aa: aa: aa: aa: aa", NAME = "wlan1" [/ sourcecode]

Verifique se o endereço MAC da interface WiFi corresponde a wlan0, e o WiFi USB para wlan1 já que essa é a convenção que estamos seguindo neste guia.

4. Reinicie o seu Raspberry Pi. Suas interfaces começarão com o nome correto agora.

Redefinindo a configuração do firewall

Outro problema comum é um firewall mal configurado. Dependendo da configuração da sua rede, pode levar várias tentativas até você acertar o firewall. Se a qualquer momento você achar que pode ter estragado a configuração do firewall, execute os seguintes comandos para começar do zero:

sudo iptables - flush sudo iptables - tabela nat - flush sudo iptables - cadeia de exclusão sudo iptables - tabela nat - cadeia de exclusão

Isso excluirá tudo configuração de firewall. Agora você pode começar a configurar o firewall do zero. Quando estiver satisfeito, execute o comando sudo iptables-save | sudo tee /etc/iptables/rules.v4 para tornar a configuração permanente.

CONSULTE TAMBÉM: Como executar comandos no Raspberry Pi por email

Use seu Raspberry Pi como roteador e filtro de conteúdo

Tudo isso é transformar seu Raspberry Pi em um roteador potente, além de um proxy de filtro de conteúdo. Você pode obter os arquivos de configuração exatos que usamos para nossa instalação em nossa página do GitHub. Deixe-nos saber como isso funciona para você. Se algo não funcionar como o esperado ou se uma etapa parecer muito confusa, sinta-se à vontade para fazer uma pergunta na seção de comentários abaixo.




Ainda sem comentários

Guias de compra de gadgets, tecnologias importantes
Publicamos guias detalhados para a compra de equipamentos, criamos listas interessantes dos melhores produtos do mercado, cobrimos notícias do mundo da tecnologia