Introdução ao Squid

Artur Martins

David Riedel

Florentino Bexiga
16 de Abril de 2008
Departamento de Engenharia Electrónica e Informática
Tópicos




Motivação
O que foi instalado
Requisitos
Squid




SquidGuard


Configuração
Permissões necessárias
Controlo do Serviço
Configuração
Relatórios



Webalizer
SARG
Calamaris


Segurança
Diagrama de rede







Antes
Depois
Proxy Transparente
Vantagens
Desvantagens
Conclusões/Observações finais
Referências
Motivação

Filtragem de conteúdos;

Poupança de largura de banda;

Criação de relatório da utilização da web;
O que foi instalado



Squid
Squidguard
Geradores de relatórios:

Webalizer

SARG

Calamaris
Requisitos

Linux Debian

Apache

Perl (relatórios)
Squid
Introdução


O Squid é um servidor proxy e gestor de cache.
Tem vários utilidades como acelerar um servidor Web através do
armazenamento das páginas mais procuradas na cache e ajudar na
segurança e filtragem de tráfego.
Instalação

Para instalar o Squid basta digitar:
 aptitude install squid3
Configuração do Squid: I
1.
http_port 3128 transparent
2.
icp_port 0
3.
cache_mem 20 MB
4.
cache_dir ufs /var/cache/squid3 512 16 256
Linha 1 - define a porta para o serviço http e a transparência da proxy.
Linha 2 - define a porta do serviço internet cache protocol (0 para desactivar)
Linha 3 - define a memória disponível para a cache
Linha 4 - define a directoria para onde irão os ficheiros da cache. Sintaxe:
[sistema de ficheiros][directoria][espaço em disco máximo][nº de directorias de
1º nível][nº de directorias de 2º nível]
Configuração do Squid: II
5.
6.
7.
8.
9.
10.
acl
acl
acl
acl
acl
acl
all src 0.0.0.0/0.0.0.0
manager proto cache_object
allowed_hosts src 10.10.0.0/255.255.0.0
deei_network src 10.10.0.0/16
localhost src 127.0.0.1/255.255.255.255
to_localhost dst 127.0.0.0/8
Linha 5 a 10 - as linhas acl definem nomes para intervalos de endereços IP ou outros
objectos para facilitar a sua utilização. Exemplo: acl deei_network src
192.168.0.0/24 define que a string deei_network irá designar a gama de ips que se
segue a sua frente
Configuração do Squid: III
11.
12.
13.
14.
15.
16.
17.
http_access allow manager localhost
cachemgr_passwd pass all
http_access allow deei_network
icp_access allow allowed_hosts
icp_access deny all
miss_access allow allowed_hosts
miss_access deny all
Linha 11 - define a permissão para o utilizador localhost aceder ao Cache Manager
Linha 12 - define para todos os utilizadores do Cache Manager a password pass
Linha 13 - define para os utilizadores previstos em deei_network o acesso ao serviço http
Linha 14 e 15 - define para os utilizadores previstos em allowed_hosts o acesso ao serviço icp e a linha
seguinte nega para todos os restantes
Linha 16 e 17 - define que possam ser passados objectos fora da cache para os utilizadores previstos
em allowed_hosts mas nega a todos os outros
Configuração do Squid: IV
18.
19.
20.
21.
22.
23.
cache_peer proxy1.si.ualg.pt parent 8080 0 no-query
acl internalSites dstdomain .ualg.pt
always_direct allow internalSites
never_direct allow !internalSites
never_direct allow all
redirect_program /usr/bin/squidGuard –c
/etc/squid3/squidGuard.conf
Linha 18 - define (no caso de existir) qual é a proxy “pai” onde o Squid deve fazer os pedidos. No
caso de ser transparente esta opção não é necessária.
Linha 19 a 22 - no caso de se querer declarer um domínio local que não será necessário passar pela
proxy quando requisitado, declara-se uma acl e indica-se através de uma linha always_direct ou
never_direct o que deve redireccionar ou não.
Linha 23 - define a directoria para onde irão os ficheiros com a informação sobre o sistema quando o
programa crasha.
Linha 24 - define que ao iniciar o Squid iniciará também o SquidGuard e redireccionará os pedidos
feitos para ele também.
Permissões necessárias
Para que o Squid consiga escrever nas directorias
/var/log/squid3 e /var/cache/squid3 é necessário mudar o
utilizador e o grupo das mesmas para proxy.proxy. Essa
modificação é realizada através do seguinte comando:

