Você está na página 1de 30

Squid

18 de abril de 2007
Sumário

I Sobre essa Apostila 2

II Informações Básicas 4

III Squid 9

1 O que é Squid 10

2 Plano de ensino 11
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Introdução 14
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Compatibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Mais informações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Instalação 16
4.1 Indrodução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Dependências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3 Instalando com o APT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4 Instalação a partir do código fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.5 Compilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5 Configuração básica 20
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2 Começando as configurações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3 Configurando um proxy cache simples . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.4 Configurando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.5 Criando a lista de sites bloqueados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.6 Criando acls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


5.7 Bloqueando portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.8 Configurando o cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6 Demais configurações 26
6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2 Proxy reverso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.3 Limitação de banda e limitação de conexões por usuários . . . . . . . . . . . . . . . 27
6.4 Autenticação de usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2
Parte I

Sobre essa Apostila

3
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo
O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-
ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.

O formato original deste material bem como sua atualização está disponível dentro da licença
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 2006. Críticas e sugestões construtivas são bem-vindas a qualquer tempo.

Autores
A autoria deste é de responsabilidade de Frederico Oliveira de Paula (fredaodepaula@cdtc.org.br)
.

O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento, que
vem sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com
outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras
que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software
junto a outras entidades no país.

Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da


home page da entidade, através da URL http://www.cdtc.org.br.

Garantias
O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-
lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) .
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-
TILA. A copy of the license is included in the section entitled GNU Free Documentation
License.

4
Parte II

Informações Básicas

5
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-


ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do
desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e


de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,
criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como
incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-
recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de
produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-
dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:

• Licenças para cópia de material disponível

• Os 10 mandamentos do aluno de Educação a Distância

• Como participar dos foruns e da wikipédia

• Primeiros passos

É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br).

6
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é


pré-requisito para a participação nos cursos a distância.

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-


tica é necessário para poder executar as tarefas.

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-


cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores.

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus


colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais.

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real.

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens


e descobertas.

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é


ponto - chave na comunicação pela Internet.

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a

7
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos


valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.

8
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:

• fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá
utilizar;

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,


talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

9
Parte III

Squid

10
Capítulo 1

O que é Squid

O Squid é um Web proxy cache livre, de código aberto com suporte a HTTP, FTP, proxy para
SSL, hierarquia de cache, ICP, HTCP, CARP, cache transparente, WCCP, controle extensivo de
acesso, aceleração de servidor HTTP, SNMP, cache de DNS e muito mais.

Ao final deste curso o aluno terá conhecimento suficiente para instalar, configurar e manter um
Web proxy cache utilizando o Squid.

O curso, com base na distribuição Debian, tem duas semanas. O conteúdo do curso estará
visível somente a partir da data de início. Para começar o curso você deve ler o Guia do aluno a
seguir.

11
Capítulo 2

Plano de ensino

2.1 Objetivo
Qualificar técnicos para a configuração do proxy-cache Squid.

2.2 Público Alvo


Técnicos que desejam trabalhar com o Squid.

2.3 Pré-requisitos
Os usuários deverão ter conhecimento básico acerca da configuração e instalação de progra-
mas em sistemas GNU/Linux e redes de computadores.

2.4 Descrição
O curso de Squid será realizado na modalidade EAD e utilizará a plataforma Moodle como
ferramenta de aprendizagem. Ele é composto de um módulo de aprendizado que será dado na
primeira semana e uma avaliação que será dada ao final dessa semana. O material didático
estará disponível on-line de acordo com as datas pré-estabelecidas no calendário. A versão
utilizada para o Squid será a 2.6.STABLE5.

2.5 Metodologia
O curso está dividido da seguinte maneira:

2.6 Cronograma
• Introdução

• Instalação

12
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Configuração básica

• Demais configurações

