Você está na página 1de 28

Linux Network Servers

Proxy Squid

www.4linux.com.br

-2

Sumrio
Proxy Squid Parte 1.................................................................................................................... 3
1.1. Objetivos ........................................................................................................................ 4
1.2. Introduo ...................................................................................................................... 4
1.2.1. Proxy Manual ........................................................................................................................ 5
1.2.2. Proxy Transparente .............................................................................................................. 5

1.3. O que uma ACL? .......................................................................................................... 6


1.3.1. Tipos de ACL ......................................................................................................................... 6

1.4. Squid como cache ........................................................................................................ 10


1.4.1. Cache em disco ................................................................................................................... 11

1.5. Configurando um cliente manualmente........................................................................14


1.5.1. Testando os filtros .............................................................................................................. 17

1.6. Criando Blacklists e Whitelists ..................................................................................... 20


1.6.1. Testando os filtros .............................................................................................................. 21

1.7. Proxy com autenticao ............................................................................................... 26

ndice de tabelas
ndice de Figuras

Proxy Squid Parte 1 - 3

Proxy Squid Parte 1

Proxy Squid Parte 1 - 4

1.1. Objetivos
Funes do Squid: Cache / Filtro de contedo;
O que um ACL?
Instalao do Squid;
Configurao da estrutura do Cache em disco e memria RAM;
Configurao de um exemplo de filtro de contedo;
Proxy com autenticao;

1.2. Introduo
Nesta aula, iremos observar algumas particularidades do Proxy web Squid,
uma soluo Open Source amplamente utilizada no mercado como: acelerador e filtro
de contedo Web.
Imagine que os seus usurios necessitem acessar com frequncia um site de
notcias. A cada requisio, o navegador Web resolve o DNS deste site, faz a
requisio ao servidor Web encontrado e traz o contedo at o usurio.

Agora, imagine que 500 clientes esto acessando este site. Desperdcio de
banda, no acha?

As solues Web Proxy foram desenvolvidas justamente para contornar este


problema. Imagine o mesmo cenrio acima, s que desta vez, ao invs de consultar o
site, o navegador consulta o "Web Proxy" previamente configurado, e ento o
servidor "proxy" faz a consulta ao site, s que antes de entregar a requisio ao
cliente, o servidor "proxy" armazena o contedo do site em um diretrio num disco
rgido e, quando um segundo cliente acessar o mesmo site, o servidor "proxy" verifica
se o contedo esta armazenado em "cache".

Proxy Squid Parte 1 - 5


Em caso positivo, o servidor entrega o contedo do "cache", acelerando a
navegao e economizando banda. Alm disso, o "Web Proxy" tambm pode agir
como filtro de contedo, verificando se desejvel que aquele contedo seja
acessvel para aquele usurio, endereo IP ou Mac Address, e ento libera ou nega o
acesso de acordo com o especificado nas ACL's (Access Control List), item que
veremos mais adiante.
O Web Proxy pode trabalhar de dois modos: manual ou transparente.

1.2.1. Proxy Manual

Em um proxy manual, o navegador sabe que necessrio fazer uma


requisio ao servidor "proxy", ento temos uma srie de funes que o "browser"
pode solicitar, como forar a atualizao do "cache", verificar se as credenciais de
autenticao foram fornecidas previamente, ou seja, o cliente sabe que deve falar
com um "proxy" e far a requisio direto a este. Alm disso, o servidor, por sua vez,
possui o nmero IP do cliente que fez aquela requisio, o que possibilita criar regras
especficas e controle de logs mais apurados.

1.2.2. Proxy Transparente

Em um proxy transparente no h necessidade de configurarmos o "browser".


O cliente far sua requisio ao "gateway" padro daquela rede e ento, com uma
regra de "firewall" previamente configurada, o "gateway" far o redirecionamento
para o proxy, que por sua vez realizar seu trabalho.
A maior vantagem deste modelo que no temos a necessidade de
configurarmos os navegadores Web manualmente, o que seria justificvel em uma
rede onde no temos o poder de manipular o computador dos usurios, como um
provedor de internet, por exemplo.

Proxy Squid Parte 1 - 6


Em compensao, perderemos a flexibilidade dos logs e autenticao, j que o
navegador web no sabe que est passando por um proxy e tambm teremos que
fazer "NAT" para acessos a sites que utilizam "HTTPS", j que o "Squid" no sabe
lidar com este tipo de contedo quando est trabalhando de forma transparente.

1.3. O que uma ACL?


ACL, ou Access Control List, como o prprio nome diz uma maneira de criar
listas de acesso no Squid.
Com elas podemos criar uma regra dizendo que a ACL de nome "MyNetwork"
engloba todos os endereos originados em 192.168.200.0/24, ou seja, uma ACL que
"casa" com a rede inteira.

1.3.1. Tipos de ACL

Basicamente, as ACL's disponveis no Squid para utilizao na maioria dos


casos podem ser agrupadas na seguinte lista:
ACL's de origem
ACL's de destino
ACL's de horrio

E sua utilizao acontece da seguinte forma:


acl <nome da acl> <tipo da acl> <padro da acl>

