Configurar servidor proxy Squid (Ubuntu)

Este artigo tem por objetivo ensinar como configurar um servidor Squid com configurações mínimas para seu funcionamento adequado. Para isso temos que aprender o que é um servidor proxy Squid e como ele funciona para depois podermos configurá-lo.

[ Hits: 291.113 ]

Por: Racy Rassilan em 03/09/2009


Finalização



Este tópico só deve ser seguido se você desejar que o arquivo fique em outro servidor (pode ser um computador comum da rede).

Nesta parte precisaremos entender de NFS, que serve para compartilharmos arquivos pela rede. Já existe um tutorial de minha autoria que ensina como instalar e configurar um, bem como seus conceitos. Como aqui o foco é configurar servidor proxy Squid, vou levar em conta que já foi configurado e instalado o NFS, tanto na máquina que estará servindo o arquivo como na que deseja ter o arquivo, que é a máquina que tem o Squid instalado.

1° passo:

Criar o arquivo em uma máquina que não seja o servidor. Para isso escolha um diretório onde deseja que o arquivo fique. No caso do tutorial, coloquei o arquivo sites_proibidos em uma máquina de IP 192.168.10.102 no diretório /home/aluno1/proibidos/ e configurei para exportar da seguinte forma:

Estando no shell como root, entre no diretório /etc e edite o arquivo exports com o vim. No final do arquivo basta acrescentar a seguinte linha:

/home/aluno1/proibir *(rw,sync,no_root_squash)

Esta linha está exportando todo o conteúdo do diretório home/aluno1/proibir, onde este conteúdo é o nosso arquivo sites_proibidos, que deve estar lá dentro. Salve o arquivo.

2° passo:

Vá ao servidor que está instalado o Squid e edite o arquivo fstab encontrado no diretório /etc, adicionando o seguinte conteúdo:

192.168.10.102:/home/aluno1/proibir /etc/squid/proibidos nfs rsize=8192,wsize=8192,timeo=14,intr

Não deve haver "enter", isso tudo é uma linha única. Essa linha está dizendo que meu servidor vai solicitar o arquivo sites_proibidos, que está em outro computador, que é o 192.168.10.102 no diretório /home/aluno1/proibir e que deve ser montado no servidor no diretório /etc/squid/proibidos, que se você notar, é o diretório onde especificamos que haveria o arquivo em uma de nossas ACLs.

5 - Finalização
Após todas essas configurações, reinicie o servidor para que entre em vigor as nossas configurações.

Agora, para que os clientes necessitem passar pelo proxy Squid, antes de navegar na internet bastar ir ao navegador que você utiliza e localizar o local que se informa o proxy.

Neste local basta colocar o IP da segunda placa do servidor, no caso deste tutorial ele tem duas: uma que conecta à internet e outra que transmite o sinal. Essa que transmite o sinal é a que deve ser informada, seguida da porta, no caso ficará assim:

proxy: 192.168.10.170
porta: 3128

Feitas todas essas configurações, é certo que na sua empresa ou instituição haverá um controle do tráfego das máquinas ao mundo externo, e com isso evitará transtornos como vírus, pornografia, downloads que consomem a banda da internet deixando-a lenta etc.

No mais, qualquer dúvida, é só pesquisar no Google ou me enviar um e-mail, hehehe.

Página anterior    

Páginas do artigo
   1. Definição
   2. Configurando o servidor proxy Squid no servidor
   3. Criando o arquivo de bloqueio no servidor
   5. Finalização
Outros artigos deste autor

Configurando NFS + NIS (Ubuntu)

Configurar servidor PPPoE (Ubuntu)

Leitura recomendada

Instalando Squid a partir do código fonte

Cache Full Squid + WebHTB

Instalando natACL no Debian Etch (proxy autenticado)

Colocando senha nos gerenciadores do Squid (SARG e MYSAR) de forma simples

Proxy transparente com Squid, com controle de banda e bloqueio por horários

  
Comentários
[1] Comentário enviado por lucasguara em 03/09/2009 - 16:22h

Olá parabéns pelo artigo estou com uma duvida talvez vc pode me ajudar to querendo instalar o squid e configurar aqui na minha rede tenho duas placas e rede na minha maquina a internet chega na eth1 e a rede interna e eth0 como faço para direcionar a internet pra eth0 rede interna ? e através de rota ou iptables estou começando agora

desde já obrigado

[2] Comentário enviado por nunesdutra em 03/09/2009 - 17:10h

Olá parabens pelo artigo.

Lucas voce pode direcionar a rede através do IPTABLES. a regra é essa aki:

iptables -v -t nat -I PREROUTING -i eth1 -p tcp --dport 80 -j ACCEPT

Qualquer duvida a mais poste aki!!!

[3] Comentário enviado por nox6000 em 03/09/2009 - 23:30h

Ola Lucassquara.

Olha como o amigo nunesdutra falou é simples vc compartilhar a internet, mas vou lher dar duas dicas que acredito que uma delas sera 100% perfeita para vc.