Como mostrado na tabela acima, a cada semana será disponibilizado um conjunto de módulos.
É recomendável que o participante siga as datas estabelecidas.
As lições, disponíveis em cada módulo, contém o contéudo principal. Elas poderão ser acessa-
das quantas vezes forem necessárias, desde que esteja dentro da semana programada. Ao final
de uma lição, você receberá uma nota de acordo com o seu desempenho. Caso sua nota numa
determinada lição for menor do que 6.0, sugerimos que você faça novamente esta lição.
Ao final do curso serão disponibilizadas as avaliações referentes aos módulos estudados ante-
riormente. Somente as notas das avaliações serão consideradas para a nota final. Todos os
módulos ficarão visíveis para que possam ser consultados durante a avaliação final.
Para conhecer as demais atividades de cada módulo leia o tópico seguinte: "Ambientação do
Moodle".
Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deve ser envi-
ada ao fórum correspondente. Diariamente os monitores darão respostas e esclarecimentos.

2.7 Programa
O curso oferecerá o seguinte conteúdo:

• Introdução ao Squid

• Instalação do Squid

• Configuração do Squid

2.8 Avaliação
Toda a avaliação será feita on-line.
Aspectos a serem considerados na avaliação:

• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;

• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.

Instrumentos de avaliação:

• Participação ativa nas atividades programadas.

• Avaliação ao final do curso.

• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação e


obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo
com a fórmula abaixo:

• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições

• AF = Avaliações

13
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

2.9 Bibliografia
• http://www.squid-cache.org/

• http://pt.wikipedia.org/wiki/

• http://en.wikipedia.org/wiki/

• http://www.linuxman.pro.br/squid/

14
Capítulo 3

Introdução

3.1 Introdução
O Squid é um proxy cache para a web, livre e de código aberto. Mas o que é proxy cache?

Um proxy é um software capaz de aumentar consideravelmente a velocidade de conexão à inter-


net através de um cache. Quando um computador se conecta à internet a partir de um proxy, na
verdade o proxy se comunica com a rede externa e transfere os dados para essa máquina cliente.
Para melhorar a peformance da conexão com a internet o proxy armazena alguns dados em um
cache e esses dados são compartilhados entre todos os computadores clientes.

Por exemplo, considerando uma empresa muito grande onde várias pessoas se conectam à inter-
net e baixam o mesmo arquivo de um determinado site. Se toda vez que alguém fizer o download
do arquivo, ele for feito diretamente do servidor remoto onde se encontra o mesmo, será um con-
sumo de banda desnecessário. Para evitar esse desperdício, esse mesmo arquivo é armazenado
no cache do proxy e toda vez que alguém fizer o download ele será baixado do cache e não do
servidor remoto.

Além de funcionar como cache, o Squid pode ser uma maneira de restringir o acesso a deter-
minados conteúdos na internet. Seguindo no mesmo exemplo anterior, se vários funcionários
ficam navegando por sites que nada tem haver com o seu trabalho, assistindo vídeos, ouvindo
músicas on-line e tudo isso consumindo a banda da empresa que pode estar em falta em outros
serviços como em rotinas de backup. Para evitar que a banda seja gasta com o acesso a con-
teúdos que não sejam relacionados com os serviços prestados pela empresa, alguns domínios
podem ser bloqueados para que não possam ser acessados de dentro da rede englobada pelo
proxy.

3.2 Compatibilidade
Uma grande vantagem do Squid é que ele é compatível com os sistemas operacionais mais
utilizados, como:

• GNU/Linux;

• FreeBSD;

15
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• OpenBSD;

• NetBSD;

• BSDI;

• Mac OS X;

• OSF;

• IRIX;

• SunOS/Solaris;

• NeXTStep;

• SCO Unix;

• AIX;

• HP-UX;

3.3 Mais informações


