Esse artigo é voltado para os iniciantes em TI, portanto, procurei escrevê-lo o mais didático possível para ajudar a galera. Tratando-se de uma pequena iniciação ao Squid.
O Squid, um servidor de Proxy, trabalha como saída principal da rede. Com isso, podemos centralizar nosso foco em segurança (políticas de acesso, autenticação, etc.) em uma única máquina.
O Squid trabalha com os principais protocolos da Internet, alguns deles são: HTTP, HTTPS, FTP.
O Squid é um Software Livre licenciado pela GPL, sua utilização pode nos trazer várias vantagens, como:
Autenticação;
Controle de acesso;
Cache;
Controle centralizado;
Registros de acesso, etc.
Ele também atua como Proxy transparente evitando que usuários "espertinhos" possam burlar o controle de acesso.
Bem, chega de teoria e vamos começar o trabalho. Este tutorial é voltado à distribuições baseadas no Debian.
O Squid é formado de um único pacote, o que torna sua instalação extremamente fácil:
# apt-get install squid
Depois que instalamos o Squid, vamos renomear o arquivo de configuração para criarmos um do zero:
http_access allow localhost
http_access allow redelocal
http_access deny all
Depois, dê um:
# /etc/init.d/squid restart
...Que seu Squid já deve estar em pleno funcionamento.
Entendendo a configuração
Agora, precisamos descobrir para que serve cada uma destas linhas:
http_port 3128: Define em qual porta o Squid vai atuar, a porta default é a 3128, mas podemos definir qualquer outra porta.
visible_hostname KORZOS: Define o nome do servidor, lembre-se de substituir o "KORZOS" pelo nome do seu servidor.
acl all src 0.0.0.0/0.0.0.0: Esta linha cria uma ACL, uma política de acesso com nome "all" contendo qualquer IP.
acl localhost src 127.0.0.1/255.255.255.255: Aqui criamos uma ACL de nome "localhost" contendo localhost.
acl SSL_ports port 443 563: Cria a ACL contendo as portas que são utilizadas no protocolo HTTPS.
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535: Cria a ACL contendo as portas de diversos protocolos conhecidos na Internet.
acl manager proto cache_object: Cria a ACL manager do tipo proto.
acl purge method PURGE : Cria a ACL manager do tipo method.
acl CONNECT method CONNECT: Cria a ACL CONNECT também do tipo method.
http_access allow manager localhost: Libera a ACL manager e localhost.
http_access deny manager : Bloqueia a ACL manager.
http_access allow purge localhost: Libera a ACL purge e localhost
http_access deny purge: Bloqueia a ACL purge.
http_access deny !Safe_ports: Esta linha se torna bastante interessante pelo uso da "!", pois ela bloqueia qualquer conexão que não contenha o conteúdo da ACL
Safe_Ports.
http_access deny CONNECT !SSL_ports: Bloqueia qualquer conexão que não esteja no conteúdo da ACL SSL_ports.
acl redelocal src 192.168.0.0/24: Cria a ACL redelocal contendo a faixa de endereço da rede.
http_access allow localhost: Libera a ACL localhost.
http_access allow redelocal: Libera a ACL redelocal.
[5] Comentário enviado por rick_G em 30/07/2012 - 01:25h
Thiago a respeito da versão do squid a mais usada atualmente é a 2.7 pela sua estabilidade, outras versões como a 3.0 ou 3.1 não são tão aplicáveis quando você precisa usar o patch do zph ou o tproxy, em breve irei postar outro artigo sobre o tproxy e zph. Resumindo, ao meu ver a verão 2.7 é a "melhor" ate o momento.
[9] Comentário enviado por david fonseca em 30/07/2012 - 08:43h
[6] Comentário enviado por rik_99 em 30/07/2012 - 01:28h:
David esse problema provavelmente é o seu firewall que deve estar segurando alguma coisa, precisamos de mais alguns detalhes para tentar lhe ajudar...
Certo , quais informações ?
tentei liberar a porta 44405 com o comando iptables -A FORWARD -p tcp --dport 44405 -j ACCEPT , quer teoricamente e a porta de comunicação do muonline
e coloquei o ip 10.75.0.254 ( estar fora da minha range dhcp ) para passar por fora do proxy
tem algum comando ou software quer mim mostre a porta quer o usuário esta tentando abri quando inicia o game?
[14] Comentário enviado por rick_G em 31/07/2012 - 09:05h
David muda o ip da máquina pra faixa da sua rede.... e vê o que o resultado do tcpdump, aqui ele so ta tentando uma conexão no dominio onmu, e esta mandando um broadcast nessa faixa 10.75.0.0 para saber quem o server dns, não sei como esta sua infra ai, qual dns vc colocou nessa máquina, existe algum dns nessa faixa? coloca o ip na faixa normal ai pra ver o que acontece e posta o resultado.
[15] Comentário enviado por david fonseca em 03/08/2012 - 17:27h
Amigo muito obrigado , meu problema foi resolvido , o problema era quer eu estava colocando o " option domain-name-servers " da minha rede interna , depois quer mudei para o quer seu artigo mostra funcionou perfeito , muito obrigado
[16] Comentário enviado por marcelinoti em 09/08/2012 - 10:09h
bom dia, galera alguem sabe me dizer qual a diferenca em configuracao do squid 2.7 e squid 3.1? pois estou usando Ubuntu Linux 12.04 serve com squid 3.1 tem hora que da alguns erros que me tira do serio. até mais....
[17] Comentário enviado por rick_G em 09/08/2012 - 11:16h
Marcelo pessoalmente não gosto do squid 3.1 pois não tem ou da um trabalho de outro mundo para você utilizar patch como o ZPH ou Tproxy, o squid 2.7 é tipo mãe de todos... estável e compatível com a maioria das "expansões" que você desejar usar com ele, mas já que você esta usando abre um topico la no forum pra gente poder te ajudar, posta as mensagens de erro ou o que esta acontecendo... :)
[18] Comentário enviado por rommelinux em 01/12/2012 - 20:18h
Ótimo, ótimo, ótimo o artigo, gostaria de adicionar uma dica para aproveitar esse artigo e configurar o squid como transparente e lembrando que terá que configurar no iptables também pois a porta que o artigo utiliza é a 3128 segue abaixo a linha que deve ser alterada:
http_port 3128 transparent
E para as estações utilizarem o squid como gateway sem precisar configurar o proxy nos browser, deve ser executado esse comando do iptables, segue abaixo:
Só achei que seria bom adicionar essa informação ao artigo, se o proprietário se encomodar, perdão por favor, mas está de parabéns o artigo, só gostaria de ajudar mais aos nossos colegas mesmo.
[19] Comentário enviado por rick_G em 01/12/2012 - 20:21h
pow rommelinux vlw, na verdade eu esqueci de adicionar essa informação, hehehe
obrigado pelo elogio tbm, isso ajuda muito a incentivar o nosso trabalho...
[20] Comentário enviado por brunnus em 11/07/2013 - 11:20h
Muito obrigado por sua contribuição amigo rik_99
Também agradeço ao amigo rommelinux pela dica do proxy transparent, o meu aqui ta funcionando legal...
[21] Comentário enviado por frodopuc em 11/03/2014 - 17:42h
Olá amigo, poderia me ajudar a corrigir esses erros abaixo?
root@iphan-pr-001:/etc/squid3# squid3 -k reconfigure
2014/03/11 17:38:22| /etc/squid3/squid.conf line 9: acl QUERY urlpath_regex cgi-bin ?
2014/03/11 17:38:22| ERROR: invalid regular expression: '(cgi-bin)|(?)': Invalid preceding regular expression
2014/03/11 17:38:22| /etc/squid3/squid.conf line 9: acl QUERY urlpath_regex cgi-bin ?
2014/03/11 17:38:22| ERROR: invalid regular expression: '?': Invalid preceding regular expression
2014/03/11 17:38:22| ERROR: Skipping regular expression. Compile failed: '?'
2014/03/11 17:38:22| WARNING: (B) '::/0' is a subnetwork of (A) '::/0'
2014/03/11 17:38:22| WARNING: because of this '::/0' is ignored to keep splay tree searching predictable
2014/03/11 17:38:22| WARNING: You should probably remove '::/0' from the ACL named 'all'
2014/03/11 17:38:22| aclParseAclLine: ACL 'manager' already exists with different type.
FATAL: Bungled /etc/squid3/squid.conf line 26: acl manager proto cache_object
Squid Cache (Version 3.3.8): Terminated abnormally.
CPU Usage: 0.011 seconds = 0.004 user + 0.007 sys
Maximum Resident Size: 21616 KB
Page faults with physical i/o: 0
eu havia comentado a linha que contem o acl manager proto cache_object
o squid deu start porem não bloqueia as paginas...
/etc/squid3# uname -a
Linux iphan-pr-001 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
estou usando 2 placas de rede = 1 que recebe internet e outra para ser servidor Proxy + DHCP + Firewall
[22] Comentário enviado por willrodrigues em 09/09/2014 - 23:38h
Pessoal boa noite. Sou novo e gostaria de saber em que estou errando pois o squid não funciona no navegador. Só aparece navegação cancelada. E também não funciona no localhost
Como servidor uso o debian 7 e Windows 8.1 nas estações.
Segue abaixo meu arquivo de configuração, se alguém puder me ajudar ficaria muito feliz.
#PARAMETROS DE AUTENTCAÇÃO
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 1 hour
auth_param basic realm Para obter um loguin e senha ligue para (12) 97404-5120
auth_param basic casesensitive off
#Porta default do proxy
http_port 3128
#O nome do servidor
visible_hostname proxy.wmti.com.br
acl redelocal src 192.168.1.0/24
http_access allow redelocal
http_access allow localhost
acl all src 0.0.0.0/24
http_access deny all
Esse é meu arquivo pessoal.
Estou a disposição pra ajuda-los se precisar de alguma coisa relacionado a Windows Server... 10 anos de profissão.
Forte abraço a todos.
[24] Comentário enviado por willrodrigues em 10/09/2014 - 12:30h
Olá Ricardo, então cara, eu instalei a 3.x... no debian. Engraçado que tenho um ubuntu server e funciona filé. Não to achando o erro nesse de jeito nenhum.
Obrigado
[25] Comentário enviado por rick_G em 10/09/2014 - 13:36h
Então, eu tbm tive problemas com a versão 3.x no Debian e acabei migrando pro ubuntu server, mas tu já tentou remover a parte de autenticação pra ver se vai dar erro? Tenta deixar ele o mais seco possivel pra ver se vai funcionar e depois vai ativando as opções que vc quer aos poucos.
Se vc não estiver com tanta pressa eu vou postar um tuto do squid 3.1 no meu blog até segunda.
[26] Comentário enviado por willrodrigues em 10/09/2014 - 14:25h
Então Ricardo, eu tenho o squid rodando numa vm dentro do ubuntu server... Estou desistindo do debian 7, não vai de jeito nenhum. Já estou há 2 dias direto tentando e não vai. Vou formatar e instalar o ubuntu server 12. O que você me aconselha, instalo com duas placas de rede ou uma só?
Valeu
[28] Comentário enviado por willrodrigues em 10/09/2014 - 14:55h
Então, é sim pro squid. É que li algumas coisas sobre e sempre recomendaram duas placas de rede por conta do iptables; fica melhor o gerenciamento do firewall. Não sei, não vi diferença nenhuma do server 12 pro 14.04 LTS. Mais eu estou formatando agora (nesse momento) com ubuntu server 12. Me diz uma coisa: com duas placas de rede, antes de eu subir o squid eu preciso compartilhar a internet do servidor com o dhcp. Pode ser o dhcp do roteador mesmo? ou tenho que subir um dhcp no ubuntu? Obrigado mais uma vez
[30] Comentário enviado por rick_G em 10/09/2014 - 15:18h
Então além de proxy essa máquina vai ser gateway tbm né? Se for vc vai precisar de 2 placas mesmo, a questão do dhcp vc pode usar o do roteador mas é tão simples que não vejo o pq não instalar o dhcp no servidor tbm, dai tu colocar o roteador em modo brigde e pronto.
[31] Comentário enviado por willrodrigues em 10/09/2014 - 15:26h
Entendi...
Então, meu modem já é aqueles roteadores com 4 portas da vivo. Então, acho que não tem necessidade mesmo.
Meu modem esta como 192.168.1.1 servindo 192.168.1.100 até 192.168.1.254. A placa de rede do servidor que vai ser o squid vai receber o ip 192.168.1.254 setado pelo mac address direto no roteador e a configuração dentro de interfaces será automática.
Minha dúvida é, se eu fizer isso, consigo deixar transparente? Acho que não ne rs.
Por que queria que, quando alguém acessa pelo wi-fi caísse no proxy também. E como o wifi esta dentro do modem da vivo não sei se dá. Só se dentro do roteador eu apontasse pro ip do gateway para o SQUID. Certo? ou to todo errado? rs
Valeu
[32] Comentário enviado por rick_G em 10/09/2014 - 15:39h
Cara se fosse vc eu desativaria a wi-fi do moden e deixaria só o servidor conectado nele. E no servidor vc vai configurar iptables, proxy, dhcp e o que mais vc quiser configurar, dai saí um cabo da 2ª interface do servidor para um switch que por sua vez vai servir as máquinas da rede. Em relação a conexão wi-fi, tu vai colocar um outro roteador em modo bridge conectado no switch, assim tanto os hosts com cabo e os da wi-fi irão cair no proxy.
[34] Comentário enviado por rick_G em 10/09/2014 - 16:04h
Vc teria que criar um alias na interface de rede. É melhor usar só o squid no servidor e fazer o redirecionamento da porta 80 no roteador para o ip do squid.
[35] Comentário enviado por willrodrigues em 10/09/2014 - 16:57h
Ricardo, primeiramente obrigado pela FORÇA. Cara, eu formatei o bixo, subi o ubuntu server 12 e fiz todos os procedimentos abaixo. Mesmo assim o servidor continua recusando as conexões. Será que eu estou esquecendo de alguma coisa tipo iptables? Eu mesmo criei esse passo a passo mais não esta indo rs
ATUALIZE O UBUNTU
apt-get update
apt-het upgrade
-----------------------------------------------------------------
HABILITE A PORTA DE GERENCIAMENTO REMOTO 22
apt-get install ssh
-----------------------------------------------------------------
BAIXE E INSTALE O SQUID
apt-get install squid
PARE O SERVIÇO DO SQUID PARA EDITAR O ARQUIVO SQUID.CONF
/etc/init.d/squid3 stop
-----------------------------------------------------------------
MUDE O NOME DO SQUID.CONF PARA ORIGINAL
mv /etc/squid3/squid.conf /etc/squid3/squid.conf.ORIGINAL
-----------------------------------------------------------------
EDITE UM NOVO ARQUIVO SQUID.CONF COMO ESTE:
#PARAMETROS DE AUTENTCAÇÃO
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 1 hour
auth_param basic realm Para obter um loguin e senha ligue para (12) 97404-5120
auth_param basic casesensitive off
#Porta default do proxy
http_port 3128
#O nome do servidor
visible_hostname proxy.wmti.com.br
acl redelocal src 192.168.1.0/24
http_access allow redelocal
http_access allow localhost
acl all src 0.0.0.0/24
http_access deny all
-------------------------------------------------------------------------------------------------------
RODE O SQUID E VEJA OS ERROS
\etc\init.d\squid3 start
-------------------------------------------------------------------------------------------------------
INSTALE O HTPASSWD
apt-get install apache2-utils
-------------------------------------------------------------------------------------------------------
CRIE AS PASTAS DENTRO DE /USR/LOCAL
mkdir /squid3/var/logscache.log
------------------------------------------------------------------------------------------------------
DE PERMISSOES DE ESCRITA NA PASTAS
chmod 777 -R /usr/local/squid3
depois de as mesmas permissoes para cache.log
-------------------------------------------------------------------------------------------------------
VEJA OS ERROS NOVAMENTE
rode o comando squid3 -z
-------------------------------------------------------------------------------------------------------
[36] Comentário enviado por willrodrigues em 10/09/2014 - 18:11h
Cara, resolvi...
essa linha ai ------> cache_access_log /var/log/squid3/access.log além dela estar errada no meu arquivo de conf, ela esta duplicada e o squid não startava.. eu simplesmente apaguei ela e ele subiu.. de qualquer forma muito obrigado pelas dicas!
[37] Comentário enviado por MorFerreira em 17/09/2014 - 20:10h
Fiz o arquivo e esta gerando o seguinte erro
-bash: /etc/init.d/squid: arquivo ou diretorio não encontrado
onde estou errando?
sou iniciante, estou usando o squid3
[38] Comentário enviado por mainbr em 26/11/2014 - 23:22h
Quando vou reiniciar o servidor squid pela ultima vez aparece isso:
Restarting Squid HTTP proxy: squid2014/11/26 20:21:51| strtokFile: not found
2014/11/26 20:21:51| strtokFile: not found
2014/11/26 20:21:51| strtokFile: not found
2014/11/26 20:21:51| strtokFile: \e not found
[41] Comentário enviado por rodrigo25051989 em 14/03/2017 - 14:48h
Boa tarde!
Uma duvida minha rede é o seguinte cenário:
1º Tenho um modem vivo e um modem NET
2º Tenho um roteador CISCO RV320 (DHCP da rede e Gateway, Load Balance)
3º Switch
4º Servidor Windows server 2012 e os computadores
Como deve ficar a instalação física do proxy?
Entre o Roteador e o Switch e o proxy passa a ser meu gateway?
[42] Comentário enviado por edsonsouza142 em 11/10/2017 - 20:51h
Olá boa noite, como faço para instalar em uma maquina virtual para que possa economizar em hardware? Após fazer as primeiras configurações posso ta usando o putty para fazer as alterações