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.
Depois que demos um upgrade em nosso Squid, é hora de criar as políticas de acesso (os bloqueios).
Antes de começar, é importante lembrar que o Squid trabalha de forma hierárquica, ou seja, ele lê as regras em uma sequência lógica. Se você diz que ele deve bloquear a URL que contenha a palavra "sexo" e depois mandar liberar, a URL continuará bloqueada, pois quando ele se encaixa em uma determinada regra, ele não "lê" as demais. Bem, mãos à massa.
Obs.: Nos exemplos a seguir, utilizarei como exemplo somente as ACLs do tipo: src e time.
Por questão de organização, é bom criar arquivos com o conteúdo a ser trabalho para não poluir o ".conf":
Depois de adicionar estas linhas no "squid.conf", é só reiniciar para que elas entrem em vigor:
# /etc/init.d/squid restart
Agora, vamos entender o funcionamento destas ACLs. No exemplo acima, criamos um modelo meio que padrão, no primeiro "parágrafo" criamos as ACLs e no segundo, liberamos ou bloqueamos as mesmas de acordo com nossa política.
Vamos dissecar linha por linha:
acl rede_local src 192.168.0.0/24 -> Cria a ACL rede_local contendo a faixa de endereço da rede local.
acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt " -> Cria a ACL palavras_bloqueadas contendo as palavras proibidas que estão no arquivo
descrito.
acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt " -> Cria a ACL sites_bloqueados contendo os sites proibidos que estão no arquivo descrito.
acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt" -> Cria a ACL redes_sociais contendo os sites de redes sociais que estão no arquivo descrito.
acl liberados src "/etc/squid/ips_liberados.txt " -> Cria a ACL liberados contendo endereços de IP que estão no arquivo descrito.
acl porno url_regex -i "/etc/squid/sites_porno.txt " -> Cria a ACL porno contendo os sites pornôs que estão no arquivo descrito.
acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt" -> Cria a ACL formato_arquivo contendo os tipos de arquivos que serão bloqueados que estão no
arquivo descrito.
acl horario_almoco time 12:00-13:00 -> Cria a ACL horario_almoco do horário de meio dia há uma da tarde.
Aqui que a mágica acontece, a ordem sobre como você organiza as ACLs, é que faz toda a diferença, vamos lá:
http_access allow liberados
Aqui, nós liberamos acesso total para os IP’s que estiverem no arquivo que criamos anteriormente.
Nestas linhas, permitimos que qualquer usuário acesse os sites de redes sociais que estiverem no arquivo que criamos dentro do horário de 12:00 as 13:00, após esse horário, o acesso é bloqueado.
http_access deny sites_bloqueados
Bloqueia o acesso aos sites que estiverem no arquivo criado dentro da ACL 'sites_bloqueados'.
http_access deny palavras_bloqueadas
Bloqueia o acesso à palavras que estiverem no arquivo criado dentro da ACL 'palavras_bloqueadas'.
http_access deny porno
Bloqueia o acesso aos sites pornos que estiverem no arquivo criado dentro da ACL 'porno'.
http_access deny formato_arquivo
Bloqueia o acesso a downloads que forem do tipo de arquivo contido no arquivo criado na ACL 'formato_arquivo'.
http_access allow rede_local
Se o acesso não se encaixou em nenhuma das regras acima e for proveniente da rede interna, ele é liberado.
[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