Mais informações sobre o Squid podem ser encontradas no site oficial (http://www.squid-
cache.org) e também na página das perguntas mais freqüentes (http://wiki.squid-cache.org/SquidFaq),
onde são abordados tópicos a respeito da instalação, compilação, gerenciamento de cache, pro-
blema com o uso de memória e muito mais.

16
Capítulo 4

Instalação

4.1 Indrodução
Nessa lição serão abordados dois métodos diferentes para a instalação do Squid. O primeiro
método é o mais simples, a instalação via o gerenciador de pacotes apt do Debian e derivados
(Ubuntu, Kurumin, Xandros...). O outro método é a partir dos fontes do próprio programa baixados
da site oficial.

4.2 Dependências
Antes da instalação do Squid algumas dependências devem ser verificadas, a maioria delas
já devem estar instaladas no sistema. No caso da ferramenta APT, todas as dependências em
falta serão então instaladas junto com o Squid. Na instalação através do código fonte ou serão
instaladas pelo usuário separadamente através do APT (ou qualquer outro gerenciador), ou serão
instaladas manualmente uma a uma.

As instalações de todas as dependências não serão abordadas nesse curso, pois isso o tor-
naria muito extenso, mas mesmo assim o fórum de dúvidas estará disponível para qualquer tipo
de questionamento com respeito à instalação do Squid e suas dependências.

Para instalar o Squid são necessários os pacotes:

• adduser

• coreutils

• debconf (>= 1.2.9)

• libc6 (>= 2.3.2.ds1-21) [not alpha, ia64]

• libc6.1 (>= 2.3.2.ds1-21) [alpha, ia64]

• libgcc1 (>= 1:3.4.1-3) [mips, mipsel]

• libldap2 (>= 2.1.17-1)

• libpam0g (>= 0.76)

17
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• logrotate (>= 3.5.4-1)

• netbase

• squid-common (= 2.5.9-10sarge2)

Os pacotes abaixo não são estritamente necessários mas são sugeridos também para a ins-
talação.

• logcheck-database

• resolvconf (>= 0.40)

• smbclient

• squid-cgi

• squidclient

• winbind (>= 3.0.2)

Para saber mais sobre esses pacotes clique sobre o nome do pacote ou entre no site http://packages.debia

4.3 Instalando com o APT


A instalação via APT é muito simples. Basta dar os comandos abaixo no terminal como o
super-usuário:

debian:~# apt-get update


debian:~# apt-get install squid

Aparecerá na tela algo como:

Lendo lista de pacotes... Pronto


Construindo árvore de dependências... Pronto
Os pacotes extra a seguir serão instalados:
squid-common
Pacotes sugeridos:
squidclient squid-cgi logcheck-database resolvconf smbclient
Os NOVOS pacotes a seguir serão instalados:
squid squid-common
0 pacotes atualizados, 2 pacotes novos instalados, 0 a serem removidos e 0 não atualiza-
dos.
É preciso fazer o download de 1088kB de arquivos.
Depois de desempacotar, 6590kB adicionais de espaço em disco serão usados.
Quer continuar [S/n]?

Pressione a tecla Enter para dar prosseguimento à instalação.

Depois de um pequeno intervalo de tempo, o Squid estará instalado e pronto para ser confi-
gurado.

18
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

4.4 Instalação a partir do código fonte


A instalação pelo código fonte pode ser um pouco mais complicada que a primeira instalação
abordada, mas nada impossível.

O primeiro passo para a compilação é o download do pacote do site oficial do squid: http://www.squid-
cache.org/Versions/v2/2.6/. Escolha a última versão estável, que no momento da confecção deste
curso era a 2.6.5.

Depois de feito o download, descompacte o arquivo através do comando:

usuario@debian:~$ tar xvf squid-2.6.STABLES5.tar.gz

ou

usuario@debian:~$ tar xvfj squid-2.6.STABLES5.tar.bz2

4.5 Compilando
A compilação do squid pode exigir uma série de bibliotecas e outras ferramentas para a com-
pilação. Para quem possui Debian ou uma distribuição derivada a ferramenta apt pode ser muito
útil nessa hora. Para instalar todas as dependências para a compilação do Squid, dê o comando:

debian:~# apt-get build-dep squid

Obs.: Esse comando instala as dependências para a compilação e não as dependências do


programa em si.

Agora entre na pasta onde estão os fontes e dê o comando abaixo para que a compilação possa
ser preparada.

usuario@debian:/home/usuario$ cd squid-2.6.STABLE5

usuario@debian:/home/usuario/squid-2.6.STABLE5$ ./configure –enable-delay-pools –enable-


cache-digests –enable-poll –disable-ident-lookups –enable-truncate –enable-removal-policies
–enable-arp-acl

Se no final desse processo aparecer alguma mensagem de erro significa que algum pré-requisito
para a instalação não foi atendido. Cabe ao usuário instalá-lo para prosseguir com a compilação.
Se você deseja saber o que significa cada opção desse comando e se você procura por mais
opções leia o arquivo configure.

Agora é só compilar e instalar o Squid.

usuario@debian:/home/usuario/squid-2.6.STABLE5$ make all


debian:/home/usuario/squid-2.6.STABLE5# make install
debian:/home/usuario/squid-2.6.STABLE5# cd auth_modules/NCSA

19
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

debian:/home/usuario/squid-2.6.STABLE5/auth_modules# make
debian:/home/usuario/squid-2.6.STABLE5/auth_modules# make install

20
Capítulo 5

Configuração básica

5.1 Introdução
A configuração básica do Squid não é um procedimento muito difícil, com apenas alguns ajus-
tes no arquivo de configuração já é possível fazer um proxy.

Um ponto muito importante na configuração é saber qual a necessidade, é preciso saber se a


implementação vai ser de um proxy transparente, de um proxy cache normal, de um proxy re-
verso e etc. A tomada da decisão de como vai ser a implementação e quais as necessidades é
muito importante, algumas mudanças podem pedir até uma recompilação do programa.

5.2 Começando as configurações


O arquivo de configuração do Squid encontra-se geralmente em /etc/squid/squid.conf, mas se
ele não estiver nesse diretório, então digite esses comandos abaixo para encontrá-lo:

debian:~# updatedb
debian:~# locate squid.conf

Abrindo esse arquivo em qualquer editor de texto é possível ver que ele é bem completo e comen-
tado (na versão usada para fazer este curso, Squid 2.6.STABLE5, o arquivo tinha 4347 linhas).

Trabalhar com um arquivo de extensão tão grande pode ser difícil, alguns autores recomendam
uma limpeza no arquivo, para isso, digite os comandos abaixo:

debian:~# cd /etc/squid
debian:/etc/squid# cp squid.conf squid_backup.conf
debian:/etc/squid# egrep ?v "^#|^$"squid_backup.conf > squid.conf

Assim, o squid.conf ficará um pouco mais enxuto. Todos os comentários serão apagados. Fi-
caria ao cargo de cada um decidir se fará isso ou não.

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?

21
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

cache deny QUERY


acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
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
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 localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_group proxy
coredump_dir /var/spool/squid

5.3 Configurando um proxy cache simples


Nesta lição faremos apenas uma configuração simples de um proxy transparente, mas na
próxima faremos algumas configurações diferentes (proxy reverso, limitação de banda e autenti-

22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

cação de usuários) que podem otimizar o funcionamento da rede.

O é um proxy transparente?

Um proxy transparente é uma implementação de proxy onde a maioria dos usuários comuns
não sabem da existência de tal ferramenta. Nessa implementação, o proxy funciona mesmo que
os usuários não o configurem em cada máquina, assim o proxy funciona independentemente da
configuração local das máquinas, o que evita que os usuários mais "espertos"o burlem.

A primeira parte para configurar o Squid é definir o domínio da rede interna. Se a rede for,
por exemplo, uma rede 176.16.0.0/24, então devemos definir a acl para a rede interna:

acl rede_interna src 176.16.0.0/24


http_access alow rede_interna

Obs.: acl (Access Control List ou lista de controle de acesso) é uma lista que define quem tem
direito de acesso ou não a alguma coisa. Por exemplo, como definidos acima a acl rede_interna,
todos que estiverem sob esse domínio terão ou não a permissão para acessar algum recurso.

5.4 Configurando
Adicione agora as seguintes linhas ao arquivo squid.conf.

#Essa linha define qual será o host. Se hover vários utilize virtual, caso contrário, host.
httpd_accel_host virtual
#Essa linha define a porta para onde as requisições serão enviadas.
httpd_accel_port 80
#Para que o Squid trabalhe como proxy transparente e cache deixe essa opção como on.
httpd_accel_with_proxy on
#Faz com que o Squid não verifique os valores do cabeçalho host
httpd_accel_uses_host_header on

Agora adicione antes ainda de rede interna acl:

acl all 0.0.0.0/0.0.0.0

Isso fará com algum acesso seja negado ou permitido à todos da rede.

5.5 Criando a lista de sites bloqueados


Agora vamos criar uma lista com os sites que queremos que sejam bloqueados. Nessa lista
ficarão os domínios que não serão permitidos. Criaremos também uma lista de domínios que
queremos que não sejam bloqueados. Nessa lista ficarão as excessões à lista dos bloqueados.
Por exemplo, se você quer bloquear tudo que seja relativo à sexo então a palavra sexo deve
estar no arquivo de bloqueados. Assim o endereço www.sexo.com será bloqueado, assim como
o www.sexoesaude.com também será, mas este último pode ser um site totalmente inofensivo.

23
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Desta maneira a url www.sexoesaude.com deve estar no arquivo dos não bloqueados.

Crie o diretório bloqueados dentro de /etc/squid, nesse diretório ficarão as listas com as pala-
vras, ips ou domínios a serem bloqueados.

debian:~# mkdir /etc/squid/bloqueados


debian:~# touch /etc/squid/bloqueados/block.txt
debian:~# touch /etc/squid/bloqueados/unblock.txt

Agora adicione as linhas a seguir logo após as primeiras acls no squid.conf.

acl blockedsites url_regex ?i "/etc/squid/bloqueados/block.txt"


acl unblockedsites url_regex ?i "/etc/squid/bloqueados/unblock.txt"

Existem várias listas com ips e palavras chaves contendo domínios a serem bloqueados, para
achá-las procure por lista negra ou squid que elas aparecerão facilmente.

5.6 Criando acls


Uma parte muito interessante na criação de acls é que podemos criar diferentes acls, de
acordo com o horário, data, ip, MAC e domínio.

Caso seja necessário bloquear o site do Youtube em uma empresa apenas no horário de ex-
pediente e para todos os empregados, exceto o presidente da empresa e o administrador da
rede, teríamos que definir algumas acls.

Para definir uma acl para o presidente da empresa, poderíamos definí-la pelo MAC adress da
placa de rede utilizada no computador do presidente.

acl presidente arp XX:XX:XX:XX:XX:XX

onde os X devem ser substituidos pelos valores do MAC.

Agora definimos uma acl para o administrador da rede, vamos fazê-lo utilizando o endereço ip.

acl admin src x.x.x.x

onde os x devem ser substituidos pelos valores do ip.

Vamos criar uma acl para o domínio do Youtube.

acl YOUTUBE dstdomain youtube.com

Por último, vamos definir a acl expediente para o horário de expediente e também final de se-
mana.

acl expediente time MTWHF 8:0000?18:00

24
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

acl final_de_semana time SA 0:0000?24:00

Agora vamos definir os direitos de acesso.

http_access allow YOUTUBE admin presidente


http_access deny YOUTUBE all expediente
http_access allow YOUTUBE all final_de_semana

5.7 Bloqueando portas


Um outro método de bloqueio é através de portas. Usando este método podemos bloquear
seviços que não são muito recomendados para serem utilizados em empresas como o comparti-
lhadores de arquivos (aMule, limewire e etc), serviços de mensagens (Msn, Jabber, ICQ, IRC...) e
muitos outros. O método mais inteligente e prático de fazer isso, não é especificar as portas que
queremos bloquear e sim as que queremos liberar. Dessa forma, quando houver a necessidade
de liberar uma nova porta para um serviço basta adicioná-la como uma acl e continuar negando
todas as outras.

acl SSL_ports port 443 # https


acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
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

Depois de definir acls com as portas que são consideradas seguras, basta bloquear todas as
outras.
http_access deny !Safe_ports

5.8 Configurando o cache


Agora que já sabemos como configurar acls, vamos configurar o cache. Para isso, adicione
ao início do arquivo a linhas a seguir.

#Nessa linha definimos quanto de memória o Squid irá consumir. Ela varia de máquina para
# máquina. No caso de uma máquina dedicada para o Squid, esse
#valor pode ser de até 80% da memória principal

cache_mem 256 MB

25
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

#Essa opção define o limite mínimo para substituição de um objeto em swap.

cache_swap_low 90

#Essa opção define o limite máximo para substituição de um objeto em swap.

cache_swap_high 95

#Define o tamanho máximo para que um arquivo seja armazenado no cache. Este
#parâmetro deve ser escolhido com cautela pois arquivos muito grandes podem tornar
#o Squid lento.

maximum_object_size 4096 KB

#Define o tamanho máximo dos arquivos do cache que devem ficar em memória.
#Lembrando que a memória princial (RAM) é muito mais rápida que a memória
#secundária (disco rígido) e por isso é melhor armazenar um arquivo na principal. Esse
#valor deve ser definido com muito cuidado!

maximum_object_size_in_memory 20 KB

#Define o diretório onde ficarão os arquivos em cache

cache_dir aufs /var/cache/squid 4096 16 256

#Define o arquivo onde ficarão os logs do squid

cache_access_log /var/log/squid/access.log

Terminada a configuração do Squid, basta iniciá-lo para que ele comece a funcionar.

debian:~# /etc/init/d/squid start

Se tudo estiver certo, o Squid já estará funcional e em uso.

26
Capítulo 6

Demais configurações

6.1 Introdução
Nessa lição, iremos abordar a configuração do Squid como proxy reverso, com limitação de
banda, limitação de conexões por usuário e autenticação de usuários. Utilizaremos como base o
arquivo de configuração da lição anterior.

6.2 Proxy reverso


Antes de configurarmos o Squid como um proxy reverso vamos tentar entender o que vem a
ser essa implementação de proxy.

Um proxy reverso é um tipo de implementação usado geralmente para diminuir a carga de ser-
vidores web que são muito acessados. Nessa configuração, o Squid acaba se tornando um
servidor web, ele armazena no cache todo tipo de conteúdo estático provido pelo servidor. No
momento em que um cliente faz uma requisição para o servidor, o Squid é capaz de responder a
essa requisição como se fosse o próprio servidor.

Para configurar o Squid como proxy reverso, basta adicionar as seguintes opções no squid.conf.

#Esse parâmetro define a porta que o Squid irá responder.

http_port 80

#Define o IP interno do servidor WEB

httpd_accel_host 172.16.0.1

#A porta que o servidor responde

httpd_accel_port 80

#Essa opção faz com que o Squid seja proxy reverso apenas para um servidor

httpd_accel_single_host on

27
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

#Essa opção já estava no nosso arquivo de configuração, mas nessa implementação # man-
tenha ela como off

httpd_accel_uses_host_header off

6.3 Limitação de banda e limitação de conexões por usuários


Vamos agora configurar o Squid para limitar a banda utilizada por cada usuário da rede interna
e também limitar o número de conexões por usuário.

Limitação de banda

Para limitar a banda, basta adicionar os seguintes parâmetros ao squid.conf. As delay pools
fazem com que a conexão fique um pouco mais lenta para os usuários, isso faz com que a banda
seja economizada.

acl controle1 url_regex ?i 172.16.0


acl controle2 url_regex ?i ftp .exe .mp3 .tar.gz .gz .zip .rar .avi .mpeg .mpg .qt .ram .rm .is
delay_pools 2
delay_class 1 2
delay_parameters 1 ?1//?1 ?1//?1
delay_access 1 allow controle1
delay_class 2 2
delay_access 2 allow rede_interna
delay_access 2 allow controle2

Limitação de conexões

A limitação de conexões por usuário pode ser muito útil para que um usuário não use toda a
banda enquanto outros têm de ficar esperando.

#Essa é a acl para que o número de conexões seja no máximo 10

acl CONEXOES maxconn 10

#Aqui limita-se as conexões aos usuários da rede interna

http_access deny CONEXOES rede_interna

Obs.: para utilizar a limitação de banda é necessário que o Squid tenha sido compilado com
a opção -enable-delay-pools.

28
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

6.4 Autenticação de usuários


A autenticação de usuários pode ser útil para saber através dos logs como a rede está sendo
utilizada e por quem. Para habilitar a autenticação, adicione as linhas abaixo ao arquivo de confi-
guração.

#Nessa linha é definido o programa responsável pela autenticação. Pode ser que o
#ncsa_auth esteja em algum local diferente, utilize o locate para saber onde.

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/


auth_param basic children 5
auth_param basic realm Digite seu Login

Devemos então criar um arquivo com as senhas.

debian:~# touch /etc/squid/passwd

Agora toda vez que você quiser inserir um novo usuário digite:

debian:~# htpasswd /etc/squid/passwd NOME_DO_USUARIO

Adicione também a seguinte acl.

acl rede_interna proxy_auth REQUIRED

29

Você também pode gostar