Primeira Dica:

Se o seu modem for roteado e já realiza a conexão com a internet sozinho
use esse codigo dentro do arquivo rc.local que fica no diretorio /etc

# Compartilha a Conexão

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -eth1 -j MASQUERADE # note que eth1 é qual palca de rede esta conectada diretamente ao modem se for a eth0 troque por eth0 se for eth1 deixe eth1 lembrando que isso é para quando seu modem é roteado (Conecta sozinho).

# Abre para a rede local:
iptables -A INPUT -p tcp --syn -s 192.168.10.0/255.255.255.0 -j ACCEPT

# Fecha o resto da rede:
iptables -A INPUT -p tcp --syn -j DROP

exit 0

Feito isso basta salvar o arquivo. Então vc terar sua placa eth1 recebendo a internet do modem e liberando para a rede atraves da eth0.

Segunda Dica:
Caso seu modem não seja roteado siga um artigo da minha autoria que explica como fazer a confgiração de um discador PPPoE e compartilhar a internet

Artigo: http://www.vivaolinux.com.br/artigo/Configurar-servidor-PPPoE-(Ubuntu)?pagina=1

ATENÇÃO: Neste artigo a unica diferença é que eu não uso eth1 pra receber a internet do modem e liberar por eth0 e sim o inverso eth0 para eth1 e na hora de adicionar os comandos que fazem o compartilhamento eu não coloco nem eth0 nem eth1 e sim ppp0.

arquivo: rc.local que fica no diretorio /etc

# Compartilha a Conexão

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -ppp0 -j MASQUERADE # note que agora eu utilisei ppp0, pois minha conexão é feita via ppp0.

# Abre para a rede local:
iptables -A INPUT -p tcp --syn -s 192.168.10.0/255.255.255.0 -j ACCEPT

# Fecha o resto da rede:
iptables -A INPUT -p tcp --syn -j DROP

exit 0


Leia o artigo que tenho certeza que vc ira conseguir e ficar muito feliz
Artigo: http://www.vivaolinux.com.br/artigo/Configurar-servidor-PPPoE-(Ubuntu)?pagina=1

[4] Comentário enviado por luizvieira em 04/09/2009 - 08:19h

Bom, artigo, conciso e objetivo!
Parabéns!
[ ]'s

[5] Comentário enviado por nox6000 em 04/09/2009 - 08:49h

Obrigado Luiz Vieira.

[6] Comentário enviado por fernandofranco em 04/09/2009 - 10:25h

meu squid está dando a seguinte mensagem : não suporta proxy transparent

alguem poderia me ajuda

[7] Comentário enviado por removido em 04/09/2009 - 10:46h

Alegria, alegria, olá como tá!

Como realmente saber se o servidor esta fazerndo cash efetivamente ? Quais comandos ? como testar a fundo um servidor recem instalado ?

[8] Comentário enviado por HelderC em 05/09/2009 - 00:43h

Pessoal, adorei o artigo, mas tenho duas dúvidas..
1- Para redirecionar a rede interna (eth0) da porta 80 para a porta 3128 (porta do squid) como faço?
2- Redirecionando para a porta 3128, todo acesso a sites passa pelo squid certo?

muito obrigado pela ajuda!

[9] Comentário enviado por removido em 08/09/2009 - 01:50h

Esse artigo mostra o squid e a configuração do mesmo de um forma simples e objetiva, muito bom. Parabéns nox6000.

@HelderC
Acho que a regra abaixo vai te ajudar, ela redireciona todo o tráfego gerado em eth0 com destino a porta 80 e manda para a porta 3128, que é a porta do squid. Não esquecendo antes de dar o comando modprobe iptable_nat.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

[10] Comentário enviado por Marco André em 18/09/2009 - 16:07h

Muito bom o artigo. Como não tenho acesso a um servidor para testes, vou tentar implementar em máquinas virtuais.

[11] Comentário enviado por s.r.e.lan house em 23/10/2009 - 13:35h

Muito bom seu artigo estou tentando configurar o squid através dele só que estou esbarrando no terceiro tópico, não consigo salvar o arquivo bloqueio na pasta squid como você fez no artigo.

[12] Comentário enviado por nox6000 em 23/10/2009 - 13:50h

Ola s.r.e.lan house,

Para instalar configurar e etidar os arquivos de configuraçõs vc deve sempre
estar como super usuário "root" do contrario já mais conseguira editar e salvar
sempre surgira a mensagem dizendo que vc não tem permissão para tal.

[13] Comentário enviado por zelongatto em 03/02/2010 - 21:44h

parabens.. otimo artigo
obrigado

t+

[14] Comentário enviado por May_gyn em 07/04/2010 - 10:36h

Ola,

tentei utilizar esse código e não deu certo, minha máquina esta comunicando com o servidor do proxy, mas não esta tendo acesso a internet, porem meu servidor esta comunicando com a internet. Minha porta de entrada é a eth0 e de saida a eth1. O squid já esta configurado e mesmo desabilitando a passagem pelo proxy nao comunica com a internet...
Alguém poderia me ajudar...

