Apostila Linux Proxy SQUID Vs2010

25
Elaborado por: 2° Ten Sérgio Santos 3° CENTRO DE TELEMÁTICA DE ÁREA Proxy baseado em Squid 2010 ENSINO A DISTÂNCIA

Transcript of Apostila Linux Proxy SQUID Vs2010

Page 1: Apostila Linux Proxy SQUID Vs2010

Elaborado por:2° Ten Sérgio Santos

3° CENTRO DE TELEMÁTICA DE ÁREA

Proxy baseado em Squid2010

ENSINO A DISTÂNCIA

Page 2: Apostila Linux Proxy SQUID Vs2010

2

Page 3: Apostila Linux Proxy SQUID Vs2010

APRESENTAÇÃOO presente material foi elaborado pela Seção de Redes do 3º C T A, com a

finalidade de auxiliar na instrução de Proxy baseado em Squid.

3

Page 4: Apostila Linux Proxy SQUID Vs2010

OBJETIVODescrever a instalação, configuração e utilização de um servidor proxy baseado em

squid.

4

Page 5: Apostila Linux Proxy SQUID Vs2010

APRESENTAÇÃO ......................................................................................................... 4 OBJETIVO ..................................................................................................................... 5 INTRODUÇÃO .............................................................................................................. 8

Proxy Squid ............................................................................................................................. 8 Proxy ....................................................................................................................................... 8

cache: ................................................................................................................................. 8 Autenticação: ..................................................................................................................... 9 Listas de controles de acesso: ............................................................................................ 9 Proxy transparente: ............................................................................................................ 9

Squid ....................................................................................................................................... 9 INSTALAÇÃO .............................................................................................................. 10 CONFIGURAÇÃO ....................................................................................................... 10

Algumas opções .................................................................................................................... 11 http_port ...................................................................................................................... 11 cache_mem ................................................................................................................. 11 cache_dir ..................................................................................................................... 11 cache_acess_log .......................................................................................................... 11 cache_log .................................................................................................................... 12 cache_store_log ........................................................................................................... 12 pid_filename ............................................................................................................... 12 cache_effective_user proxy ........................................................................................ 12 cache_effective_group proxy ...................................................................................... 12

TAG: ACLs .................................................................................................................. 12 src ................................................................................................................................ 13 dst ................................................................................................................................ 13 srcdomain .................................................................................................................... 13 dstdomain .................................................................................................................... 13 srcdom_regex .............................................................................................................. 13 dstdom_regex .............................................................................................................. 13 time ............................................................................................................................. 14 url_regex ..................................................................................................................... 14 urlpath_regex .............................................................................................................. 14 port .............................................................................................................................. 14 proto ............................................................................................................................ 14 method ......................................................................................................................... 14 browser ........................................................................................................................ 14 ident ............................................................................................................................. 14 ident_regex .................................................................................................................. 15 src_as ........................................................................................................................... 15 dst_as ........................................................................................................................... 15 proxy_auth .................................................................................................................. 15 http_access .................................................................................................................. 15 visible_hostname ......................................................................................................... 15 error directory ............................................................................................................. 15

Restringindo o uso do Proxy ................................................................................................. 16 Negando acesso a determinados sites ................................................................................... 16 Comparando termos em uma URL ....................................................................................... 16 Configurando para Autenticação .......................................................................................... 17

Observação: ................................................................................................................ 17 Restringindo o horário de acesso .......................................................................................... 18

5

Page 6: Apostila Linux Proxy SQUID Vs2010

Nota: ........................................................................................................................... 18 PROXY TRANSPARENTE .......................................................................................... 19

Vantagens do proxy transparente .......................................................................................... 19 Desvantagens do proxy transparente ..................................................................................... 20 IP masquerade ....................................................................................................................... 20 Configurando o proxy transparente no kernel 2.4 ................................................................. 21 Prática .................................................................................................................................... 22

LOGS DO SQUID ........................................................................................................ 24 Sarg ....................................................................................................................................... 24

CONCLUSÃO .............................................................................................................. 25 REFERÊNCIA ............................................................................................................. 26

6

Page 7: Apostila Linux Proxy SQUID Vs2010

INTRODUÇÃO

Proxy Squid

Squid é um animal cefalópode (como uma lula, polvo, etc) de dez braços, encontrado nas costas marítimas americanas. Neste capítulo iremos conhecer um pouco sobre proxy e o mais utilizado pelo Linux, o squid.

Proxy

O termo “servidor proxy “ou “serviço de proxy”, vem de uma palavra em inglês que significa procuração. Em termos técnicos, servidor proxy é um software que tem um “procuração” de um ou mais hosts para buscar na internet uma informação solicitada.