chown -R proxy.proxy /var/log/squid3
/var/cache/squid3
Controlo do Serviço

/etc/init.d/squid3 start
#para iniciar o serviço

/etc/init.d/squid3 restart #para reiniciar o serviço

/etc/init.d/squid3 reload
#para recarregar os ficheiros

/etc/init.d/squid3 stop
#para parar o serviço
SquidGuard
Introdução

O SquidGuard é um filtro, redireccionador e controlador de acesso web
que é ligado ao Squid, actuando como um plugin.
Instalação

Para instalar o SquidGuard digitar o comando
 aptitude install squidGuard
Configuração do SquidGuard: I
1.
2.
3.
4.
5.
6.
dbhome /var/lib/squidguard/db
logdir /var/log/squid3
src deei_network {
ip 10.10.0.0/16}
time leisure {
weekly smtwhfa 17:30-09:00}
Linha 1 - indicação da directoria onde estão guardadas as blacklists/whitelists
Linha 2 - indicação da directoria onde estão os logs do squidGuard (squidGuard.log)
Linha 3 e 4 - criação de grupos de utilizadores/ips para atribuir restrições
Linha 5 a 6 - criação de intervalos de tempo para atribuir ou retirar determinadas
permissões (pode ser usada a directiva weekly seguida dos dias da semana ou a
directoria date.
Configuração do SquidGuard: II
7.
8.
9.
10.
dest forbidden {
domainlist forbidden/domains
urllist forbidden/urls
expressionlist forbidden/expressions}
Linha 7 a 10 - criação da lista forbidden. Esta lista é chamada de blacklist e tem como
função especificar a informação que é restrita aos utilizadores. Os ficheiros relativos a
forbidden estão localizados na pasta /var/lib/squidguard/db/forbidden e são os
seguintes:
• domains (onde se podem colocar domínios),
• urls (onde se podem colocar endereços específicos)
• expressions (onde se podem colocar expressões comuns)
Configuração do SquidGuard: III
11.
12.
13.
14.
dest white {
domainlist white/domains
urllist white/urls
expressionlist white/expressions}
Linha 11 a 14 – criação da lista white. Esta lista é chamada de whitelist e tem como
função especificar a informação que é autorizada aos utilizadores. Este tipo de lista é útil
para especificar recursos que sejam permitidos o seu acesso uma vez que seriam
barrados pelas blacklists. Ex: sexta-feira.
Configuração do SquidGuard: IV
15.
16.
17.
18.
19.
20.
21.
22.
23.
acl {
deei_network within leisure {
pass all}
else {
pass !forbidden white all}
default {
pass none
redirect http://localhost/block.php?site=%u}
}
Linha 15 a 23 - criação das restrições propriamente ditas. Neste caso está indicado que
dentro do intervalo de tempo anteriormente feito, os utilizadores dentro da rede
deei_network poderão aceder a tudo, caso contrário não poderão aceder ao que está
indicado na pasta forbidden com excepção do que está indicado na pasta white. Os
utilizadores que estão fora da rede não poderão aceder a nada. Todo utilizador que
tentar aceder a conteúdo bloqueado será redireccionado para a página
http://localhost/block.php?site=%u. (Nota: a directiva redirect é indispensável para que o
SquidGuard funcione)
Relatórios: Webalizer
Introdução

O Webalizer é uma aplicação que gera páginas web de estatísticas a
partir dos logs de aplicações como o Apache ou o Squid. As estatísticas
normalmente incluem: hits, visitas, referrers, país do visitante e quantidade
de dados descarregados.
Instalação

Para instalar basta digitar:
 aptitude install webalizer
Relatórios: Webalizer
Relatórios: SARG
Introdução

O SARG (Squid Analysis Report Generator) é uma ferramenta que permite
ver o que os utilizadores da rede estão a aceder na Internet através da
análise do arquivo de log "access.log" do Squid. Permite ver informações
como quais os sites que os utilizadores acederam, a que horas, quantos
bytes foram descarregados, quantas conexões foram feitas, ver os sites
mais acedidos, utilizadores que mais acedem, relatório de sites negados,
falhas de autenticação, etc.
Instalação

Para instalar basta digitar
 aptitude install sarg.
Relatórios: SARG
Relatórios: Calamaris
Introdução

O Calamaris é um software que gera relatórios bem detalhados do uso da
Internet usando os arquivos de logs de vários servidores proxy, como o
Squid. Os relatórios gerados são simples na apresentação, no entanto,
muito ricos em detalhes extraídos dos arquivos de logs, eles podem ser
gerados no formato HTML ou mesmo em texto para ser enviado via e-mail.
Instalação

Para instalar o Calamaris basta digitar

aptitude install calamaris.
Relatórios: Calamaris
Segurança: I
Para proteger estes relatórios de olhares indesejados basta criar um ficheiro
.htaccess na directoria onde se encontram introduzindo o seguinte código
1. AuthUserFile /var/www/reports/.htpasswd
2. AuthType Basic
3. AuthName “Reports”
4. Require valid-user
Linha 1 - indica a localização onde está a lista de utilizadores e passwords
Linha 2 – define o tipo de autentificação, neste caso será básica
Linha 3 – define o nome da autentificação
Linha 4 - indica que é necessário um utilizador qualquer presente em .htpasswd.
Também é possível especificar utilizadores.
Segurança: II


Em seguida é necessário criar utilizadores através do comando
htpasswd -c .htpasswd username Automaticamente
será questionada a password.
Para esta configuração funcionar correctamente é necessário
também editar as opções do Apache definindo
AllowOverride All, caso contrário o .htaccess será
ignorado.
Diagrama da rede: Antes
Diagrama da rede: Depois
Proxy Transparente

Configurar o router2 para interceptar todos os pedidos para as
portas 21 (FTP), 80 (HTTP), 443 (HTTPS) e 8080 (proxy) através de
iptables.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j
REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j
REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j
REDIRECT --to-port 3128
Vantagens





É suportado em vários sistemas operativos;
Diminuição do uso de largura de banda;
Rapidez de carregamento de páginas guardadas na cache;
Filtragem de conteúdos usando o SquidGuard;
Possibilidade de verificar a utilização da rede através dos
geradores de relatórios;
Desvantagens




Consome bastantes recursos;
Demora no carregamento de páginas que não estejam
guardadas na cache;
Configuração complexa;
Optimização difícil;
Conclusão/Observações finais






Proxy Server Open-source
Fácil e rápido de instalar
“Fine-tunning” complexo
Filtragem de conteúdos (SquidGuard)
Estatísticas (Calamaris, Sarg, Webalizer)
Proxy Transparente (iptables – routing)
Referências

Livros:


Squid: The Definitive Guide; WESSELS, Duane; O’Reilly
Web:

http://gentoo-wiki.com/HOWTO_setup_a_home-server

http://www.maynidea.com/squidguard/config.html

http://www.squidguard.org

http://www.cse.unsw.edu.au/faq/questions/www-htaccess.html

http://www.devin.com.br/eitch/webalizer

http://www.devin.com.br/eitch/sarg

http://cord.de/tools/squid/calamaris/Welcome.html.en
Perguntas e Respostas

Questões? Sugestões?
Download

document