Proxy Squid Parte 1 - 7


ACL's de origem so utilizadas para controlar todo e qualquer acesso que
tenha como origem um determinado padro. Essa origem, geralmente um endereo
de host ou endereo de rede.
Tambm pode ser configurado um domnio, mas tenha em mente que, neste
caso, necessrio que seu servidor Proxy esteja completamente hbil a resolver
estes endereos.

acl MyNetwork src 192.168.200.0/24


acl gateway src 192.168.200.1

ACL's de destino so mais comuns e popularmente utilizadas para criar


padres que casem com determinados endereos de rede, endereos de domnio,
partes de um domnio e tambm por expresses regulares. Vamos dar uma olhada na
construo dessas ACL's.

acl Servers dst 192.168.200.2 192.168.200.3


acl 4linux dstdomain .dexter.com.br
acl Brasil dstdomain .com.br

Proxy Squid Parte 1 - 8


ACL's de horrio so muito teis, quando queremos, por exemplo, permitir
acesso a sites de relacionamento durante o horrio de almoo ou fora do horrio de
expediente.

acl almoco time 13:00-14:00


acl parte_manha time 08:00-12:59

Outro formato:
acl parte_manha time MTWHF 08:00-12:59

Abreviao

Dia da semana

domingo

segunda-feira

tera-feira

quarta-feira

quinta-feira

sexta-feira

sbado

Proxy Squid Parte 1 - 9

LEMBRETE Tipos de ACL


src Filtro por rede ou endereo IP;
time Filtro por hora e dia da semana;
urlpath_regex filtro de complemento de uma "url";
url_regex Filtro de uma "string" na "url";
dstdomain Filtro de uma "url";
proxy_auth Filtro por usurios autenticados;
arp Filtro por "MAC Address";
maxconn Filtro por conexes;
proto Filtro por protocolos;
port Filtro por porta.

Para saber quais so e como utiliz-las, acesse:

http://wiki.squid-cache.org/SquidFaq/SquidAcl#head021f45033c4ee1b1fc5bdd4f5c49ddcd08f45bd1

Para instalar o squid, execute o comando abaixo:


# aptitude install squid

Para administrar o squid, necessrio saber onde encontram-se determinados