Portanto, sempre que há uma requisição de serviços HTTP ou FTP, o servidor proxy captura os dados que o destinatário disponibiliza ao cliente (usuário) e os guarda em uma área em disco. Na próxima vez que este site for acessado, o navegador primeiro fará a procura no servidor proxy. Se os dados forem encontrados neste servidor, a transferência de dados se dará entre ele e o cliente (navegador). Se o servidor proxy não dispuser dos dados requisitados, o acesso será feito diretamente ao site de destino.

O proxy surgiu da necessidade de conectar uma rede local à Internet através de um computador da rede que compartilha sua conexão com as demais máquinas da rede. Em outras palavras, se considerarmos que a rede local é uma rede “interna” e a Internet é uma rede “externa”, podemos dizer que o proxy é que permite outras máquinas terem acesso externo.

Geralmente, máquinas da rede interna não possuem endereços válidos na Internet e, portanto, não têm uma conexão direta com a Internet. Assim, toda solicitação de conexão de uma máquina da rede local para um host da Internet é direcionada ao proxy, este, por sua vez, realiza o contato com o host desejado, repassando a resposta à solicitação para a máquina da rede local. Por este motivo, é que é utilizado o termo proxy para este tipo de serviço, que é traduzido para procurador ou intermediário.

O compartilhamento de Internet apresentado se refere ao serviço básico de um proxy. Mas um bom proxy deve ainda prover várias outras funcionalidades complementares tais como:

cache: Permite armazenar no próprio proxy as páginas visitadas com mais frequência, ou seja, quando um usuário solicita um site na Internet, o proxy armazena o seu conteúdo em seu cache, juntamente com a sua data. Caso o usuário, depois de

7

Page 8: Apostila Linux Proxy SQUID Vs2010

certo tempo, solicite-a novamente, o proxy obtém a data da página remota e caso não seja mais atual que a página que está em cache, este fornece para o cliente a página em cache, sem a necessidade de baixar novamente a página solicitada. Esta funcionalidade aumenta bastante o desempenho do acesso à páginas, uma vez que o acesso às páginas em cache são muito mais rápidas que as páginas remotas.

Autenticação: Permite autenticar clientes através de login, baseados em usuário e senha.

Listas de controles de acesso: Também conhecidas como acls, permite que administrador restrinja o acesso a determinados sites baseados em critérios estipulados em listas de controles. Os critérios podem ser expressos em regras baseadas no login, palavras-chave na URL, palavras-chave no conteúdo do site, horário de acesso, etc.

Proxy transparente: Com o proxy transparente não é preciso configurar o navegador, facilitando a administração da rede. Isto é realizado através de configurações no roteador padrão da rede local, de forma que toda solicitação de tráfego externo é direcionada para o proxy. Assim, o proxy funciona de forma transparente para o usuário, sem necessitar configurar explicitamente o seu uso.

Squid

Foi originado de um projeto denominado Harvest entre o governo americano e a Universidade de Colorado. Atualmente é o Proxy mais popular e mais usado como controle de conteúdo, na qual possui vários programadores como desenvolvedores do projeto pelo mundo.

É geralmente disponibilizado por padrão pela maioria dos sistemas operacionais Linux, fornecendo todas as funcionalidades de um Proxy comum.

O squid busca por comunicação TCP e ICP (Internet Cache Protocol) em portas específicas. O TCP é usado para comunicação entre webservers clientes e o ICP para conversa entre os servidores de cachê. Para cada servidor ou (cliente), a configuração do squid precisa fornecer uma única porta sobre a qual o mesmo irá enviar requisições (TCP ou ICP) e ouvir as respostas.

O squid trabalha apenas com FTP, Gopher, e HTTP. Portanto, não é possível através do squid, configurar acesso a e-mails, ICQ, IRC, etc, é simples de entender, pois não faz sentido criar caches de mensagens pessoais ou mesmo corporativas, tal qual, mensagens instantâneas. O squid é um proxy de alto desempenho para clientes web, resumindo, ele é um servidor proxy usado para acelerar a navegação

8

Page 9: Apostila Linux Proxy SQUID Vs2010

dos usuários de sua rede pela web. Para esses outros protocolos, devem ser usados outros meios como o IP masquerade (NAT - Network Address Translator).

Podemos dizer que existem dois grandes motivos pelo qual se deve utilizar um PROXY/CACHE: Controle de Acesso e Desempenho. Visando aproveitar o máximo da banda de acesso à internet, o uso do PROXY/CACHE se faz necessário, diminuindo o tráfego na rede internet e intranet. Exemplo:

Em uma rede simples, de seis micros, em que todos acessem a internet, podemos instalar Linux em um micro e direcionar o acesso dos demais ao primeiro;ou de uma forma mais profissional, o acesso dos micros passe por um Firewall, fazendo com que cada micro, ao fazer uma requisição de acesso à internet, procure o Gateway da rede (Firewall), que direciona as requisições para o squid;ou então, de uma melhor forma, colocar o serviço squid em um micro separado, oferecendo um melhor desempenho e controle.

