Você está na página 1de 33

SquidGuard

24 de novembro de 2006
Sumário

I Sobre essa apostila 3

II Informações Básicas 5

III SquidGuard 10

1 O que é o squidGuard 11

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

3 Módulo I - Introdução, instalação e configuração 15


3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 Portabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.3 Como funciona o Squidguard? . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Instalando o squidGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.3 Instalando com o apt-get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.4 Instalando a partir do código fonte . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.5 Compilando e instalando o Squidguard . . . . . . . . . . . . . . . . . . . . . 21
3.3 Configurando o squidGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1 Configurando o squidGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.2 Aspectos relevantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3 Declarando o caminho dos arquivos . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.4 Declarando os intervalos de tempo . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.5 Declarando os grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.6 Grupos de destino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

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

3.3.7 Regras de reescrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


3.3.8 Configurando as ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.9 Configurando as ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.10 Fazendo o squidGuard funcionar com o Squid . . . . . . . . . . . . . . . . . 28
3.4 A base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.1 A base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.2 Listas de domínio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3 Listas de URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.4 Listas de expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 Texto complementar - Instalando o Squid . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6 Exemplo do squidGuard.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

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. 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 Oliveira
de Paula (fredaodepaula@cdtc.org.br) .

O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vem
sendo realizado pelo ITI 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 atráves do email ouvidoria@cdtc.org.br, ou da