Obrigada

[15] Comentário enviado por marcos.ths em 17/01/2011 - 22:13h

caro amigo, otimo o artigo... mas estou com um problema. qndo vejo o diretorio /etc/squid ele esta vazio ... não arquivo nenhum nem mesmo o squid.conf .

estou usando uma maquina virtual (VMWare Player) 512 mb de memoria e 20 gb de espaço ... ubuntu 10 ..

estou instalando o squid normamente não esta dando nehum erro.

se puder me ajudar fico grato.


obrigado

[16] Comentário enviado por souzarm em 26/07/2012 - 10:44h

Obrigado.


[17] Comentário enviado por epiros em 29/03/2013 - 21:44h

Parabéns pelo artigo me ajudou bastante !!!

[18] Comentário enviado por hepta em 18/07/2013 - 18:37h

Exelente artigo Racy Rassilan os meus parabéns.

Será que esta configuração também servirá para Ubuntu 12.04 LTS 64 / Ubuntu 12.04 LTS 64 Server?

Desculpem a questão de noob, mas é que sou de fato.


[19] Comentário enviado por hepta em 18/07/2013 - 18:40h


[15] Comentário enviado por marcos.ths em 17/01/2011 - 22:13h:

caro amigo, otimo o artigo... mas estou com um problema. qndo vejo o diretorio /etc/squid ele esta vazio ... não arquivo nenhum nem mesmo o squid.conf .

estou usando uma maquina virtual (VMWare Player) 512 mb de memoria e 20 gb de espaço ... ubuntu 10 ..

estou instalando o squid normamente não esta dando nehum erro.

se puder me ajudar fico grato.


obrigado


alguma razão em particular para estares a usar a versão 10?

[20] Comentário enviado por soluz em 06/08/2013 - 09:56h

Pessoal,

Preciso de ajuda sobre autenticar o Squid através da base LDAP do Windows Server 2012. Simplesmente não tenho sucesso ao tentar fazer o Squid autenticar através dos grupos do AD.

Segue meu squid.conf:

-----------

auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=dominio,dc=local" -D "cn=squid,cn=Users,dc=dominio,dc=local" -w "password" -f sAMAccountName=%s -h 192.168.0.1
auth_param basic children 5
auth_param basic realm Digite suas credenciais para acessar a internet
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#
external_acl_type gruposad %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=dominio,dc=local" -D "cn=squid,cn=Users,dc=dominio,dc=local" -w "password" -f "(&(objectclass=person)(sAMAccountName=%v)(merberof=cn=%a,cn=Users,dc=seap,dc=intranet))" -h 192.168.0.1
#
acl password proxy_auth REQUIRED
#
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 192.168.0.0/24
#
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#
acl proxyadmins external gruposad proxy_adm
acl proxyusers external gruposad proxy_users
#
acl sites_sem_autenticacao dstdom_regex -i "/etc/squid/arquivos/sites_sem_autenticacao"
#
acl downloads_proibidos urlpath_regex -i "/etc/squid/arquivos/downloads_proibidos"
#acl downloads_permitidos urlpath_regex -i "/etc/squid/arquivos/downloads_permitidos"
#
acl palavras_proibidas url_regex -i "/etc/squid/arquivos/palavras_proibidas"
acl palavras_permitidas url_regex -i "/etc/squid/arquivos/palavras_permitidas"
#
acl sites_proibidos dstdom_regex -i "/etc/squid/arquivos/sites_proibidos"
#acl sites_permitidos dstdom_regex -i "/etc/squid/arquivos/sites_permitidos"
#
acl urls_proibidas url_regex -i "/etc/squid/arquivos/urls_proibidas"
#acl urls_permitidas url_regex -i "/etc/squid/arquivos/urls_permitidas"
#
http_access allow sites_sem_autenticacao
http_access allow proxyadmins
http_access allow palavras_permitidas
http_access deny downloads_proibidos
http_access deny palavras_proibidas
http_access deny sites_proibidos
http_access deny urls_proibidas
http_access allow password proxyusers
#
http_access allow manager localhost
http_access deny manager
#
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
#
http_access deny all
#
icp_access allow localnet
icp_access deny all
#
http_port 3128
#
hierarchy_stoplist cgi-bin ?
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

-----------

[21] Comentário enviado por clemersonsantos em 22/04/2014 - 13:53h

Olá, eu segui o passo a passo mas meu proxy não libera o acesso a sites que sejam https, como faço para poder liberar? Desde já obrigado.

[22] Comentário enviado por DellOver em 07/08/2016 - 20:49h

nox6000 no caso que vc falou que vai direcionar a conexão de um eth para o outro, esse que vai receber a conexão tem que estar conectado a um switch ou pode ser outro roteador? Estou tentando fazer um rede com oque tenho em mãos no momento e encontro está dificuldade, qualquer ajuda é bem vinda!!!


Contribuir com comentário