INSTALAÇÃO

Existem vários softwares proxy de características diferentes: alguns mais especializados em somente alguns protocolos; outros com mais funcionalidades de filtragem de conteúdo e firewall; outros são mais especializados para otimização de cache (em RAM ou disco rígido).

O squid está continuamente melhorando seu desempenho, além de adicionar novas características e ter uma excelente estabilidade em condições externas. Você pode instalar o squid de duas formas: instalação via pacotes ou instalação via código fonte.

O Debian sempre prezou pela facilidade de instalação e atualização de pacotes com seu sistema apt, e agora o aptitude, que facilita e muito a vida dos administradores. Para instalar o squid, digite o comando:

aptitude install squid apache2

Para instalar o squid no debian, instale o squid e o apache2, o apache nesse caso, será apenas para termos o software para gerar as senhas.

CONFIGURAÇÃO

O servidor Squid fornece serviço proxy para os principais protocolos utilizados por navegadores, como: FTP, HTTP e HTTPS. Portanto nossas configurações estarão relacionadas a estes dois protocolos.

Depois de instalado, o squid cria o diretório /etc/squid onde armazena seus arquivos gerais. O squid possui apenas um arquivo de configuração, squid.conf.

9

Page 10: Apostila Linux Proxy SQUID Vs2010

Este arquivo é bastante auto-explicativo, por isso trataremos das opções mais importantes. O arquivo é dividido em seções, mas o fato de não usarmos as seções nada tem a ver com a seqüência de uso das opções. Segue abaixo as principais opções de configurações:

Segue alguns caminhos importantes para a configuração:

/var/log/squid/cache.log/var/log/squid/store.log/var/log/squid/access.log/var/run/squid.pid/var/spool/squid

Lembrete: Após a digitacao, mudar (chown) o dono e grupo da pasta /var/log/squid/ para o usuario proxy ou squid, dependendo qual foi criado da pasta.

Algumas opções

Algumas opções, sempre devem aparecer e estar configuradas para desde o início da configuração funcionar corretamente. Abaixo as opções mais comuns:

http_port

http_port 3128

A porta na qual o squid irá atender às requisições feitas à ele, valor padrão = 3128.

cache_mem

cache_mem 8 MB

O padrão utilize 8 MB de memória, mas este valor pode ser aumentado confirme a quantidade e uso no servidor existente.

cache_dir

cache_dir ufs /var/spool/squid 100 16 256

Diretório onde squid irá armazenar os objetos do cache. Onde, como no exemplo, teremos: o tamanho em 100MB, tendo 16 diretórios com 256 diretórios em cada um deles.

cache_acess_log

cache_access_log /var/log/squid/access.log

Arquivo no qual sera gerado um registro dos acessos (De quem, quando e onde) ao servidor.

10

Page 11: Apostila Linux Proxy SQUID Vs2010

cache_log

cache_log /var/log/squid/cache.log

Arquivo onde são guardadas informações gerais sobre o comportamento da cache.

cache_store_log

cache_store_log /var/log/squid/store.log

Arquivo que contém detalhe sobre processo de armazenamento em disco, podendo fornecer informações tais como quais arquivos foram removidos do cache, quais foram mantidos e por quanto tempo.

pid_filename

pid_filename /var/run/squid.pid

Especifica em qual arquivo sera arquivado o PID dos processos. Para desabilitar coloque “none”. O padrão é /usr/local/squid/logs/squid.pid

cache_effective_user proxy

cache_effective_user proxy

Usuário dono dos processos.

cache_effective_group proxy

cache_effective_group proxy

Grupo dono dos processos.

TAG: ACLs

Sem duvida é a parte mais importante do squid, com o uso de acl devidamente planejada é possível ter controle não só sobre os usuários, mas também melhora o desempenho e facilita a administração. O conceito de ACL (Access Control List) é muito útil, ela permite especificar endereços de origem e destino, bem como domínios, horários, usuários portas ou métodos, e podendo tomar decisões com base nelas, permitir ou negar acesso.

O uso das listas de controle de acesso é a parte mais importante da configuração de um servidor proxy Squid, pois se bem configuradas podem trazer um nível de segurança muito bom para a rede, entretanto se mau configuradas podem ter resultado oposto, já que além da falsa sensação de segurança não será aproveitada a grande capacidade e funcionalidade do squid. Uma dica para se fazer boas ACL's é testar, testar, testar, testar e testar, e depois quando achar que está

11

Page 12: Apostila Linux Proxy SQUID Vs2010

bom continue testando e monitorando seus logs para identificar algum problema que possa ocorrer.

A primeira coisa que devemos saber é que o squid interpreta as ACL's de cima para baixo, portanto é muito importante que seja observada esta regra no momento em que estão sendo construídas as regras de acesso. As ACL's são case-sensitive, isto é, site_porno é diferente de Site_porno, portanto cuidado com isso. Caso seja usada o opção -i elas deixarão de ser case-sensitive.

