Como transformar o Raspberry PI num Web Proxy
O Raspberry PI é hoje um dos mini PCs mais populares. Com mais de 2 milhões de unidades vendidas, este é sem duvida um caso de sucesso, à escala mundial, que tem ser servido de base a muitos e interessantes projectos.
No seguimento da nossa parceria com a INMotion,hoje vamos ensinar como podem transformar o vosso Raspberry PI num Web Proxy.
Em 2009, o nosso colaborador Francisco Aragão escreveu aqui um artigo interessante que explica o conceito de proxy e que tipos de proxy existem.
Na prática, uma máquina que se ligue através de um proxy, “obedece” às regras definidas por este e todos os pedidos (ex. páginas web, ficheiros, etc) são também feito pelo proxy que posteriormente os devolve ao cliente. Desta forma é fácil filtrar os conteúdos que pretendemos através do proxy, uma vez que todos os pedidos passam por ele.
O Squid oferece funcionalidades de proxy HTTP, suporte para caching de páginas web, mecanismos de controlo de acessos entre outras funcionalidades.
Como instalar o Squid Web Proxy?
Para instalar o Squid no Raspbian deve abrir o terminal e inserir o seguinte comando:
sudo apt-get install squid |
Depois de instalado, vamos efectuar uma cópia do ficheiro de configuração do Squid.
cd /etc/squid/ sudo –s cp squid.conf squid.conf.ORIG |
Para simplificar o ficheiro de configuração (squid.conf), podemos retirar tudo o que é comentários ou linhas em branco. Para isso basta usar o seguinte comando:
cat squid.conf.origin | egrep -v -e '^[[:blank:]]*#|^$' > squid.conf |
o output deverá ser algo do tipo:
Configuração do Squid
A configuração do squid é relativamente simples. Para isso devem proceder as seguintes alterações:
Considerando que a nossa rede interna é a 192.688.1.0/255.255.255.0, devem acrescentar no ficheiro a seguinte regra:
acl localnet src 192.168.1.0/24 |
Nota: Podem desactivar a rede 10.0.0.0/8 e 172.16.0.0/12
Para permitir que as máquinas internas acedam à rede via proxy, devem acrescentar também a seguinte permissão:
Depois de feitas as configurações anteriores, devem reiniciar o serviço squid.
/etc/init.d/squid reload |
No cliente (browser)
Para que os clientes comecem a usar o proxy, devem ir ao browser (para este exemplo vamos usar o Firefox), nas opções, acedemos a Network e Settings. Ací devem escolher a opção manual e inserir a seguinte informação:
- Address: 192.168.1.94 (endereço do proxy squid)
- Port: 3128
Feito isto, é so testar se tudo está a funcionar correctamente. De referir que muitas outras configurações podem ser realizadas no squid. Se alguém pretender partilhar as configurações que têm nos vossos squids…força . Nos próximos dias vamos ensinar como podem bloquear sites/serviços.
Se alguém tiver tiver alguma sugestão/ideia basta deixar nos comentários. Boas filtragens!
Este artigo tem mais de um ano
oh pedro, squid é dificil, e talvez inseguro hoje em dia ter um servidor proxy aberto, mas a unica vantagem que trás é as ACL’s.
Para isso é melhor fazer um tunnel de SSH.
Assim além de termos um “proxy” temos encriptação.
Podemos também fazer um servidor PPTP, ligar por VPN, e depois disso, ligarnos por SSH para fazer um tunnel SSH.
mas isto é nivel paranoico, mas resolve os pacotes em broadcast da rede local, por exemplo, numa rede publica sem fios.
Podias fazer um tut disso, do tunnel SSH.
Eu uso isso quase todos os dias para aceder ao meu PC de casa e á consola de gestao do meu router , etc etc etc. Trás imensas vantagens.
E além disso, podemos criar uma conta na shell do pi que nem homefolder tem, simplesmente inutil, só para servir para fazer o tunnel. Assim ainda mais seguro é contra intrusos.
Que tal? 😀
bom artigo,
int3 😀
Boas int3,
Queres tratar desse post? Teremos todo o gosto me publicar 🙂
Vai ao facebook 😀
Assim é muito melhor 😀
Fazer um tut sobre SSH é que dava mesmo geito.
Tava a precisar de implantar um tunnel SSH para aceder ao pc de casa mas nao sei bem como fazer.
int3 tal como tu (já o fazes) eu precisava de aceder ao pc de casa, Tenho um pequeno servidor e o meu pc de casa a aceder ao servidor e o tunnel ssh ia dar um geitao.
cumpts
Brevemente teremos novidades 😀
Viva,
É disto que andam à procura?!
http://www.aminhacasadigital.com/2013/01/vpn-server-no-raspberry-pi.html
Boas luis, o Pedro Pinto irá lançar, quando puder, um tut para fazer tunnel SSH e VPN PPTP.
Vou ficar a espera “thanks” 😉
Geito, “trás é as ACL’s” … Português senhores…
Obrigado pela correção!
Infelizmente não utilizo a lingua portuguesa frequentemente á algum (muito) tempo e começam a aparecer uns erros 😀
Há alguma forma dos clientes não terem que ser configurados um a um?
Da para configurar de forma a desviar o protocolo UDP? De forma ultrapassar o impertinente trafic shaping da ZON?
Sim dá. Vai ao teu cliente de bittorrent e coloca o “proxy” lá. SOCKS5 dá para enviar qualquer tipo de tráfego(quase tudo).
Podes também usar encriptação (forçar encriptação nos peers), e escolher a porta 80 para estabelecer as conexões.
O meu problema, com a zon é com streaming, nomeadamente no wareztuga e no XBMC é notório!
wareztuga não é streaming! é tudo HTTP! e HTTP usa TCP (Transmission Control Protocol) e não UDP (User Datagram Protocol).
O que a zon faz, e as outras operadoras, é baixar a prioridade do protocolo BitTorrent ( http://pt.wikipedia.org/wiki/BitTorrent ) o que faz com que as velocidades sejam menores.
Outra coisa para evitar isso é forçar a encriptação. O problema é que nem todos os “peers” tem isso ativado, o que faz com que tenhas velocidades mais baixas que o habitual mas tem uma vantagem é a zon não sabe que estás a usar torrent, nem se quer sabe o que é.
Se te bloquearem podes fazer queixa á deco, e fazes testes no teste: http://netmede.pt/ que é um website oficial da anacom para testar a tua velocidade e se a tua operadora está a cortar-te no protocolo bittorrent.
Gostei do artigo, não seria possível faz isso para criar uma VPN? Eu queria criar uma VPN à saída do router do ISP para proteger todo o meu tráfego.
Obrigado
[teu router]—–(tráfego HTTP)—[http server]
Isto é o normal das ligações de casa. uma VPN irá fazer isto:
[teu pc]-(pacotes TCP sobre tunnel GRE)–[teu router]—-(tráfego sobre tunnel GRE)—[servidor VPN]—–(tráfego HTTP)—-[http server]
ou seja, o tráfego é unicamente encriptado (os pacotes PPP encapsulados pelo túnel GRE com RC4) até ao servidor VPN. Apenas isso.
Independentemente de usares ssh, vpn, etc… só e só é encriptado se o servidor web em questão ou o serviço que queres aceder suportar SSL/TLS. Por exemplo: HTTPS (podes forçar o webserver a usar HTTPS mas geralmente não funciona).
Um exemplo simples: Estou ligado ao pplware neste momento. A sapo usa HTTP apenas, não tem certificado SSL por isso é tudo plain text. Mesmo eu estando ligado por túnel SSH a minha casa, o tráfego é apenas encriptado onde atualmente estou até ao meu router. Depois disso é plain text até aos servidores da sapo.
Por isso, tens que ver mesmo bem o que queres fazer. 🙂
Se tiveres dúvidas, estás a vontade, eu posso te explicar com menos coisas técnicas e mais por miúdos 😀
Legal ter apresentado mais uma ideia para o PI, porém não acho boa pratica.
1) Visto que a distro esta em um SD Card e usando um proxy estamos aumentando drasticamente o números de I/O, quanto mais usuários a utilizar maior o desgaste, por mais que o chip do SD Card possua uma “implementação MTD” para nivelar o desgaste do mesmo “wear-leveling”.
2) Não da para fazer um tuning pesado no Squid visto que temos limite da RAM 512MB, então alguns algoritmos para reuso da RAM para o que é mais acessado e tudo mais depende a proporção do Squid na rede ficara limitado.
3) Uma solução diria eu necessária para isso seria criar o spool do Squid com tmpfs porém ira utilizar boa parte da RAM para isso.
Mas é legal conhecer novos recursos para esse carinho (Rbpi).
Boas,
Alguem sabe o ip e porto de um servidor proxy portugues? Estou fora do pais e necessitava de um com alguma brevidade. Desde ja o meu obrigado!!!
Mais vale não sonhar.