Squid passo a passo no Debian para iniciantes

Neste artigo será explicado passo a passo como instalar e configurar o Squid. É um material voltado a iniciantes do mundo Linux. Será abordado desde o motivo de utilizar um servidor proxy ao desfecho do mesmo.

[ Hits: 112.460 ]

Por: Luis Eduardo Vilella em 23/01/2010


O que é Squid e porque utilizá-lo



Há pouco tempo eu resolvi entrar no mundo Linux e minha maior dificuldade era entender o que o pessoal falava. Neste artigo vou explicar como montar um servidor Squid passo a passo, explicando cada etapa. Estou usando Debian Netinst, disponível para download no site oficial do Debian.

Desculpem, mas não será possível divulgar o material bibliográfico, pois ao longo da pesquisa este referencial não foi salvo. Mas uma coisa é certa, o pessoal do VOL está sempre disposto a ajudar, 80% do aprendizado foi pesquisando no www.vivaolinux.com.br e google.com/linux.

Squid Web Proxy Cache

Squid é um proxy, o mesmo tem como principal utilidade filtrar e definir regras para o acesso a web. Uma grande vantagem de usar o Squid é a sua função cache, a mesma guarda no cache os sites acessados, e quando o acesso a um site presente no cache é solicitado, automaticamente é retornado ao usuário o site do cache. Sendo assim uma parte da banda é liberado. Tem dois tipos de cache, na memória principal e na secundaria. Com base na explicação passada recomenda-se um computador com HD de rápido acesso e uma quantia considerável de memória RAM.

Obs: Neste artigo será necessário acesso a internet para instalação dos pacotes.

Instalando o Squid

O apt é um comando de instalação remoção e modificação de programas, muito simples de usar.

Obs.: Sempre que o "#" estiver a frente de um comando, isto significa que tem que ser executado como root.

# apt-get install squid3

O arquivo de configuração padrão do Squid fica em /etc/squid/squid.conf, porém como estamos instalando o squid3, o caminho altera para /etc/squid3/squid.conf.

Vamos editar o squid.conf:

# vi /etc/squid3/squid.conf

Optei por utilizar o arquivo padrão do squid fazendo apenas as alterações necessárias, portanto para chegar ao material abaixo será necessário percorrer o squid.conf. Repare que no squid.conf existem as ACLs, como padrão ele já vem com as seguintes ACLs:

acl SSL_ports port 443 #https
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 CONNECT method CONNECT

Logo abaixo das ACLs padrões tem um espaço, e ai é o lugar determinado para edição das suas ACLs. As ACLs podem ser entendidas como o link que o Squid faz com as regras. Porém o que dita as regras são as http_access.

Exemplo - você quer criar uma lista de sites a serem bloqueado:

# vi /etc/squid3/sites_bloqueados

No squid.conf teremos a seguinte ACL:

acl block_sites url_regex "/etc/squid3/sites_bloqueados"

Obs: block_sites é o nome da acl, e a mesma está encarregada de trazer para o Squid a lista presente no arquivo sites_bloqueados.

Para autorizar um computador a acessar a internet também é necessário criar uma ACL.

Exemplo:

acl rede src 192.168.0.0/24
acl gerente src 192.168.0.ip_gerente

Mas como dito acima, as regras são ditas pelas http_access. Veja o simples caso de bloquear os sites para rede, mas o gerente tem acesso total.

#O gerente tem acesso total e está no topo
http_access allow gerente

#A partir daqui quem acessar está proibido de acessar os sites da lista block_sites
http_access deny block_sites

#Todo o range de rede declarado pode acessar a internet, exceto os sites bloqueados
http_access allow rede

#Se não se encaixa em nenhuma das alternativas acima, não usa a internet
http_access deny all

Nas http_access a ordem é feita de cima para baixo, sendo que os níveis superiores tem privilégios aos inferiores.

Sempre ao fazer alterações no squid.conf, para não ter que reiniciar o serviço, use o comando "squid3 -k reconfigure" para colocar em prática as alterações feitas.

Agora ao tentar acessar a internet ainda não estará funcionando, pois o Squid configurado acima não está em modo transparente. É necessário configurar no browser os parâmetros do proxy.

Ex.: Firefox > Ferramentas > Avançado > Rede > Configurar > Coloque o IP do servidor e a porta do Squid, que por padrão é 3128 (pode-se alterar).

Para que o seu servidor proxy esteja completo é preciso configurar a rede e compartilhar a internet. Não entraremos em detalhes, mas um material muito bom é:
E o arquivo de configuração da rede é /etc/network/interfaces.