Outra regra muito importante é que caso uma das regras coincida, as demais não serão mais verificadas. Isso independe da quantidade de regras que ainda faltam para atingir o fim da lista.

SINTAXE: acl NOME (identifica lista de acesso) TIPO (indica qual é o objeto referenciado) OBJ1 (src, dst, time, etc) OBJ2...

src

É a abreviação de source que é origem, define-se ip de origem bem como redes. Ex.: 10.1.0.0/255.255.0.0.

dst

É semelhante ao src porem é o destino (Destination)

srcdomain

Especifica o domínio de origem. Ex.: google.com

dstdomain

É semelhante ao srcdomain porém é o destino.

srcdom_regex

Avalia o domínio com expressões regulares. Ex.: Google.Ele irá utilizar para qualquer domínio que tenha a palavra google no meio, www.google.com.br, www.google.com ....

dstdom_regex

O mesmo que o srcdom_regex porém no destino.

12

Page 13: Apostila Linux Proxy SQUID Vs2010

time

Especifica uma expressão descrevendo “tempo”. Exemplo: S-Sunday-Domingo, M-Monday-Segunda-feira, etc.Horas sendo o início seguido do fim: hora1: minuto1- hora2: minuto2

url_regex

Este tipo percorre toda a url à procura da expressão que foi especificada. Ex: Acl proibido url_regex –i “/etc/squid/proibido.txt”Acl permitido url_regex –i “/etc/squid/permitido.txt”

urlpath_regex

É semelhante a o url_regex, sendo que ele procura a expressão apos o domínio e independente do protocolo. Se especificado com –i ele deixa de ser case sensitive. Ex.: www.google.com.br/linux/squid.html[/i]Ele só procura a partir do /linux/squid.html

port

Realiza o controle de porta de destino do servidor, que também pode ser ranges (2000-2100)

proto

Especifica o Protocolo (http, FTP, etc.).

method

Especifica o método a ser usado (GET, POST, etc.).

browser

Expressão regular à ser procurada no cabeçalho http.

ident

Controle baseado no nome do usuário, especifica um ou mais usuários. O IDENT é utilizado para identificar o que os usuários estão fazendo.

13

Page 14: Apostila Linux Proxy SQUID Vs2010

ident_regex

O mesmo que o ident porem utilizando expressão regulares.

src_as

Origem de um sistema autônimo

dst_as

Destino de um sistema autônomo

proxy_auth

Tipo usado para implementar autenticação de usuários no proxy. A autenticação é feita com uso de softwares externos. Podem ser passados os nomes dos usuários ou usada a opção REQUIRED para que seja autenticado qualquer usuário válido

http_access

Para definir as ACLs, devemos definir as restrições. Isso é feito através do http_access. O http_access permite ou nega o acesso, o uso de ‘!’ antes do nome da acl esta negando a mesma.http_access allow permitido!proibidohttp_access deny all

visible_hostname

Nesta linha, vai o primeiro nome do servidor e o seu domínio. Esta informação é a que aparece nas telas de erro.visible_hostname labproxy

error directory

Converte as mensagens pelo squid para o Portuguêserror_directory /usr/share/squid/errors/Portuguese

14

Page 15: Apostila Linux Proxy SQUID Vs2010

Restringindo o uso do Proxy

Neste exemplo usaremos a acl apenas para liberarmos o uso do proxy para a rede interna. Para isso encontre a linha:

http_access allow all

Esta linha já foi apresentada anteriormente e deve ser substituída por:

acl minharede src 10.1.0.0/255.255.0.0http_access allow minharede

O uso de acl é bastante intuitivo. Seguindo o exemplo, minharede é o nome da acl, src define uma acl do tipo origem, neste caso a origem é a rede 10.1.0.0/255.255.0.0. Logo abaixo a linha permite o uso do proxy através da entrada allow que está direcionada a rede minharede definida pela acl. Ou seja, toda solicitação que tiver como origem a rede 10.1.0.0/255.255.0.0 terá permissão, enquanto outras solicitações serão negadas.

Negando acesso a determinados sites

Neste caso a intenção é negar determinadas URLs. Esta funcionalidade tem como objetivo evitar que usuários acessem determinadas páginas indevidas. Veja o exemplo:

acl listanegada url_regex "/etc/squid/listanegada.txt"http_access deny listanegadaacl minharede src 10.1.0.0/255.255.0.0http_access allow minharede

Neste caso surge um novo tipo de acl, a url_regex, este tipo define a verificação das URLs digitadas no Navegador. Para que esta entrada funcione, você deve criar o arquivo /etc/squid/listanegada.txt, este arquivo deve conter as URLs (nomes de sites) não permitidas porque na linha que se segue do exemplo a entrada é http_access deny listanegada. No arquivo listanegada.txt você deve definir um site por linha. Observe que você pode definir várias acls.

