Squid

30
Squid 21 de dezembro de 2006

description

 

Transcript of Squid

Page 1: Squid

Squid21 de dezembro de 2006

Page 2: Squid

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 112.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Introdução 143.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Compatibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Mais informações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Instalação 164.1 Indrodução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.2 Dependências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.3 Instalando com o APT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.4 Instalação a partir do código fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.5 Compilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5 Configuração básica 205.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2 Começando as configurações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.3 Configurando um proxy cache simples . . . . . . . . . . . . . . . . . . . . . . . . . . 215.4 Configurando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.5 Criando a lista de sites bloqueados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1

Page 3: Squid

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

5.6 Criando acls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.7 Bloqueando portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.8 Configurando o cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6 Demais configurações 266.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.2 Proxy reverso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.3 Limitação de banda e limitação de conexões por usuários . . . . . . . . . . . . . . . 276.4 Autenticação de usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2

Page 4: Squid

Parte I

Sobre essa apostila

3

Page 5: Squid

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çaGNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção demesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC ([email protected]), desde outubrode 2006. Criticas e sugestões construtivas são bem-vindas a qualquer tempo.

Autores

A autoria deste conteúdo, atividades e avaliações é de responsabilidade de Frederico Oliveirade Paula ([email protected]) .

O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vemsendo realizado pelo ITI em conjunto com outros parceiros institucionais, atuando em conjuntocom as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiandoinclusive a comunidade Free Software junto a outras entidades no país.

Informações adicionais podem ser obtidas atráves do email [email protected], ou dahome page da entidade, atráves 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 responsabilizamdireta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença

Copyright ©2006,Frederico Oliveira de Paula ([email protected]) .

Permission is granted to copy, distribute and/or modify this document under the termsof the GNU Free Documentation License, Version 1.1 or any later version published bythe 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 DocumentationLicense.

4

Page 6: Squid

Parte II

Informações Básicas

5

Page 7: Squid

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 dodesenvolvimento 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 ede código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre osservidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercadonacional a adotar novos modelos de negócio da tecnologia da informação e de novos negóciosde comunicação com base em software não-proprietário e de código fonte aberto, oferecendotreinamento 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 comoincentivadores 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 deprodutos 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ê comeceseu 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 oroteiro acima.

Licença

Copyright ©2006, Frederico Oliveira de Paula ([email protected]) .

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termosda Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior

6

Page 8: Squid

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

públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSAAPOSTILA. 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 seuscolegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.

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

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações erealizá-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, aprendizagense 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ãocontrola 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çõesque sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas atodos participantes. Assim, se o monitor ou algum outro participante tiver uma informação queinteresse ao grupo, favor postá-la aqui.Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico docurso. É recomendado que você faça uso do Forum de dúvidas gerais que lhe dá recursos mais

7

Page 9: Squid

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

efetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativopara solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadasa todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podemajudar.Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com aformalizaçã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 podemser 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, porpessoas 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 dasferramentas 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 respectivosvalores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita asidéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.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 tutorou instrutor:

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

8

Page 10: Squid

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

• 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 umreparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, deameaç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

Page 11: Squid

Parte III

Squid

10

Page 12: Squid

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 umWeb 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 aseguir.

11

Page 13: Squid

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 programasem 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 fer-ramenta de aprendizagem. Ele é composto de um módulo de aprendizado que será dado naprimeira semana e uma avaliação que será dada ao final dessa semana. O material didático es-tará disponível on-line de acordo com as datas pré-estabelecidas no calendário. A versão utilizadapara 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

Page 14: Squid

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 finalde uma lição, você receberá uma nota de acordo com o seu desempenho. Caso sua nota numadeterminada 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 osmó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 doMoodle".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 eobtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordocom a fórmula abaixo:

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

• AF = Avaliações

13

Page 15: Squid

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

Page 16: Squid

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, naverdade 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 umcache 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 downloaddo 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 é armazenadono cache do proxy e toda vez que alguém fizer o download ele será baixado do cache e não doservidor 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áriosficam navegando por sites que nada tem haver com o seu trabalho, assistindo vídeos, ouvindomúsicas on-line e tudo isso consumindo a banda da empresa que pode estar em falta em outrosserviç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íniospodem ser bloqueados para que não possam ser acessados de dentro da rede englobada peloproxy.

3.2 Compatibilidade

Uma grande vantagem do Squid é que ele é compatível com os sistemas operacionais maisutilizados, como:

• GNU/Linux;

• FreeBSD;

15

Page 17: Squid

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), ondesão abordados tópicos a respeito da instalação, compilação, gerenciamento de cache, problemacom o uso de memória e muito mais.

16

Page 18: Squid

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 primeiromé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 baixadosda 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 faltaserão então instaladas junto com o Squid. Na instalação através do código fonte ou serão ins-taladas pelo usuário separadamente através do APT (ou qualquer outro gerenciador), ou serãoinstaladas 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 tipode 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

Page 19: Squid

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.debian.org.

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 updatedebian:~# apt-get install squid

Aparecerá na tela algo como:

Lendo lista de pacotes... ProntoConstruindo árvore de dependências... ProntoOs pacotes extra a seguir serão instalados:squid-commonPacotes sugeridos:squidclient squid-cgi logcheck-database resolvconf smbclientOs NOVOS pacotes a seguir serão instalados:squid squid-common0 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

Page 20: Squid

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çãoabordada, 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 destecurso 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 compila-ção. Para quem possui Debian ou uma distribuição derivada a ferramenta apt pode ser muito útilnessa 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 doprograma em si.

Agora entre na pasta onde estão os fontes e dê o comando abaixo para que a compilação possaser 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é-requisitopara 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 maisopções leia o arquivo configure.

Agora é só compilar e instalar o Squid.

usuario@debian:/home/usuario/squid-2.6.STABLE5$ make alldebian:/home/usuario/squid-2.6.STABLE5# make installdebian:/home/usuario/squid-2.6.STABLE5# cd auth_modules/NCSA

19

Page 21: Squid

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

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

20

Page 22: Squid

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 ajustesno arquivo de configuração já é possível fazer um proxy.

Um ponto muito importante na configuração é saber qual a necessidade, é preciso saber se aimplementaçã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 elenão estiver nesse diretório, então digite esses comandos abaixo para encontrá-lo:

debian:~# updatedbdebian:~# 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 recomendamuma limpeza no arquivo, para isso, digite os comandos abaixo:

debian:~# cd /etc/squiddebian:/etc/squid# cp squid.conf squid_backup.confdebian:/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 3128hierarchy_stoplist cgi-bin ?acl QUERY urlpath_regex cgi-bin \?

21

Page 23: Squid

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

cache deny QUERYacl apache rep_header Server ^Apachebroken_vary_encoding allow apacheaccess_log /var/log/squid/access.log squidhosts_file /etc/hostsrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern . 0 20% 4320acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 # httpsacl SSL_ports port 563 # snewsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cupsacl Safe_ports port 873 # rsyncacl Safe_ports port 901 # SWATacl purge method PURGEacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhosthttp_access deny allhttp_reply_access allow allicp_access allow allcache_effective_group proxycoredump_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óximafaremos algumas configurações diferentes (proxy reverso, limitação de banda e autenticação de

22

Page 24: Squid

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

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 comunsnão sabem da existência de tal ferramenta. Nessa implementação, o proxy funciona mesmo queos usuários não o configurem em cada máquina, assim o proxy funciona independentemente daconfiguraçã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/24http_access alow rede_interna

Obs.: acl (Access Control List ou lista de controle de acesso) é uma lista que define quem temdireito 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 hosthttpd_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 listaficarão os domínios que não serão permitidos. Criaremos também uma lista de domínios quequeremos 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 deveestar no arquivo de bloqueados. Assim o endereço www.sexo.com será bloqueado, assim comoo www.sexoesaude.com também será, mas este último pode ser um site totalmente inofensivo.

23

Page 25: Squid

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/bloqueadosdebian:~# touch /etc/squid/bloqueados/block.txtdebian:~# 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, paraachá-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 acordocom 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 darede, teríamos que definir algumas acls.

Para definir uma acl para o presidente da empresa, poderíamos definí-la pelo MAC adress daplaca 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

Page 26: Squid

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 presidentehttp_access deny YOUTUBE all expedientehttp_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 compartilha-dores de arquivos (aMule, limewire e etc), serviços de mensagens (Msn, Jabber, ICQ, IRC...) emuitos outros. O método mais inteligente e prático de fazer isso, não é especificar as portas quequeremos bloquear e sim as que queremos liberar. Dessa forma, quando houver a necessidadede liberar uma nova porta para um serviço basta adicioná-la como uma acl e continuar negandotodas as outras.

acl SSL_ports port 443 # httpsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cups

Depois de definir acls com as portas que são consideradas seguras, basta bloquear todas asoutras.

http_access deny !Safe_ports

5.8 Configurando o cache

Agora que já sabemos como configurar acls, vamos configurar o cache. Para isso, adicione aoiní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

Page 27: Squid

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

Page 28: Squid

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 debanda, limitação de conexões por usuário e autenticação de usuários. Utilizaremos como base oarquivo 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 seressa 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 umservidor web, ele armazena no cache todo tipo de conteúdo estático provido pelo servidor. Nomomento em que um cliente faz uma requisição para o servidor, o Squid é capaz de responder aessa 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

Page 29: Squid

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 etambé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 poolsfazem com que a conexão fique um pouco mais lenta para os usuários, isso faz com que a bandaseja economizada.

acl controle1 url_regex ?i 172.16.0acl controle2 url_regex ?i ftp .exe .mp3 .tar.gz .gz .zip .rar .avi .mpeg .mpg .qt .ram .rm .isdelay_pools 2delay_class 1 2delay_parameters 1 ?1//?1 ?1//?1delay_access 1 allow controle1delay_class 2 2delay_access 2 allow rede_internadelay_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 abanda 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 coma opção -enable-delay-pools.

28

Page 30: Squid

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á sendoutilizada 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 5auth_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