arquivos:
/etc/squid/squid.conf - Arquivo de configurao
/var/log/squid/*- Arquivos de log do squid.
/var/spool/squid - Diretrio que contm o cache do squid

Proxy Squid Parte 1 - 10


Faa backup do arquivo de configurao original:
# cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

# vim /etc/squid/squid.conf

Para que o squid oua apenas uma rede, troque o valor do parmetro
"http_port 3128" para:
http_port 192.168.200.1:3128

1.4. Squid como cache

Imagine que os seus usurios necessitam acessar com frequncia um site. A


cada requisio, o DNS deste site resolvido, faz a requisio ao servidor Web
encontrado, traz o contedo at o usurio.
Agora, imagine que 300 clientes esto acessando este site... As solues Web
Proxy foram desenvolvidas justamente para contornar este problema.
O servidor Proxy faz a consulta ao site, s que, antes de entregar a requisio
ao cliente, o servidor Proxy armazena o contedo do site em um diretrio do disco
rgido e, quando um segundo cliente acessar o mesmo site, o servidor Proxy verifica
se o contedo est armazenado em cache. Isso acelera e economiza banda!

Proxy Squid Parte 1 - 11

1.4.1. Cache em disco

cache_dir <tipo> <diretrio> <espao> <L1> <L2> <opes>

tipo: Para a maioria dos casos, o padro ufs o ideal. Os tipos diskd e aufs
so utilizados para IO assncrono. O cache em disco pode ser desabilitado
definindo o tipo como null (se suportado).
diretrio: Especifica o caminho onde os objetos sero armazenados. Caso o
cache no seja desejado, defina o caminho como /dev/null.
espao: Especfica o tamanho mximo para o cache em disco. Se atingir o
espao mximo, os objetivos sero repostos.
L1 e L2: L1 corresponde ao nmero de subdiretrios criados a partir do
diretrio de spool (cache) representado por <diretrio> e L2 ao nmero de
subdiretrios criados abaixo de L1.

Iremos especificar 500MB de cache, com 16 diretrios e 256 subdiretrios:

cache_dir ufs /var/spool/squid 500 16 256

/var/spool/squid indica o diretrio no qual o Squid armazena os arquivos do


cache; O 500 indica a quantidade de espao no HD (em MB) que ser usada para o
cache.
Voc pode aumentar o valor se voc tiver mais espao no disco e quiser que o
Squid armazene os arquivos baixados por mais tempo. Os nmeros 16 e 256 indicam
a quantidade de subdiretrios que sero criados dentro do diretrio.

Proxy Squid Parte 1 - 12


Definindo o cache que ser armazenado em memria:
cache_mem 32 MB

Voc pode reservar 16 ou 32 ou 64 MB para o cache em um servidor no


dedicado, que atende a apenas alguns computadores (como o servidor de uma
pequena rede local) e at 1/3 da memria RAM total em um servidor proxy dedicado.
Para que o cache na memria armazene arquivos de at 128 KB, por exemplo,
adicione a linha:
maximum_object_size_in_memory 128 KB

Se voc quiser que o cache armazene arquivos de at 256 MB, por exemplo,
as linhas ficariam:
maximum_object_size 256 MB
minimum_object_size 0 KB

Por padro, sempre que o cache atingir 95% de uso, sero descartados
arquivos antigos at que a porcentagem volte para um nmero abaixo de 90%:
cache_swap_low 90
cache_swap_high 95

Agora, iremos parar o squid, verificar a sintaxe do arquivo de configurao,


gerar o cache e ento reiniciaremos o squid.
# squid -z
# invoke-rc.d squid start

Proxy Squid Parte 1 - 13


Dica: Toda vez que voc mudar as ACL's voc deve executar os comandos:
# squid -k parse
# squid -k reconfigure

Procure uma linha semelhante a esta:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM


YOUR CLIENTS

Agora, depois desta linha, crie uma acl com a rede de origem, uma acl para
domnios .com e uma acl para o domnio globo.com:

acl RedeDexter src 192.168.200.0/24


acl Internacional dstdomain .com
acl Globo dstdomain .globo.com

Procure uma string chamada http_access deny all e coloque o seguinte


contedo, antes desta regra:

http_access allow RedeDexter Globo


http_access deny RedeDexter International
http_access allow RedeDexter
http_access deny all

Proxy Squid Parte 1 - 14


A varivel http_access deny all garante que s sero aceitos acessos cujo
contedo seja equivalente uma das ACLS acima.

# /etc/init.d/squid restart

1.5. Configurando um cliente manualmente

Proxy Squid Parte 1 - 15

Proxy Squid Parte 1 - 16

Proxy Squid Parte 1 - 17

1.5.1. Testando os filtros

Tente acessar agora os seguintes endereos:

http://www.google.com
http://www.google.com.br
http://www.globo.com

Proxy Squid Parte 1 - 18

Proxy Squid Parte 1 - 19

Proxy Squid Parte 1 - 20

1.6. Criando Blacklists e Whitelists


O conceito de Blacklist e Whitelist muito simples:
Blacklist - Uma lista de palavras que eu quero negar.
Whitelist - Uma lista de domnios que eu quero liberar, mas que casam com a
blacklist.
Para exemplificar o uso de blacklists e whitelists, vamos criar duas ACL's, uma
negando qualquer url que contenha a palavra Linux, e outra liberando os sites
www.linux.com e www.4linux.com.br.

Proxy Squid Parte 1 - 21


# vim /etc/squid/squid.conf
acl RedeDexter src 192.168.200.0/24
acl Internacional dstdomain .com
acl Globo dstdomain .globo.com
acl blacklist url_regex linux
acl whitelist dstdomain www.linux.com www.4linux.com.br
http_access allow localhost
http_access allow RedeDexter whitelist
http_access deny RedeDexter blacklist
http_access allow RedeDexter Globo
http_access deny RedeDexter Internacional
http_access allow RedeDexter
http_access deny all

# /etc/init.d/squid restart

1.6.1. Testando os filtros

Tente acessar agora os seguintes endereos:

http://www.4linux.com.br
http://www.linux.com
http://www.br-linux.org
http://www.vivaolinux.com.br

Proxy Squid Parte 1 - 22

Proxy Squid Parte 1 - 23

Proxy Squid Parte 1 - 24

Proxy Squid Parte 1 - 25

Proxy Squid Parte 1 - 26

1.7. Proxy com autenticao


Autenticao NCSA
O "Squid" possui um mecanismo de autenticao que pode trabalhar de
diversas maneiras, e uma delas, a NCSA, utiliza o mesmo mecanismo de autenticao
do servidor Web Apache.
Vamos configurar esse modelo de autenticao e criar uma ACL que exija
autenticao tambm.
Vamos configurar a autenticao do Squid, adicionado o contedo abaixo no
incio do arquivo /etc/squid/squid.conf:

# vim /etc/squid/squid.conf

Descomente a linha abaixo:


# auth_param basic program /uncomment and complete this line\

E a deixe assim:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd

A tendncia usar um valor alto para dificultar o uso de programas de fora


bruta que tentam por meio de ataques com dicionrios descobrir a senha do usurio:
auth_param basic children 5

Proxy Squid Parte 1 - 27


O tempo de expirao da senha tambm pode ser alterado, o padro uma
hora:
authenticate_ttl 1 hour

Definindo um ACL para ativar o recurso de autenticao:


acl password proxy_auth REQUIRED

Devemos dar permisso a essa ACL antes de qualquer outra:


http_access deny !password

Cadastre um usurio para testar a autenticao.

Esse utilitrio faz parte do pacote apache2-utils, caso no esteja instalado,


instale-o:
# htpasswd -c /etc/squid/passwd mandarkglory

Obs.: Para cadastrar um segundo usurio retirar a flag -c.

Aps toda a configurao, podemos reiniciar o servio do Squid:


# /etc/init.d/squid restart

Proxy Squid Parte 1 - 28

Na prxima aula iremos ver como fazer autenticao usando a base de


dados do OpenLDAP!

Você também pode gostar