Comparando termos em uma URL

Esta configuração permite negar todos os sites que tenha na URL uma palavra que case padrão com a palavra definida por uma acl. Vejamos este exemplo:

acl palavra url_regex -i sexhttp_access deny palavraacl listanegada url_regex "/etc/squid/listanegada.txt"http_access deny listanegada

15

Page 16: Apostila Linux Proxy SQUID Vs2010

acl minharede src 10.1.0.0/255.255.0.0http_access allow minharede

É importante saber que a leitura deste arquivo é feita de cima para baixo, então você deve prestar a atenção na ordem com que você define estas acls. Sempre é interessante negar acesso para depois liberar. Neste exemplo encontramos a opção -i para o tipo url_regex, esta opção não faz a diferenciação de maiúscula e minúscula verificando a ocorrência de uma palavra similar a sex na URL. Assim, qualquer site que em sua URL contenha a palavra sex será negado. São exemplos de URLs que serão negados: www.sexteste.com.br, www.sexm.com.br, etc.

Configurando para Autenticação

Esta funcionalidade permite você criar contas de usuários para acesso a Internet. Assim cada usuário além de ter uma conta de usuário, deverá ter outra conta para acesso à Internet. A solicitação de usuário e senha será feito quando o usuário abrir o navegador [browser] e digitar o nome da página a ser exibida, se esta página for externa, o proxy fará a requisição de autenticação. Assim você limita apenas o uso do proxy para uso externo e não do navegador, que poderá utilizar internamente da rede sem problemas.

Este serviço é feito através do authenthicate_program, um programa autenticador. O pacote do squid inclui um programa autenticador chamado ncsa_auth, o qual utiliza arquivos de senhas no formato htpasswd do apache.

Observação: O usuário e senha não precisam ser necessariamente os mesmos do usuário da rede.

O executável do ncsa_auth, quase sempre está no diretório /usr/lib/squid/. Caso queira, pode copiá-lo para um diretório de arquivos binários (/usr/Bin, por exemplo), conforme exemplo:

cp /usr/lib/squid/ncsa_auth /usr/bin

Uma típica linha de configuração seria:

auth_param basic program /usr/lib/squid/ncsa_auth /usr/lib/squid/senhas_squid

Sendo a linha acima, referindo-se ao programa que irá autenticar assim como o arquivo que guardará as senhas dos usuários. Caso o arquivo senhas_squid ainda não tiver sido criado, utilize o comando htpasswd e use a opção –c. Ex.

htpasswd –c /usr/lib/squid/senhas_squid usuario1

16

Page 17: Apostila Linux Proxy SQUID Vs2010

Já no próximo, não precisará mais utilizar a opção –c.

auth_param basic children 10

A linha mostrada serve para definir o número de autenticações simultâneas. Como padrão, o programa autenticador não é utilizado. Se você utilizar o ncsa_auth (ou algum outro autenticador), deve existir uma lista de acesso do tipo Proxy_auth para permitir ou não o acesso. Ex:

acl minharede proxy_auth REQUIREDhttp_access allow minharedehttp_access deny all

Depois de feito isto, o próximo passo é adicionar uma acl para esta nova funcionalidade. Logo, na seção acl do arquivo squid.conf você deve adicionar:

acl listanegada url_regex "/etc/squid/listanegada.txt"http_access deny listanegadaacl password proxy_auth REQUIREDhttp_access allow passwordacl minharede src 10.1.0.0/255.255.0.0http_access allow minharede

Esta lista de acesso tem a função de liberar o acesso ao proxy somente através da autenticação do usuário. Lembrando que você pode usar esta regra de acl junto com as demais apresentadas acima, o que determinará isto será o grau com que você vai querer liberar ou negar o acesso aos clientes do proxy.

O próximo passo é reinicializar o serviço squid:

/etc/rc.d/init.d/squid3 restart

Restringindo o horário de acesso

Através do Squid você pode definir faixas de horário em que os usuários poderão acessar a Internet. Esta funcionalidade também é implementada através de acls, vejamos o exemplo:

acl horariodeacesso time MTWTF 08:00-18:00http_access allow horariodeacesso

Esta acl define que é permitido o acesso ao servidor Squid apenas no intervalo 08:00(oito horas) às 18:00h(dezoito horas). Qualquer tentativa de acesso que não esteja nesta faixa de horário será negada.

Nota: Pode se ter dificuldades de implementar este tipo de restrição quando se está trabalhando conjuntamente com a autenticação de usuário.

17

Page 18: Apostila Linux Proxy SQUID Vs2010

Vamos agora criar o cache inicial:

# squid -z

Para depurar erros do squid

# /usr/sbin/squid -d 10

Mais uma dica... Para limpar o arquivo original, devemos usar o comando:

# cp squid.conf squid.conf.back # grep -v ^# squid.conf.back|grep -v ^$ > squid.conf

