Escolar Documentos
Profissional Documentos
Cultura Documentos
18 de abril de 2007
Sumário
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
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
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.
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
Objetivo Específico
Guia do aluno
Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:
• Primeiros passos
É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.
Licença
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".
• 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.
• 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.
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.
. 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:
Primeiros Passos
Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:
• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;
Perfil do Tutor
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;
• 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’)
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.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:
Instrumentos de avaliação:
• 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?
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;
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.
• adduser
• coreutils
17
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
• 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
• smbclient
• squid-cgi
• squidclient
Para saber mais sobre esses pacotes clique sobre o nome do pacote ou entre no site http://packages.debia
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
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.
ou
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:
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
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.
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.
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
22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
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:
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
Isso fará com algum acesso seja negado ou permitido à todos da rede.
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.
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.
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.
Agora definimos uma acl para o administrador da rede, vamos fazê-lo utilizando o endereço ip.
Por último, vamos definir a acl expediente para o horário de expediente e também final de se-
mana.
24
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF
Depois de definir acls com as portas que são consideradas seguras, basta bloquear todas as
outras.
http_access deny !Safe_ports
#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
cache_swap_low 90
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
cache_access_log /var/log/squid/access.log
Terminada a configuração do Squid, basta iniciá-lo para que ele comece a funcionar.
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.
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.
http_port 80
httpd_accel_host 172.16.0.1
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
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.
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.
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
#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.
Agora toda vez que você quiser inserir um novo usuário digite:
29