home 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 responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença
Copyright ©2006,Frederico Oliveira de Paula (fredaodepaula@cdtc.org.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, Frederico Oliveira de Paula (fredaodepaula@cdtc.org.br) .

É 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

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

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
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

7
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 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.
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;

8
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 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

SquidGuard

10
Capítulo 1

O que é o squidGuard

O squidGuard é um plugin redirecionador, controlador de acesso e filtro para o Web Proxy Cache
Squid. O squidGuard além de ser livre (segue a licença GPL) é muito flexível, extremamente
rápido, fácil de instalar e portável (roda em AIX, Dec-Unix, FreeBSD, Linux e Solaris).

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

O curso, com base na distribuição Debian, tem uma semana, 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 instalação e configuração do filtro squidGuard.

2.2 Público Alvo


Técnicos que desejam trabalhar com o squidGuard.

2.3 Pré-requisitos
Os usuários deverão ser, necessariamente, indicados por empresas públicas e ter conhecimento
básico internet, filtros, pacotes, Squid e redes.

2.4 Descrição
O curso de squidGuard será realizado na modalidade EAD e utilizará a plataforma Moodle como
ferramenta de aprendizagem. Ele é composto de um módulo de aprendizado que contém ao seu
final uma avaliação de aprendizado. 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 squidGuard será a 1.1.4.

2.5 Metodologia
O curso está dividido da seguinte maneira:

2.6 Cronograma
• Semana 1

• Introdução;

• Instalando o squidGuard;

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

• Configurando o squidGuard;

• A base de dados.

As lições, disponíveis em cada módulo, contém o contéudo principal. Elas poderão ser acessadas
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 anteriormente.
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 enviada ao fórum
correspondente. Diariamente os monitores darão respostas e esclarecimentos.

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

• Introdução

• Instalação do squidGuard

• Configuração

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.squidguard.org/

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

• http://www.linuxman.pro.br/node/1/

14
Capítulo 3

Módulo I - Introdução, instalação e


configuração

3.1 Introdução
Uma pequena lição introdutória sobre o squidGuard e suas principais características.

3.1.1 Introdução
O Squidguard é um plugin redirecionador, controlador de acesso e filtro para o Web Proxy Cache
Squid. O Squidguard além de ser livre (segue a licença GPL) é muito flexível, extremamente rá-
pido, fácil de instalar e portável (roda em AIX, Dec-Unix, FreeBSD, Linux e Solaris). O Squidguard
pode ser usado para:

• limitar o acesso à servidores web para alguns usuários a partir de uma lista de URLs ou
servidores conhecidos;

• bloquear o acesso à algumas URLs de acordo com uma lista de expressões regulares ou
palavras para alguns usuários;

• redirecionar URLs bloqueadas para uma página informativa;

• redirecionar usuários não registrados para uma página de registro;

• redirecionar os downloads mais populares para uma cópia local;

• redirecionar banners para um GIF vazio;

• ter diferentes regras de acesso de acordo com o dia, dia da semana, hora e etc;

• ter diferentes regras de acesso para diferentes tipos de usuários.

3.1.2 Portabilidade
Uma das características do Squidguard é a sua portabilidade. Apesar de ter sido desenvolvido
num sistema Sun Solaris 2.8, foi compilado e testado com sucesso nos sistemas:

• AIX;

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

• Dec-Unix;

• FreeBSD;

• RedHat;

• Solaris.

3.1.3 Como funciona o Squidguard?


Toda vez que o Squid é iniciado ele gera um número configurável de subprocessos do Squid-
guard. Quando o Squid recebe a requisição de acesso a uma URL, manda uma linha com o
formato URL ip-address/fqdn ident method\n através de um pipe para a entrada padrão de um
subprocesso Squidguard. Este então checa a informação de acordo com as suas lista e decide
se a URL deve passar sem mudanças ou não.
A primeira atitude que o Squidguard toma ao receber a requisição é procurar um grupo para o
cliente baseado no endereço ip, num nome de domínio opcional e um id de usuário. Se o cliente
não pertence a nenhum grupo, então a ação definida como padrão é tomada. Depois de achado
o grupo o filtro aplica as regras de reescrita de acordo com o grupo, caso elas não existam, ele
aplica a regra padrão. Se a URL foi modificada por uma regra de reescrita, então a nova URL e
as informações complementares são retornadas. Caso não haja modificação na URL, uma linha
em branco é retornada.
Depois de todos esse procedimentos o squid recebe a linha com o retorno através de um pipe.
Para URLs que foram "aprovadas"o retorno é um \n, para as bloqueadas ou modificadas o retorno
é uma linha como new_URL ip-address/fqdn ident method\n. Finalmente o Squid redireciona a
página sem que o usuário ou o browser percebam. Há também como fazer com que o usuário
perceba o redirecionamento pedindo para o browser requisitar a nova URL.
Para saber mais sobre a interface de redirecionamento do Squid, que é a utilizada pelo Squid-
guard, entre em http://www.squid-cache.org/Versions/v1/1.1/1.1.22/Release-Notes-1.1.txt.

3.2 Instalando o squidGuard


Instalação do squidGuard a partir do código fonte e também do apt.

3.2.1 Instalação
Para fazer a instalação do squidGuard é necessário, antes de mais nada, ter o Squid instalado
e configurado. A instalação do Squid é abordada rápidamente no texto Instalando o Squid na
página principal do curso.

Serão abordados aqui dois métodos de instalação do squidGuard. O primeiro é o mais fácil,
mas além de ser pouco customizável é apenas para a distribuição Debian e derivadas (Ubuntu,
Xandros, Kurumin ...). O Segundo método pode ser aplicado em qualquer distribuição, inclusive
Debian.

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

3.2.2 Pré-requisitos
Para instalar o squidGuard alguns requisitos devem estar instalados previamente no sistema.
Vários deles já foram utilizados para a instalação do Squid, então você já deve possuí-los. Para
a instalação via apt-get (Debian e derivados), os pacotes necessários são:

• debconf

• libc6

• libc6.1

• libdb4.1

• liburi-perl

• libwww-perl

• perl

• squid

Provavelmente se o computador não tiver esses pacotes, eles serão instalados automática-
mentes pelo apt.

Para a instalação utilizando o código fonte os requisitos são:

• uma ferramenta de make compatível (Gmake);

• um compilador ANSI C (gcc-2.7.2.3 ou superior);

• parser generator compatível com yacc (Bison);

• gerador de análise lexical compatível com lex (Flex);

• uma biblioteca de expressões regulares compatível com regcomp()/regexec (Regex) ;

• gzip para descompactar o pacote;

• a versão 2.x da biblioteca Berkeley DB.

Como esses são programas utilizados na instalação de diversos outros programas, será abor-
dada apenas a instalação da biblioteca Berkeley DB, quanto a instalação dos demais, podem ser
feitas perguntas no Fórum de dúvidas gerais.

3.2.3 Instalando com o apt-get


A instalação utilizando a ferramenta apt é a mais rápida e fácil. Com o terminal aberto, logue
como o usuário root:

usuario@debian: $ su Password:

Depois de logado como o usuário root basta dar o comando a seguir para instalar o programa:

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

debian:/home/usuario# apt-get install squidguard

Aparecerá algo como:

Lendo Lista de Pacotes... Pronto


Construindo Árvore de Dependências... Pronto
Pacotes sugeridos :
chastity-list
Os NOVOS pacotes a seguir serão instalados:
squidguard
0 pacotes atualizados, 1 pacotes novos instalados, 0 a serem removidos e 0 não atualiza-
dos.
É preciso fazer o download de 136kB/136kB de arquivos.
Depois de desempacotamento, 451kB adicionais de espaço em disco serão usados.

Depois disso aparecerão duas telas de configuração como as que seguem abaixo:

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

Nessa primeira tela aperte apenas a tecla Enter.

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

Na segunda e última tela aparece uma pergunta a respeito da lista negra do squidguard, isso
será explicado mais à frente, por enquanto selecione a opção <Não> e precione Enter.

3.2.4 Instalando a partir do código fonte


Para instalar o Squidguard a partir do código fonte todos os pré-requisitos anteriormente citados
devem estar disponíveis. Como um pré-requisito para a instalação do Squidguard é ter o Squid
instalado, então a maioria dos pacotes já devem estar disponíveis na máquina. Será abordada
aqui apenas a instalação da biblioteca Berkeley DB e do Squidguard em si.

Instalando a biblioteca Berkeley DB

O primeiro passo para a instalação é baixar o pacote do endereço http://dev.sleepycat.com/downloads/rele


O Squidguard foi desenvolvido sobre a versão 2.x da Berkeley DB, por isso utilize a versão dois
ou posteriores.

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

Depois de baixar o pacote, como o usuário root, crie uma pasta onde ele será descompactado.

debian: # mkdir -p /local/src

O próximo passo é descompactar o pacote.

debian: # cd /local/src
debian:/local/src#: gzip -dc /local_onde_está_o_pacote/db-versão.tar.gz | tar xvf -

Com isso será criada a pastra db-versão dentro do diretório /local/src. Entre nessa pasta.

debian:/local/src#: cd db-versão

Dependendo da versão do pacote que foi baixado o arquivo de configuração pode estar na pasta
principal ou na pasta dist. Depois de achar o arquivo de configuração, execute com o comando:

debian:/local/src/db-versão#: ./configure

ou

debian:/local/src/db-versão#: cd dist
debian:/local/src/db-versão/dist#: ./configure

Se tudo der certo agora basta compilar e instalar a biblioteca.

debian:/local/src/db-versão#: make
debian:/local/src/db-versão#: make install

3.2.5 Compilando e instalando o Squidguard


O primeiro passo para instalar o Squidguard é baixar o pacote do endereço http://ftp.tdcnorge.no/pub/www/pro
Depois de baixado o pacote, se você ainda não criou, crie o diretório /local/src.
debian: # mkdir -p /local/src

Entre nesse diretório e descompacte o pacote.

debian: # cd /local/src
debian:/local/src# gzip -dc /local_onde_está_o_pacote/squidGuard-versão.tar.gz | tar xvf -

Com isso será criado o diretório squidGuard-versão, entre nele:

debian:/local/src# cd squidGuard-versão

Agora basta compilar e instalar o programa.

debian:/local/src/squidGuard-versão# ./configure
debian:/local/src/squidGuard-versão# make

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

debian:/local/src/squidGuard-versão# make install

É possivel compilar e instalar o squidGuard com outras opções, para isso leia a documentação
que vem com o pacote ou entre no site do Squidguard http://www.squidguard.org/install/ .

3.3 Configurando o squidGuard


Como configurar o filtro.

3.3.1 Configurando o squidGuard


Se o squidGuard foi instalado a partir do apt, provavelmente haverá um arquivo de configuração
comentado no diretório /etc/squid/ chamado squidGuard.conf, nesse caso basta altererá-lo como
for necessário.

Se o programa foi instalado "na mão", então provavelmente o arquivo terá que ser criado.

debian: # touch /etc/squid/squidGuard.conf

Agora, para editar, escolha o seu editor de texto preferido (gedit, VIM, nano, ...).

3.3.2 Aspectos relevantes


Estrutura do arquivo

Alguns aspectos devem ser observados quanto a criação do arquivo squidGuard.conf. O


arquivo tem uma estrutura que é recomendada pelos criadores do filtro. A estrutura é a seguinte:

1. No começo do arquivo devem vir os caminhos para os demais arquivos utilizados pelo squid-
Guard (como logdir e dbhome);

2. Em seguida devem vir as declarações de tempo;

3. Logo depois as declarações de grupo;

4. Declarações de grupo de destino;

5. Regras de reescrita;

6. Por último as regras de controle de acesso.

Algumas coisas como regras de reescrita e declarações de tempo podem parecer estranhas
ou incompreensíveis no momento, mas serão explicadas no decorrer do curso.

Palavras reservadas

Algumas palavras são reservadas para o próprio squidGuard, por isso devem ser evitadas.
Abaixo segue a lista com essas palavras:

• acl;

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

• fri;

• outside;

• sun;

• urllist;

• anonymous;

• friday;

• pass;

• sunday;

• user;

• date;

• fridays;

• redirect;

• sundays;

• userlist;

• dbhome;

• ip;

• rew;

• thu;

• wed;

• dest;

• log;

• rewrite;

• thursday;

• wednesday;

• destination;

• logdir;

• sat;

• thursdays;

• wednesdays;

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

• domain;
• logfile;
• saturday;
• time;
• weekly;
• domainlist;
• mon;
• saturdays;
• tue;
• within;
• else;
• monday;
• source;
• tuesday;
• expressionlist;
• mondays;
• src;
• tuesdays;

Além dessas palavras devem ser evitados também os símbolos:

• # - usado para comentar o arquivo;


• { } - usados para delimitar o começo e o fim das declarações de grupo;
• - - freqüentemente usado para delimitar um intervalo de tempo.

3.3.3 Declarando o caminho dos arquivos


O squidGuard utiliza alguns arquivos auxiliares como arquivos de log e base de sites. Para espe-
cificar os endereços desses arquivos utilizamos as diretivas logdir e dbhome.

A diretiva logdir define o diretório com os arquivos de log do filtro. Os arquivos padrões são o
squidGuard.error e o squidGuard.log.

A diretiva dbhome define o diretório com a lista dos arquivos da base.

No caso do padrão, essas configurações ficariam assim:

logdir /usr/local/squidGuard/logs dbhome /usr/local/squidGuard/db

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

3.3.4 Declarando os intervalos de tempo


No squidGuard podemos definir em qual espaço de tempo um determindado grupo pode aces-
sar um endereço na internet, qual não pode e etc. Podem haver diversos intervalos de tempo
diferentes para serem utilizados por grupos diferentes. Olhando a estrutura do squidGuard.conf,
dado como exemplo nesse curso notamos a existência de um intervalo de tempo chamado de
workhours e que esse intervalo vale apenas para os dias da semana entre 8:00 e 16:30. As re-
gras aplicadas utilizando essa diretiva time so valerão no espaço de tempo que estiver coberto
por ela.

time workhours {
weekly mtwhf 08:00 - 16:30
date *-*-01 08:00 - 16:30
}

Se, por exemplo, quiséssemos bloquear o site Youtube apenas durante a semana e em horá-
rio de expediente, então faríamos:

time youtube_livre { weekly mtwhf 00:00 - 08:00 18:00 - 24:00 #Libera o Youtube apenas
fora do horário comercial
weekly saturdays sundays # Libera nos fins de semana
}

Se quiséssemos bloquear o acesso ao Orkut durante todos os dias, incluido os fins de semana
e liberá-lo apenas entre 00:00 e 07:00 :

time orkut_bloqueado { weekly * 07:00 - 24:00


} Pode-se também bloquear um endereço pela data de acesso:

time dia_de_natal { date *.12.25


}

Nesse caso todo natal seria liberado o acesso a tudo para um determinado grupo. (Opção
nada recomendável!!!!!)

Várias outras configurações podem ser feitas, como combinar vários dias para serem libera-
dos, um intervalo de tempo numa determinada data... Para saber um pouquinho mais entre no
site do squidGuard e leia sobre o arquivo de configuração.

Obs.: Os dias da semana podem ser representados de várias maneiras diferentes no arquivo
de configuração:

• s, sun, sunday, sundays - domingo

• m, mon, monday, mondays - segunda

• t, tue, tuesday, tuesdays - terça

• w, wed, wednesday, wednesdays - quarta

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

• h, thu, thursday, thursdays - quinta

• f, fri, friday, fridays - sexta

• a, sat, saturday, saturdays - sábado

3.3.5 Declarando os grupos


Para negar acesso a algum site a um determindo usuário devemos ter esse usuário inserido num
grupo. Para definir grupos usamos o parâmetro source ou src.
Por exemplo, o setor de gerência de redes da empresa usa as máquinas da classe 192.168.10.0/24
enquanto os demais empregados usam as com endereço ip 192.168.20.0/24. Devemos então
separá-los em dois grupos diferentes.
src redes {
ip 192.168.10.0/24
}
src usuarios {
ip 192.168.20.0/24
}
A descrição dos ips podem vir de diversas maneiras:

• pode ser, por exemplo, 192.168.1.198 para bloquear apenas a máquina com esse ip;

• 192.168.10.0/24 como foi usado acima;

• 192.168.10.0/255.255.254.0, onde o endereço depois da barra é a máscara da rede;

Os endereços ip também podem vim de uma lista de um determinado arquivo do sistema,


para isso utilizamos o parâmetro iplist. O arquivo deve ter um formato como:
10.0.0.0/8
192.168.0.0./24
10.10.0.0/12

Para que seja usado esse arquivo deve ser posto ou o caminho absoluto do arquivo ou o
caminho relativo à diretiva dbhome. Se a diretiva dbhome for /var/squidguard/db e o arquivo
estiver em /var/squidguard/db/ips/lista, então deve-se usar iplist ip/lista.

3.3.6 Grupos de destino


Os grupos de destinos são os endereços que serão bloqueados em si. Para criar um grupo
devemos usar o parâmetro dest ou destination. Dentre destes grupos nós teremos as listas de
domínios, lista de URLs e a lista de expressões. Veremos mais a frente como construir essas
listas e até utilizar algumas que já estão prontas e são bem completas.

dest sites_improprios {
domainlist improprios/dominios
urllist improprios/urls
expressionlist improprios/expressoes
}

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

Assim como nos grupos de usuários, pode ser declarado o caminho relativo ou o caminho
absoluto do arquivo.

3.3.7 Regras de reescrita


A última parte antes de definir as regras de controle de acesso é a definição das regras de rees-
crita. Para as regras de reescrita utilizamos rew ou rewrite.

rew get-local {
s@.*/cb32e46.exe$@http://ftp/pub/www/client/windows/cb32e46.exe@r
s@.*/cc32e46.exe$@http://ftp/pub/www/client/windows/cc32e46.exe@r
s@.*/cp32e46.exe$@http://ftp/pub/www/client/windows/cp32e46.exe@r
}

Segundo o site do squidGuard, para um bom desempenho, é recomendável que as regras de


reescrita sejam limitadas. Em substituição as regras de reescrita utilize redirecionamentos.

3.3.8 Configurando as ACLs


A última parte da criação do squidGuard.conf é a definição das listas de controle de acesso (ACL).
Para isso utilizamos o parâmetroa acl seguido das definições necessárias.
Vamos definir uma acl utilizando os exemplos definidos nas páginas passadas.
time youtube_livre {
weekly mtwhf 00:00 - 08:00 18:00 - 24:00
weekly saturdays sundays
}

src usuarios {
ip 192.168.20.0/24
}

dest sites_improprios {
domainlist improprios/dominios
urllist improprios/urls
expressionlist improprios/expressoes
}

dest youtube{
domainlist youtube/dominios
urllist youtube/urls
}

Vamos então construir uma acl que libere o youtube para todos os empregados de uma em-
presa em um determinado horario mas continue bloqueando os sites impróprios.
acl { usuarios within youtube_livre {
pass !sites_improprios all
} else {
pass !sites_improprios !youtube all

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

}
}

Vamos agora entender a acl linha por linha. A linha usuarios within youtube_livre significa que
a regra se aplica aos usuários do grupo usuarios, dentro do tempo youtube_livre (entre 18:00
e 08:00). Na linha pass !sites_improprios all é definido que eles terão acesso à todos os sites
exceto os que estão no grupo sites_impróprios. Mas se esses usuários estiverem fora do intervalo
de tempo então pass !sites_improprios !youtube all, eles terão acesso à todos os sites menos o
youtube e os site_improprios.

3.3.9 Configurando as ACLs


Existe uma regra especial para acls que é a default. Caso nenhuma das regras anteriores seja
verificada numa requisição então a default é aplicada. Se o usuário a acessar um determinado
endereço não estiver em nenhum grupo, essa regra é aplicada. Você pode por exemplo definir
para o default ser negar tudo e redirecionar para uma página local contendo um aviso.

default {
pass none
redirect http://localhost/pagina_de_redirecionamento/redireciona.html
}

3.3.10 Fazendo o squidGuard funcionar com o Squid


Depois de terminadas as alterações no arquivo de configuração, é a hora de fazer o squidGuard
funcionar. Para isso já é necessário um Squid instalado e funcional. No arquivo de configuração
do Squid descomente ou crie a linha:

redirect_program /usr/bin/squidGuard -c /local_onde_está/o_arquivo/squidGuard.conf

Depois disso mande um sinal HUP para o Squid:

kill -HUP ’cat /var/run/squid.pid’

ou tente:

squid -k reconfigure

Se tudo estiver certo bastar abrir o browser e tentar acessar os sites que supostamente não
poderiam ser acessados.

3.4 A base de dados


3.4.1 A base de dados
Para que o squidGuard funcione como um filtro bem eficiente é necessário uma base de dados
bem completa. Por esse motivo as listas de domínios, as listas de URLs e as de expressões

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

devem ser mais completas quanto possível. Existem na intenet diversas dessas listas, inclusive
no site do filtro podem ser encontradas para download

3.4.2 Listas de domínio


As listas de domínio devem estar num arquivo texto normal, apenas com os domínios separados
por linhas. O tamanho dessas listas, segundo os criadores do filtro, "tem uma influência des-
prezível no desmpenho", logo, quanto maior a lista, mais eficiente será o filtro em relação aos
bloqueios. Quando um domíno é bloqueado, todos os seus subdomínios também são. Se, por
exemplo, o domínio cdtc.org.br fosse colocado na lista, tanto o site cursos.cdtc.org.br quanto co-
munidade.cdtc.org.br seriam bloqueados. Segue abaixo um pequeno fragmento de um arquivo
de domínios relativos à áudio e vídeo.

209.157.71.50 199.85.4.59 212.110.152.70 64.37.112.8 148.122.210.8 66.179.230.80 80.237.216.82


69.46.28.92 mp3hitz.dr.ag mp3.place.cc migliamp3.sites.cc mp3.sites.cc tnpg.cc 40best.com chulo.8m.com
allmp3s.com cream.crimea.com cyberpoolgames.com

3.4.3 Listas de URLs


As listas de URLs seguem o mesmo formato das listas de domínio, cada URL é separada ape-
nas por uma nova linha. Segue abaixo um trecho de um arquivo de URLs utilizado no squidguard.

66.218.77.68/paris/4114 66.218.77.68/researchtriangle/lab/3225 66.218.77.68/sunsetstrip/frontrow/8717


66.218.77.68/sunsetstrip/studio/9490 83.80.16.26/ brouns angelfire.com/az2/freemusic angelfire.com/mb/hon
board.to/soundhouse casema.net/ brouns come.to/cyberjack come.to/deejayc come.to/euro20 come.to/mp3alb
come.to/mtvhits come.to/top_mp3 come.to/voe download.at/mp3universe fly.to/mp3 forward.to/bsp
free.prohosting.com/ eileider geocities.com/damien350 geocities.com/malachi3000 geocities.com/paris/4114

3.4.4 Listas de expressões


As listas de expressões regulares seguem o formato das anteriores, cada expressão numa linha.
As expressões regulares devem ser feitas com muito cuidado para evitar que endereços que não
deviam, sejam bloquados. Diferentemente das listas de domínios e de URLs, listas de expressões
regulares contendo expressões muito longas e complexas podem fazer com que a eficiência do
programa caia significadamente, por isso muito cuidado com as expressões utilizadas! Segue
abaixo expressões regulares com o intuito de bloquear sites com conteúdo indevido.
(adultos|adultsight|adultsite|adultsonly|adultweb|blow-?job|bondage|centerfold|cumshot|cyberlust|cyberco
ˆ
( |[-.\?+=/_0-9])?(anal|babe|boob|breast|busty|clit|cum|cunt|dick|fetish|fuck|hooter|lust|naked|nude|oral|orgy|po
.\?+=/_0-9]|$)

3.5 Texto complementar - Instalando o Squid


Uma pequena explicação sobre como instalar o Squid.

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

3.5.1 Instalação
Todo o material dessa página foi baseado no texto "Configurando um Squid ’Ninja’"de Eri Ramos
Bastos com pequenas alterações. O material original encontra-se no endereço http://www.linuxman.pro.br/squ

Instalando e configurando o Squid

Instalando via binário ou com facilidades do sistema

Se você não precisa de nenhuma feature muito sofisticada no seu squid (90% dos casos não
precisa), não há porque instalar via código-fonte baixado do site do squid.

Instalando em um sistema baseado em Red Hat Linux

Além de estar disponível nos CDs da distribuição, ainda é possível baixar as mais novas ver-
sões já empacotadas no sistema RPM (Red Hat Package Manager). Para isso acesse o link
http://www.rpmfind.net/linux/rpm2html/search.php?query=squid& submit=Search+...& system=redhat&
arch=\
E depois:
# rpm -ivh squid.x.y.z.rpm
Instalando em um sistema baseado em Debian
O Debian sempre prezou pela facilidade de instalação a atualização de pacotes, com seu sistema
apt, que facilita muito a vida dos administradores. Para instalar o squid basta executar o comando:
# apt-get install squid
Baixando o código-fonte
Caso queira o controle de banda, tópico avançado abordado aqui, instale o squid pelo fonte, de
acordo com as instruções.
Na data de criação desse documento, a versão mais recente (estável) do squid era a 2.5STA-
BLE1.
Verifique a versão mais recente em http://www.squid-cache.org/Versions/v2/.
# groupadd squid
# useradd -g squid -s /dev/null squid >/dev/null 2>&1
# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE1-src.tar.gz
# tar zxvf squid-2.5.STABLE1-src.tar.gz
#cd squid-2.5.STABLE1
# ./configure –enable-delay-pools –enable-cache-digests –enable-poll –disable-ident-lookups
–enable-truncate –enable-removal-policies –enable-arp-acl
# make all
# make install
# cd auth_modules/NCSA
# make
# make install

Limpando o squid.conf
O arquivo de configuração do squid é o squid.conf, normalmente ele se encontra em /etc/squid.conf
ou em /usr/local/squid/etc/squid.conf. Caso não encontre o seu em nenhum desses lugares,
procure-o com:
# locate squid.conf
ou

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

# find squid.conf
Pode parecer fútil, mas uma limpeza inicial no arquivo squid.conf pode ser bem útil. O arquivo de
configuração original tem, em média, 2000 linhas.
# cp squid.conf squid.conf.original # egrep -v "#̂|$̂"squid.conf.original > squid.conf
Para mais informações sobre o Squid, sua instalação e suas configurações matricule-se no nosso
curso de Squid, entre no site http://www.linuxman.pro.br/squid/, ou no site de documentação do
próprio programa http://www.squid-cache.org/Doc/

3.6 Exemplo do squidGuard.conf


#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db
logdir /var/log/squid

#
# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat

time workhours {
weekly mtwhf 08:00 - 16:30
date *-*-01 08:00 - 16:30
}

#
# REWRITE RULES:
#

#rew dmz {
# s@://admin/@://admin.foo.bar.no/@i
# s@://foo.bar.no/@://www.foo.bar.no/@i
#}

#
# SOURCE ADDRESSES:
#

#src admin {
# ip 1.2.3.4 1.2.3.5
# user root foo bar
# within workhours
#}

#src foo-clients {

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

# ip 172.16.2.32-172.16.2.100 172.16.2.100 172.16.2.200


#}

#src bar-clients {
# ip 172.16.4.0/26
#}

#
# DESTINATION CLASSES:
#

dest good {
}

dest local {
}

#dest adult {
# domainlist adult/domains
# urllist adult/urls
# expressionlist adult/expressions
# redirect http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcc
/>#}

acl {
# admin {
# pass any
#}

# foo-clients within workhours {


# pass good !in-addr !adult any
# } else {
# pass any
#}

# bar-clients {
# pass local none
#}

default {
pass local none
# rewrite dmz
# redirect http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcc
/> }
}

32

Você também pode gostar