Exemplo de interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
broadcast 192.168.0.255

auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255

Dica: coloque cada placa em um range.

Mais detalhes em:
   

Páginas do artigo
   1. O que é Squid e porque utilizá-lo
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Dynamips + Dynagen - Emulando Vlans com router on stick no Linux

Apresentando o monitor de redes EtherApe

CBQ (Controlador de banda) no Conectiva 10

Ubuntu Completo e Total

Certificado Digital e diversos ambientes Java no GNU/Linux

  
Comentários
[1] Comentário enviado por striteiro em 23/01/2010 - 16:40h

Otima iniciativa, por qual motivo utilizou o squid3 ao inves do squid?

[2] Comentário enviado por removido em 23/01/2010 - 17:27h

bom artigo!

[3] Comentário enviado por franciscolima em 23/01/2010 - 20:12h

AMIGO SOU INICIANTE EM LINUX ESTOU INSTALANDO UNS AI O UBUNTU E O DEBIAN, NO UBUNTU DEU UNS ERROS NA HORA DE CONFIGURAR O SQUID 2.7 , INSTALAE TAMBEM O IPCOP UM LINUX BEM PEQUENO MAIS MUITO BOM ELE FAZ PROXY DEFESA MONITORA A REDE BLOQUEI PORTAS BALANCEIA A REDE MOSTRA O MEC DE QUE ESTA CONECTADO O IP E OS SITE QUE ESTÃO VISITANDO OU SEJA MUITO BOM, POREM NÃO CONSEGUI FAZER ELE PEGAR DHCP AUTOMATICO DA NOSSA PRESTADORA DE INTERNET POR ISSO COLOQUEI ESTATICO NEM DESBLOEQUEAR APORTA QUE DA ACESSO A NOSSA PAGINA DE WEBMAIL.EMPRESA.COM.BR
LIGUE PRO PESSOAL QUE OSPEDA O NOSSO SITE ELES DISSERAM QUE É O NOSSO PROXY QUE ESTA BLO QUEANDO, ENTÃO ELE ME PASSO A PORTA 2095 ADICIONEI LA MAIS NÃO TEVE JEITO. VOCE PODERIA ME AJUDA, FICO NO AGUARDO SEM MAIS DESDE JA MUITO OBRIGADO!
VALEU

[4] Comentário enviado por luivilella em 24/01/2010 - 11:29h

Amigo franciscolima, na verdade tbm sou novo aqui. Eu tive problemas com um site que usava a porta 81 entao eu adicionei no squid, no seu caso teste isto e veja se funciona.
acl Safe_ports port 2095 #Adicione esta porta as Safe_pots
Agora que vem a jogada, use a regra a baixo para colocar o trafego da sua rede e passar pelo squid.

/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2095 -j REDIRECT --to-port 3128
/sbin/iptables -t nat -A PREROUTING -i eth1 -p udp --dport 2095 -j REDIRECT --to-port 3128

Obs: eth1 é a placa de rede da sua rede interna.

Assim todo o trafego da 2095 ira passar pelo squid e nao terá problemas.

Vc pode usar essas regras direto, se funcionar crie um script e coloque em /etc/rc.local assim toda vez que iniciar o sistema ja carrega as regras.

Aconselho vc a fazer isto para todas as portas que o squid usa.

Espero ter ajuda. Qualquer duvida posta ai.

Aqui vai uma dica para o script http://vivaolinux.com.br/topico/Redes/SHELL-SCRIPT-11

[5] Comentário enviado por luivilella em 24/01/2010 - 14:02h

Pessoal tem um erro ai desculpe:
em acl gerente src 192.168.0.0/24 esta errado é acl gerente src 192.168.0.ipdocomputador gerente
S Pessoal da moderação se possivel arrumar. Obrigado

NOTA:
Corrigido

[6] Comentário enviado por fate em 27/01/2010 - 10:16h

Sem desmerecer o artigo que está bem focado mas deveria alterar para: Squid passo a passo no DEBIAN para iniciantes.

Não sou muito a favor de artigos para debian usando apt-get para instalação. O titulo dá impressão de que é uma instalação para qualquer distro, o que não é verdade. Se minha distro não usa apt-get como eu fico?

O correto seria abordar uma instalação compilando o squid, assim qualquer distro se encaixa no artigo.

Novamente reforço que está bom, apenas altere o título.

[7] Comentário enviado por luivilella em 27/01/2010 - 10:41h