Pronto, nosso proxy está criado! Para iniciá-lo, execute os seguintes passos:

# cd /etc/init.d

# ./squid start

PROXY TRANSPARENTE

Nele é simplesmente feito um encaminhamento de pacotes vindos da Internet para uma máquina que esta na rede interna. Com o Proxy transparente não é preciso configurar o navegador como, por exemplo, o Internet Explorer ou o Firefox, facilitando a administração da rede. Isto é realizado através de configurações no roteador ou no firewall padrão da rede local, de forma que toda solicitação de tráfego externo é direcionada para o Proxy. Assim, o Proxy funciona de forma transparente para o usuário, sem necessidade de configuração.

httpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header on

Vantagens do proxy transparente

É mais simples de ser configurado quando já está habilitado no Kernel, quando não está habilitado no kernel o mesmo deve ser reinstalado com o suporte ativo para que seja usado. Programas como ICQ funcionam plenamente com ele e não precisa que as máquinas clientes sejam configuradas.

Também é possível através do Proxy transparente fazer com que todo o acesso do cliente à Internet fique submetido ao Proxy, ou seja, o cliente é forçado a utilizar o Proxy. Não é necessária a configuração do navegador do cliente, isto sem dúvida é bem vindo em uma grande rede; Como já dito anteriormente, o uso do Proxy transparente força o cliente a passar pelo Proxy.

18

Page 19: Apostila Linux Proxy SQUID Vs2010

Com a configuração do Proxy transparente, todos os serviços ficam disponíveis aos seus clientes, lembrando que o Squid só trabalha com os protocolos HTTP e FTP. Configurado o Proxy transparente, você pode fazer uso de outros serviços como: SSH, Telnet, E-mail, etc;

Outro recurso do Proxy transparente é que ele funciona como uma maneira de bloquear acesso evitando que aqueles usuários mais espertos retirem as definições do Proxy de dentro do navegador, podendo assim visitar sites proibidos;

Com o Proxy transparente todas as requisições feitas á porta 80 são automática redirecionadas para a porta do Squid, e assim fica virtualmente impossível de sair para a Internet.

Desvantagens do proxy transparente

Possui menos recursos que um Proxy Controlado. Precisa de configurações no Kernel e, em alguns casos, é necessária a recompilação do Kernel do sistema. Não possui nenhuma segurança de acesso e não possui um sistema de (caching), o que o torna mais lento em uma rede.

IP masquerade

O IP masquerade é conhecido como NAT - Network Address Translator -assim como o proxy, o IP masquerade tem a finalidade de compartilhar Internet. O IP masquerade não é um proxy pois trabalha a nível de pacote TCP, enquanto o proxy trabalha a nível de conexão TCP. Entretanto ambos têm a finalidade de compartilhar uma conexão com a Internet.

Sabemos que em uma rede interna os endereços IP não são válidos na Internet, e ainda sabemos que todo pacote no protocolo TCP/IP enviado deve ser é retornado até o hospedeiro de origem, no sentido de estabelecer uma comunicação. Logo nos questionamos: Como uma máquina na Internet retornaria um pacote para uma máquina em uma rede interna que não possui endereço IP válido? Entre outras funcionalidades, esta é uma função do IP masquerade. Quando o pacote é direcionado à Internet o mesmo passará pelo o gateway que estará provendo o NAT, então o pacote, na verdade, atinge o hospedeiro de destino com o número IP do gateway que, por sua vez, possui endereço válido na Internet. Logo esta máquina retornará o pacote para o gateway da rede local que, por sua vez, encaminha-o para a devida máquina que está na rede interna.

O IP masquerade suporta perfeitamente serviços como WWW e email, o que explica o seu grande uso, pois estes serviços são os mais utilizados. Entretanto, o IP masquerade não tem nenhuma funcionalidade de auditoria, autenticação e segurança de acesso, o NAT pode ser utilizado sem o proxy, simplesmente permitindo acesso total à Internet.

19

Page 20: Apostila Linux Proxy SQUID Vs2010

Configurando o proxy transparente no kernel 2.4

Seu proxy já está funcionando. Vamos agora criar as regras de firewall necessárias para que o seu squid funcione de forma transparente. Crie um arquivo em /etc/init.d:

# cd /etc/init.d# touch rc.firewall

Adicione o seguinte conteúdo:

#! /bin/sh

No caso do iptables, antes definir suas regras é necessário carregar seu módulo correspondente.

#modprobe ip_tables

iptables -Fiptables -t nat -Fiptables -t mangle -Frede_interna=”10.1.0.0/16”

É necessário também ativar ip_forward.

#echo 1 > /proc/sys/net/ipv4/ip_forward#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Agora é hora de adicionar a regra utilizando o iptables.

# iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

É possível verificar quais regras do iptables foram definidas, para isto execute:

#iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destination Chain POSTROUTING (policy ACCEPT)target prot opt source destinationMASQUERADE all -- anywhere anywhere Chain OUTPUT (policy ACCEPT)target prot opt source destination

O iptables, também chamado de netfilter, pode ser baixado do endereço http://netfilter.samba.org , e compilado e instalado na máquina local.

Agora devemos fazer o IP masquerade através do iptables. O comando será:

# !/bin/bash# iptables -t nat -A POSTROUTING -o ppp0 –j MASQUERADE

20

Page 21: Apostila Linux Proxy SQUID Vs2010

# echo 1 > /proc/sys/net/ipv4/ip_forward# echo “Internet up”

Depois disto altere o arquivo squid.conf, adicionando da seguinte forma:

httpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header on

Para validarmos as configurações, podemos usar o comando

/etc/init.d/squid restart

Mas com esse comando há uma demora, então podemos utilizar o comando

squid -k reconfigure

Que lê o arquivo e valida às opções adicionadas, então execute o comando.

Prática

Neste exemplo toda rede 192.168.0.0 terá acesso à internet.

http_port 3128cache_mem 8 MBmaximum_object_size 4096 MBcache_dir ufs /var/spool/squid 100 16 256cache_access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logemulate_httpd_log onvisible_hostname ServerProxyLab

acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 563acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl CONNECT method CONNECT

acl network src 192.168.0.0/24

http_access allow manager localhosthttp_access deny manager http_access deny !Safe_portshttp_access deny CONNECT !SSL_ports

http_access allow networkhttp_access deny all

21

Page 22: Apostila Linux Proxy SQUID Vs2010

Neste Exemplo, várias opções são utilizadas, mensagens de erro em português, Proxy transparente, controle por horário, controle por palavras bloqueadas e liberadas, liberando o acesso às palavras bloqueadas no “fim de noite”. Exemplo:

http_port 3128cache_mem 8 MBmaximum_object_size 4096 MBcache_dir ufs /var/spool/squid 100 16 256cache_access_log /var/log/squid/access.logcache_log /var/log/squid/cache.logcache_store_log /var/log/squid/store.logemulate_httpd_log onerror directory /usr/share/squid/errors/Portuguesevisible_hostname ServerProxyLab

auth_param basic program /usr/lib/squid/ncsa_auth /usr/lib/squid/squid_passwdauth_param basic children 10auth_param realm “Acesso Restrito. Digite sua Senha!”

acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 563acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 563 # https, snewsacl Safe_ports port 210 # waisacl Safe_ports port 1025 65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECT

acl network src 192.168.0.0/24acl geral proxy_auth REQUIREDacl squid_passwd proxy_auth “/usr/lib/squid/squid_passwd”acl horario time SMTWHFA 08:00 18:59acl fimdenoite time SMTWHFA 19:00 23:59acl bloqueado url_regex –I “/etc/squid/bloqueado.txt”acl liberado url_regex –I “/etc/squid/bloqueado.txt”acl proibir_ip src 192.168.0.66 192.168.0.50

http_access allow manager localhosthttp_access deny manager http_access deny !Safe_portshttp_access deny CONNECT!SSL_ports

http_access allow squid_passwdhttp_access allow networkhttp_access deny all

httpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header on

22

Page 23: Apostila Linux Proxy SQUID Vs2010

#! /bin/sh# Faz o redirecionamento para o squid# iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

#restante do seu arquivo# iptables -t nat -A POSTROUTING -o ppp0 –j MASQUERADE# echo 1 > /proc/sys/net/ipv4/ip_forward# echo “Internet up”

# cds# ./squid start # ./squid status # --[stop] para parar o serviço

LOGS DO SQUID

Não poderíamos falar do Squid sem que fossem analisadas algumas das muitas alternativas em software para análise dos logs e geração de relatórios com informações mais “legíveis” e amigáveis das atividades do servidor.

Existem várias ferramentas para análise e geração de relatórios dos logs do Squid, dentre elas podemos destacar o Calamaris, SARG e Squid-graph, dentre muitas outras. Cada uma delas apresenta características e funcionalidades diferentes, entretanto o objetivo final é fornecer uma maneira mais amigável de se analisar as preciosas e detalhadas informações que o Squid grava em seus logs.

Sarg

O SARG é um dos mais usados e eficientes softwares para geração de relatórios dos logs do Squid. Ele foi escrito por um brasileiro e têm recursos muito interessantes, como listagem de sites mais visitados, sites que o acesso foi negado, falhas na autenticação, caso este recurso esteja sendo utilizado, listas de sites acessados por usuários e horários em que foram acessados, etc. Além do mais, cada um destes relatórios estão recheados de informações como datas e horários dos acessos, tempo de gasto na visita ao site, quantidades de dados trafegados e outras mais.

Outra vantagem deste software é que ele está disponível em várias línguas, inclusive o português é claro, além do mais tem um arquivo de configuração relativamente simples e bem comentado, além de está disponível em pacotes da maioria das distribuições. No nosso caso utilizamos o comando:

# aptitude install sarg

Mas caso você opte por instalar usando os fontes não haverá maiores problemas, siga apenas os passos tradicionalmente usados para instalação. Ou então baixar a versão mais recente do site http://web.onda.com.br/orso/ e executar os comandos abaixo na ordem apresentada, o SARG estará pronto para uso, quer dizer, para ser configurado para uso.

# tar zxvf sarg-1.4.tar.gz

23

Page 24: Apostila Linux Proxy SQUID Vs2010

# cd sarg-1.4/# ./configure# make# make install

Por padrão o arquivo de configuração do sarg fica em /etc/squid/sarg/conf e os relatórios ficam em /var/www/squid-reports. Para acessar o relatório, acesse em um browser de qualquer estação da rede http://IP_DO_SERVIDOR/squid-reports .O Sarg cria seus relatórios depois que um comando é acionado. A execução do SARG fica mais interessante se programada através do cron, isso pode ser implementado com o uso dos scripts que o acompanham (geralmente /usr/sbin/sarg.daily, sarg.weekly e sarg.monthly) e permitem automatizar a geração de relatórios diários, semanais e mensais, mas isso não quer dizer que não possamos extrair relatórios mais personalizados e de acordo com nossas necessidades. Mas caso queira criar um relatório na hora, digite:

# sarg

Alguns parâmetros interessantes que podem ser configurado no /etc/squid/sarg.conf são:

language Portuguese title “Squid User Access Reports”

CONCLUSÃO

A configuração e o uso de servidores proxy é um assunto muito interessante e ao mesmo tempo muito extenso. Há várias maneiras de implementar soluções deste tipo, que vão apresentar um certo grau de complexidade de acordo com o porte, recursos e finalidade do que queremos usar. O objetivo aqui foi apresentar algumas a ferramenta e suas principais particularidades de modo que fosse possível elaborar uma visão do processo de configuração e utilização deste servidor proxy.

Este é um software livre de flexibilidade e muito diferenciado. Muito bom em relação a soluções fechadas.

24

Page 25: Apostila Linux Proxy SQUID Vs2010

REFERÊNCIA

AKIRA, Marcelo. Colaborate with TWiki. Artigo Servidor Proxy. 2008. Disponível em: http://wiki.sintectus.com/bin/view/GrupoLinux/ArtigoServidorProxy Acesso em: 30 ago 08.

WIKIPEDIA, A ENCICLOPÉDIA LIVRE. Proxy. Disponível em: http://pt.wikipedia.org/wiki/Proxy Acesso em: 30 ago 08.

WIKIPEDIA, A ENCICLOPÉDIA LIVRE. Proxy. Disponível em: http://pt.wikipedia.org/wiki/Squid Acesso em: 30 ago 08.

HowtoForge. Disponível em: www.howtoforge.org Acesso em 30Ago 08.

KUHN, Aldefax G.. Instalando Squid 2.6 + patch ZPH no Debian Etch. Disponível em: http://www.vivaolinux.com.br/dica/Instalando-Squid-2.6-+-patch-ZPH-no-Debian-Etch/ Acesso em: 30 ag 08.

LUNARDI, Marco Agisander. Squid: Prático e didático. Rio de Janeiro: Editora Moderna Ltda, 2005.

MOREIRA, Leandro. Instalando e Configurando Servidor Proxy Com Squid. Disponível em: http://under-linux.org/wiki/index.php/Tutoriais/Proxy/Squid-3 Acesso em 30 ago 08.

PINHEIRO, Antonio Claudio Sales. Uso e configuração do Squid - Parte 2. Disponível em: http://www.squid-cache.org.br/index.php?option=com_content&task=view&id=82&Itemid=27 Acesso em: 30 ago 08.

Pruonckk le Punk. Debian for Dummies. Disponível em: http://www.debianfordummies.org/wiki/index.php/DFD_Squid_Howto Acesso em: 30 ago 08.

RAIMOND, Gerson. Viva o Linux. Projeto SQUID. Disponível em: http://www.vivaolinux.com.br/artigo/Projeto-Squid?pagina=5 Acesso em 30 ago 08.

RODRIGUES, Yuri. Redes de computadores para quem sabe de computadores. Disponível em: http://yurirodrigues.wordpress.com/2007/09/28/instalando-e-configurando-squid-transparente-no-debian-etch/ Acesso em 30 ago 08.

SOUSA, Maxuel Barbosa de. Obtendo e Instalando o Gnu/Debian. Rio de Janeiro: Editora Ciência Moderna Ltda, 2006.

WIEL, Felipe Augusto Van de. Disponível em: http://listas.cipsga.org.br/pipermail/debian-br/2004-August/002805.html Acesso em: 30 ago 08.

25