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 S M T W H F A

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