Amigo fate, de fato é uma boa observação. Vou ver com o pessoal da moderação o que eles podem fazer.
Muito obrigado pela dica, não cometerei o mesmo erro.

[8] Comentário enviado por andrezinhu15 em 27/01/2010 - 11:41h

Quais são os principais pacotes necessários de um firewall?

[9] Comentário enviado por luivilella em 28/01/2010 - 17:49h

Amigo andrezinhu15:
http://www.vivaolinux.com.br/artigos/verSubCategoria.php?codigo=6
http://www.vivaolinux.com.br/artigo/Instalando-um-firewall-minimo-em-Debian/

Desculpe, mas não posso ajudar mais do que isto.

[10] Comentário enviado por marcelo_linux em 09/11/2012 - 14:27h

Artigo legal =) Parabéns




[11] Comentário enviado por rafaelferreira09 em 15/01/2013 - 14:46h

Bom dia!
é se minha rede for com Ip automatico?

[12] Comentário enviado por luivilella em 15/01/2013 - 15:19h

Nunca precisei fazer um bloqueio desta maneira, porem segundo a dica do nosso amigo Julian Castaman da para bloquear por MAC.

<url>http://www.vivaolinux.com.br/dica/Liberar-MSN-por-MAC-Address/</url>

<code>
acl gerente arp X:X:X:X:X:X
acl supervisor arp X:X:X:X:X:X
#X:X:X:X:X:X - Isso significa o MAC do micro.

</code>

[13] Comentário enviado por Julianelsg em 28/05/2014 - 12:49h

Ótimo artigo luivilella, Parabéns... Só tenho uma dúvida qual vai ser o endereço de proxy configurado no navegador???

[14] Comentário enviado por Isaiasfreitas em 20/07/2015 - 15:37h

Eu to tentando aprender um pouco, baixei essa ISO http://cdimage.debian.org/debian-cd/8.1.0/i386/iso-cd/debian-8.1.0-i386-netinst.iso.
Debian Jessie, instalei numa maquina virtual ai nao carrega a tela grafica, nao consigo instalar nada. da erro, Nao encontra os pacotes.
Ate agora so stress.

[15] Comentário enviado por Felipe_Del_Rio em 24/07/2015 - 08:48h

Ola, eu fiz o passo a passo que esta descrito, mas o meu proxy esta bloqueando tudo, e só coloquei para bloquear 4 paginas.

Estou anexando como ficou meu arquivo do "squid3.confg" e o meu "sites_bloqueados"

Eu entendo de linux o mesmo que entendo de física quântica, mas estou querendo aprender e colocar um proxy e um server de arquivo na empresa onde trabalho.

Segue os arquivos.
______________________________________________
acl SSL_ports port 443 #https
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 CONNECT method CONNECT
acl block_sites url_regex"/etc/squid3/sites_bloqueados"
acl rede src 192.168.0.0/30
acl gerente src 192.168.0.5
acl gerente src 192.168.0

http_access allow gerente
http_access deny block_sites
http_access allow rede
http_access deny alL
________________________________________

www.facebook.com.br
www.globo.com
www.terra.com.br
www.uol.com.br

_________________________________________

[16] Comentário enviado por yuri.spm em 30/12/2015 - 21:58h

oi fiz essa seguinte configuração no squid3 no ubuntu
sendo que não funciona alguém pode me ajudar e um configuração básica se eu postei uma igual por favor me passem o link para eu poder consultar pois até agora não achei parecida.


nano squid.conf

http_port 3128
visible_hostname Debian
cache_mem 64 MB
maximum_object_size_in_memory 2 MB
maximum_object_size 100 MB
minimum_object_size 3 Kb

cache_swap_low 90
cache_swap_high 95
cache_dir ufs /cache/ 5000 16 256
cache_access_log /cache/access.log


acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl redelocal src 192.168.254.0/24


http_access allow localhost
http_access allow redelocal
http_access deny all

criei a pasta e dei permissão total
executei o squid -z

sendo que não esta indo

[17] Comentário enviado por JesusHacker em 02/06/2016 - 11:33h

Olá irmãos tenho uma duvida.

Eu tenho duas redes , onde preciso colocar um servidor proxy de rede.
No caso deste servidor ele tem que possuir 3 placas de rede:
1º - internet;
2º - rede 1 IP: 11.10.1.X;
3º - rede 2 IP: 176.8.1.X;

nestas redes cada uma tem uma regra diferente , o que gostaria da saber é como eu faço com que o squid execute estas regras nestas duas rede , é possível ? Se não no caso teria que fazer dois servidores Proxy ?

Obrigado desdê já.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts