Você está na página 1de 19

Configurando o Squid CONFIGURANDO O SQUID http://www.guiadohardware.

net/tutoriais/090/

1/19

O Squid um servidor proxy. Ele permite compartilhar a conexo entre vrios micros, servindo como um intermedirio entre eles e a Internet. Usar um proxy diferente de simplesmente compartilhar a conexo diretamente, via NAT. Ao compartilhar via NAT os micros da rede acessam a internet diretamente, sem restries. O servidor apenas repassa as requisies recebidas, como um garoto de recados. O proxy como um burocrata que no se limita a repassar as requisies: ele analisa todo o trfego de dados, separando o que pode ou no pode passar e guardando informaes para uso posterior. Compartilhar a conexo via NAT mais simples do que usar um proxy como o Squid sob vrios aspectos. Voc compartilha a conexo no servidor, configura os clientes para o utilizarem como gateway e pronto. Por exemplo, para compartilhar a conexo via NAT no Mandrake voc usaria o "Compartilhar conexo com a Internet" dentro do Painel de Controle e configuraria os clientes para usar o endereo IP do servidor (192.168.0.1 por exemplo) como gateway. No Kurumin voc usaria o cone mgico no Iniciar > Internet > Compartilhar Conexo e Firewall.

Ao usar um proxy, alm da configurao da rede necessrio configurar o navegador e cada outro programa que for acessar a internet em cada cliente para usar o proxy. Esta uma tarefa tediosa e que acaba dando bastante dor de cabea a longo prazo, pois cada vez que um micro novo for colocado na rede ser preciso fazer a configurao novamente.

Configurando o Squid

2/19

A configurao do proxy muda de navegador para navegador. No Firefox por exemplo voc encontra em Editar > Preferncias > Geral > Proxy. No IE a configurao est em Opes da Internet > Opes > Configuraes da Lan > Usar um servidor Proxy.

Alm do navegador, outros programas, podem ser configurados para trabalhar atravs do proxy: Clientes de ICQ e MSN e at programas P2P. As vantagens de usar um proxy so basicamente trs: 1- possvel impor restries de acesso com base no horrio, login, endereo IP da mquina e outras informaes e bloquear pginas com contedo indesejado. 2- O proxy funciona como um cache de pginas e arquivos, armazenando informaes j acessadas. Quando algum acessa uma pgina que j foi carregada, o proxy envia os dados que guardou no cache, sem precisar acessar a mesma pgina repetidamente. Isso acaba economizando bastante banda na conexo com a Internet e tornando o acesso mais rpido sem precisar investir numa conexo mais rpida. Hoje em dia os sites costumam usar pginas dinmicas, onde o contedo muda a cada visita, mas mesmo nestes casos o proxy d uma ajuda, pois embora o html seja diferente a cada visita, e realmente precise ser baixado de novo, muitos componentes da pgina, como ilustraes, banners e animaes em flash podem ser aproveitadas do cache, diminuindo o tempo total de carregamento.

Configurando o Squid

3/19

Dependendo da configurao, o proxy pode apenas acelerar o acesso s pginas, ou servir como um verdadeiro cache de arquivos, armazenando atualizaes do Windows Update, downloads diversos e pacotes instalados atravs do apt-get por exemplo. Ao invs de ter que baixar o Service Pack XYZ do Windows XP ou o OpenOffice nos 10 micros da rede, voc vai precisar baixar apenas no primeiro, pois os outros 9 vo baixar a partir do cache do squid. 3- Uma terceira vantagem de usar um proxy que ele loga todos os acessos. Voc pode visualizar os acessos posteriormente usando o Sarg, assim voc sabe quem acessou quais pginas e em que horrios. Alm de tudo, o Squid dedo duro :-P

Mesmo assim, voc pode estar achando que as vantagens no vo compensar o trabalho de sair configurando micro por micro, programa por programa para usar o proxy e mais fcil simplesmente compartilhar via NAT. Mas, existe a possibilidade de juntar as vantagens das formas de compartilhamento, configurando um proxy transparente como veremos adiante. Ao usar um proxy transparente, voc tem basicamente uma conexo compartilhada via NAT, com a mesma configurao bsica nos clientes. O proxy entra na histria como uma espcie add-on.

Configurando o Squid

4/19

Uma regra de firewall envia as requisies recebidas na porta 80 do servidor para o proxy, que se encarrega de responder aos clientes. Toda a navegao passa a ser feita automaticamente atravs do proxy (incluindo o negcio do cache dos arquivos do Windows update, downloads e do apt-get), sem que voc precise fazer nenhuma configurao adicional nos clientes :-)

A algum tempo atrs, escrevi um script de configurao para o Kurumin, disponvel no painel de configurao de servidores. Este script permite instalar o proxy, estabelescer algumas restries de acesso e ativar o proxy transparente de forma simples:

Neste tutorial vou ensinar como fazer isso e criar regras mais elaboradas de restrio de acesso em qualquer distribuio.

Instalando o Squid

Configurando o Squid

5/19

O Squid composto de um nico pacote, por isso a instalao simples. Se estiver no Mandrake, instale com um: # urpmi squid Se estiver no Debian ou outra distribuio baseada nele, use o apt-get: # apt-get install squid Toda a configurao do Squid feita num nico arquivo, o /etc/squid/squid.conf. Caso voc esteja usando uma verso antiga do Squid, como a includa no Debian Woody por exemplo, o arquivo pode ser o /etc/squid.conf. Apesar da mudana na localizao do arquivo de configurao, as opes descritas aqui devem funcionar sem maiores problemas. O arquivo original, instalado junto com o pacote realmente enorme, contm comentrios e exemplos para quase todas as opes disponveis. Ele pode ser uma leitura interessante se voc j tem uma boa familiaridade com o Squid, mas de inicio melhor comear com um arquivo de configurao mais simples, apenas com as opes mais usadas. Em geral cada distribuio inclui uma ferramenta diferente para a configurao do Proxy, como o cone mgico que inclu no Kurumin. Uma das mais usadas o Webmin. A funo destas ferramentas disponibilizar as opes atravs de uma interface grfica e gerar o arquivo de configurao com base nas opes escolhidas. Em alguns casos estas ferramentas ajudam bastante, mas como elas mudam de distribuio para distribuio, mais produtivo aprender a trabalhar direto no arquivo de configurao, que no to complicado assim. Pra comear renomeie o arquivo padro: # mv /etc/squid/squid.conf /etc/squid/squid.conf.velho e crie um novo arquivo /etc/squid/squid.conf, com apenas as quatro linhas abaixo: -------http_port 3128 visible_hostname kurumin acl all src 0.0.0.0/0.0.0.0 http_access allow all -------Estas linhas so o suficiente para que o Squid "funcione". Como voc percebeu, aquele arquivo de configurao gigante tem mais uma funo informativa, citando e explicando as centenas de opes disponveis. As quatro linhas dizem o seguinte: - http_port 3128: A porta onde o servidor vai ficar disponvel - visible_hostname kurumin: O nome do servidor - acl all src 0.0.0.0/0.0.0.0 e http_access allow all: Estas duas linhas criam uma acl (uma poltica de acesso) chamada "all" (todos) incluindo todos os endereos IP possveis e permite que qualquer um dentro desta lista use o proxy. Ou seja, ela permite que qualquer um use o proxy, sem limitaes.

Configurando o Squid Para testar o Squid, habilite o servidor com o comando: # service squid start Se voc estiver no Debian, use o comando: # /etc/init.d/squid start Se estiver no Slackware, o comando ser: # /etc/rc.d/rc.squid start

6/19

Configure um navegador, no prprio servidor para usar o proxy, atravs do endereo 127.0.0.1 (o localhost), porta 3128 e teste a conexo. Se tudo estiver ok voc conseguir acessar o proxy tambm atravs dos outros micros da rede local, basta configurar os navegadores para usarem o proxy.

Criando uma configurao bsica O problema que com apenas estas quatro linhas o proxy est muito aberto. Se voc deixar o servidor proxy ativo no prprio servidor que compartilha a conexo e no tiver nenhum firewall ativo, algum na Internet poderia usar o seu proxy, o que naturalmente no desejado. O proxy deve ficar ativo apenas para a rede local. Vamos gerar ento um arquivo mais completo, permitindo que apenas os micros da rede local possam usar o proxy e definindo mais algumas polticas de segurana. Aqui eu j aproveitei algumas linhas do arquivo original, criando regras que permitem o acesso a apenas algumas portas, e no a qualquer coisa como antigamente: -------http_port 3128 visible_hostname kurumin acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager

Configurando o Squid http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all --------

7/19

Veja que agora criei duas novas acl's. A acl "localhost" contm o endereo 127.0.0.1, voc usa para usar o proxy localmente, a partir do prprio servidor e a acl "rede local" que inclui os demais micros da rede local. Voc deve substituir o " 192.168.1.0/24" pela a faixa de endereos IP e a mscara de sub-rede usada na sua rede local (o 24 equivale mascara 255.255.255.0). Depois de criadas as duas polticas de acesso, vo duas linhas no final do arquivo que especificam que os micros que se enquadrarem nelas vo poder usar: http_access allow localhost http_access allow redelocal Lembra-se da acl "all", que contm todo mundo? Vamos usa-la para especificar que quem no se enquadrar nas duas regras acima (ou seja, micros no autorizados, da internet) no poder usar o proxy: http_access deny all Esta linha deve ir no final do arquivo, depois das outras duas. O ordem importante, pois o squid interpreta as regras na ordem em que so colocadas no arquivo. Se voc permite que o micro X acesse o proxy, ele acessa, mesmo que uma regra mais abaixo diga que no. Se voc adicionasse algo como: acl redelocal src 192.168.1.0/24 http_access allow redelocal http_access deny redelocal Os micros da rede local continuariam acessando, pois a regra que permite vem antes da que probe.

Configurando o cache de pginas e arquivos Outra coisa importante configurar o cache do proxy. O squid trabalha com dois tipos de cache: 1- Um cache rpido, feito usando parte da memria RAM do servidor 2- Um cache um pouco mais lento porm maior, feito no HD O cache na memria RAM ideal para armazenar arquivos pequenos, como pginas html e imagens, que sero entregues instantneamente para os clientes. O cache no HD usado para armazenar arquivos maiores, como downloads, arquivos do Windows update e pacotes baixados pelo apt-get.

Configurando o Squid

8/19

O cache na memria RAM sempre relativamente pequeno. Num servidor no dedicado ou seja, uma mquina que usada para fazer outras coisas, mas roda tambm o proxy, voc vai reservar coisa de 16 ou 32 MB de RAM para o cache, para evitar que o cache do squid coma toda a memria RAM deixando o micro lento. Se voc tiver uma rede muito grande e preferir deixar um micro dedicado apenas para o Squid, ento o cache pode ter at 1/3 da memria RAM do servidor. No caia no erro de reservar quase toda a RAM para o cache, pois alm do cache, o sistema vai precisar de memria para fazer outras coisas. O cache no HD pode ser mais generoso, afinal a idia que ele guarde todo tipo de arquivos, principalmente os downloads grandes, que demoram para ser baixados. A nica limitao neste caso o espao livre no HD. A configurao do cache feita adicionando mais algumas linhas no arquivo de configurao: A configurao da quantidade de memria RAM dedicada ao cache feita adicionando a opo "cache_mem", que contm a quantidade de memria que ser dedicada ao cache. Para reservar 32 MB, por exemplo, a linha ficaria: cache_mem 32 MB Abaixo vai mais uma linha, que determina o tamanho mximo dos arquivos que sero guardados no cache feito na memria RAM. O resto vai para o cache feito no HD. O cache na memria muito mais rpido, mas como a quantidade de RAM muito limitada, melhor deixa-la disponvel para pginas web, figuras e arquivos pequenos em geral. Para que o cache na memria armazene arquivos de at 64 KB por exemplo, adicione a linha: maximum_object_size_in_memory 64 KB Em seguida vem a configurao do cache em disco, que armazenar o grosso dos arquivos. Por default, o mximo so downloads de 16 MB e o mnimo zero, o que faz com que mesmo imagens e arquivos pequenos sejam armazenados no cache. Sempre mais rpido ler a partir do cache do que baixar de novo da web, mesmo que o arquivo seja pequeno. Se voc faz download de arquivos grandes e deseja que eles fiquem armazenados no cache, aumente o valor da opo maximum_object_size Isto especialmente til para quem precisa baixar muitos arquivos atravs do apt-get ou Windows update em muitos micros da rede. Se voc quiser que o cache armazene arquivos de at 512 MB por exemplo, as linhas ficariam: maximum_object_size 512 MB minimum_object_size 0 KB Voc pode definir ainda a percentagem de uso do cache que far o squid comear a descartar os arquivos mais antigos. Por padro isso comea a acontecer quando o cache est 90% cheio: cache_swap_low 90 cache_swap_high 95 Depois vem a configurao do tamanho do cache em disco propriamente dita, que composta por quatro valores. O primeiro, (/var/spool/squid) indica a pasta onde o squid armazena os arquivos do cache. Voc pode querer alterar para uma pasta em uma partio separada por exemplo. O "2048" indica a quantidade de espao no HD (em MB) que ser usada para o cache. Aumente o valor se voc tem muito espao no HD do servidor e quer que o squid guarde os downloads por muito tempo.

Configurando o Squid

9/19

Finalmente, os nmeros 16 256 indicam a quantidade de subpastas que sero criadas dentro do diretrio. Por padro temos 16 pastas com 256 subpastas cada uma. cache_dir ufs /var/spool/squid 2048 16 256 Voc pode definir ainda o arquivo onde so guardados os logs de acesso do Squid. Por padro o squid guarda o log de acesso no arquivo /var/log/squid/access.log. Este arquivo usado pelo sarg para gerar as pginas com as estatisticas de acesso. cache_access_log /var/log/squid/access.log Mais uma configurao que voc pode querer alterar o padro de atualizao do cache. Estas trs linhas precisam sempre ser usadas em conjunto. Ou seja, voc pode alter-las, mas sempre as trs precisam estar presente no arquivo. Eliminando um, o squid ignora as outras duas e usa o default. Os nmeros indicam o tempo (em minutos) quando o squid ir verificar se um tem do cache (uma pgina por exemplo) foi atualizado, para cada um dos trs protocolos. O primeiro nmero (o 15) indica que o squid verificar se todas as pginas e arquivos com mais de 15 minutos foram atualizados. Ele s verifica checando o tamanho do arquivo, o que rpido. Se o arquivo no mudou, ento ele continua mandando o que no est no cache para o cliente. O terceiro nmero (o 2280, equivalente a dois dias) indica o tempo mximo, depois disso o objeto sempre verificado. Alm do http e ftp o Squid suporta o protocolo Gopher, que era muito usado nos primrdios da Internet para localizar documentos de texto, mas perdeu a relevncia hoje em dia: refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 Depois de adicionar estas configuraes todas, o nosso arquivo de configurao j ficar bem maior: -------http_port 3128 visible_hostname kurumin cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp

Configurando o Squid acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all --------

10/19

Aqui j temos uma configurao mais completa, incluindo um conjunto de regras de segurana, para que o proxy seja usado apenas a partir da rede local e a configurao do cache, uma configurao adequada para uso numa rede domstica ou um pequeno escritrio por exemplo. Numa rede maior voc provavelmente iria querer adicionar algumas limitaes de acesso, limitando o acesso a algumas pginas, criando um sistema de autenticao ou limitando o uso com base no horrio por exemplo.

Adicionando restries de acesso Num ambiente de trabalho, a idia que os funcionrios usem a internet para comunicao, pesquisa e outras funes relacionadas ao que esto fazendo. Algumas empresas permitem que acessem os e-mails pessoais e coisas assim, mas sempre at um certo limite. Seu chefe no vai gostar se comearem a passar a maior parte do tempo no Orkut por exemplo.

Bloqueando por palavras ou domnios Uma forma fcil de bloquear sites no Squid criar uma lista de palavras, um arquivo de texto onde voc adiciona palavras e domnios que sero bloqueados no Squid. Bloquear um determinado domnio, como por exemplo "orkut.com" no gera muitos problemas, mas tome cuidado ao bloquear palavras especficas, pois o Squid passar a bloquear qualquer pgina que contenha a palavra em questo.

Configurando o Squid

11/19

Se voc bloquear a palavra "sexo" por exemplo, qualquer site ou artigo que mencione a palavra ser bloqueado. Ao bloquear por palavras voc deve tentar ser especfico, bloqueando apenas jarges e expresses que so encontradas apenas nos sites que voc pretende bloquear. Para adicionar o filtro de palavras, adicione as linhas: acl proibidos dstdom_regex "/etc/squid/proibidos" http_access deny proibidos Aqui estamos criando uma acl chamada "proibidos" que gerada a partir da leitura do arquivo "/etc/squid/proibidos", o arquivo de texto que iremos editar. O acesso a qualquer pgina que contenha palavras citadas no arquivo bloqueada. O arquivo deve conter as palavras e domnios bloqueados, um por linha:

Depois criar o arquivo e adicionar as duas linhas no arquivo de configurao do squid, reinicie o servio com um: # service squid restart ou # /etc/init.d/squid/restart A partir da o bloqueio de palavras entra em ao e os clientes passam a ver uma mensagem de erro ao tentar acessar a pgina:

Configurando o Squid

12/19

Este filtro de palavras pode levar a alguns erros inesperados. Se voc o usa para bloquear o site "orkut.com" por exemplo, os usurios no conseguiro ler por exemplo um artigo da Superinteressante que cita o endereo do site. Existe uma opo mais adequada para o bloqueio de domnios, que criar uma acl usando o parmetro "dstdomain". Veja um exemplo: acl bloqueados dstdomain orkut.com playboy.abril.com.br astalavista.box.sk http_access deny bloqueados Aqui eu criei uma acl chamada "bloqueados" que contm os endereos "orkut.com" "playboy.abril.com.br" e "astalavista.box.sk" e me seguida inclu a regra "http_access deny bloqueados" que bloqueia o acesso a eles. Aqui estamos sendo mais especficos. Ao invs de bloquear o termo "orkut.com" o squid vai bloquear apenas o acesso ao domnio em questo. Existe uma ltima ressalva: alguns sites, como o orkut.com podem ser acessados tanto com o www quanto sem. Para o squid, "www.orkut.com" e "orkut.com" so duas coisas diferentes. Bloqueando o "orkut.com" os usurios ainda conseguiro acessar o site atravs do "www.orkut.com". Para bloquear ambos, preciso incluir as duas possibilidades dentro da regra, como em: acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados Voc pode incluir quantos domnios quiser dentro da regra, basta separ-los por espao e deixar tudo na mesma linha. No existe problema em combinar a regra que cria o filtro de palavras com esta que filtra baseado no domnio, voc pode apelar para uma ou outra de acordo com a situao. Depois de adicionar as novas regras, nosso arquivo de configurao ficaria assim:

Configurando o Squid -------http_port 3128 visible_hostname kurumin cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports acl proibidos dstdom_regex "/etc/squid/proibidos" http_access deny proibidos acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all --------

13/19

Veja que coloquei as duas regras antes do "http_access allow redelocal", que abre tudo para a rede local. Como o squid processa as regras seqencialmente, as pginas que forem bloqueadas pelas duas regras no chegaro a passar pela seguinte.

Configurando o Squid

14/19

Bloqueando por horrio Estas regras fazem com que o proxy recuse conexes feitas dentro de determinados horrios. Voc pode definir regras perodos especficos e combin-las para bloquear todos os horrios em que voc no quer que o proxy seja usado. Para que o proxy bloqueie acessos feitos entre meia-noite e 6:00 da manh e no horrio de almoo por exemplo, voc usaria as regras: acl madrugada time 00:00-06:00 http_access deny madrugada acl almoco time 12:00-14:00 http_access deny almoco Estas regras iriam novamente antes da regra "http_access allow redelocal" no arquivo de configurao. Agora imagine que voc quer fazer diferente. Ao invs de bloquear o acesso na hora de almoo, voc quer deixar o proxy aberto, para quem quiser ir no orkut ou acessar os e-mails poder fazer isso fora do horrio de trabalho. Neste caso voc usaria uma regra como: acl almoco time 12:00-14:00 http_access allow almoco Esta regra entraria no arquivo de configurao antes das regras "http_access deny proibidos" e "http_access deny proibidos". Assim, os acessos que forem aceitos pela regra do almoo, no passaro pelas regras que fazem o bloqueio.

Proxy com autenticao Voc pode adicionar uma camada extra de segurana exigindo autenticao no proxy. Este recurso pode ser usado para controlar quem tem acesso Internet e auditar os acessos em caso de necessidade. Quase todos os navegadores oferecem a opo de salvar a senha. No seria muito legal se o usurio tivesse que ficar digitando toda hora... ;-)

Configurando o Squid

15/19

Para ativar a autenticao voc vai precisar de u programa chamado "htpasswd". Se ele no estiver presente, instale o pacote apache-utils: Em seguida crie o arquivo que ser usado para armazenar as senhas: # touch /etc/squid/squid_passwd Cadastre os logins usando o comando: # htpasswd /etc/squid/squid_passwd kurumin (onde o "kurumin" o usurio que est sendo adicionado) Depois de terminar de cadastrar os usurios, adicione as linhas que ativam a autenticao no /etc/squid/squid.conf: auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados O "/usr/lib/squid/ncsa_auth" a localizao da biblioteca responsvel pela autenticao. Eventualmente, ela pode estar numa pasta diferente dentro da distribuio que estiver usando. Neste caso use o "locate" ou a busca do KDE para encontrar o arquivo e altere a linha indicando a localizao correta. Estas trs linhas criam uma acl chamada "autenticados" (poderia ser outro nome), que contm os usurios que se autenticarem usando um login vlido.

Configurando um proxy transparente Uma garantia de que os usurios realmente vo usar o proxy e ao mesmo tempo uma grande economia de trabalho e dor de cabea pra voc o recurso de proxy transparente. Ele permite configurar o Squid e o firewall de forma que o servidor proxy fique escutando todas as conexes na porta 80. Mesmo que algum tente desabilitar o proxy manualmente nas configuraes do navegador, ele continuar sendo usado.

Configurando o Squid

16/19

Outra vantagem que este recurso permite usar o proxy sem precisar configurar manualmente o endereo em cada estao. Basta usar o endereo IP do servidor rodando o proxy como gateway da rede. Lembre-se que para usar o proxy transparente, voc j deve estar compartilhando a conexo no servidor, via nat. O proxy transparente apenas far com que o proxy intercepte os acessos na porta 80, obrigando tudo a passar pelas suas regras de controle de acesso, log, autenticao e cache. Se voc ainda no compartilhou a conexo, pode fazer isso manualmente rodando estes trs comandos: # modprobe iptable_nat # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # echo 1 > /proc/sys/net/ipv4/ip_forward O "eth1" na segunda linha, indica a placa que est conectada na Internet e ser compartilhada. Voc pode checar a configurao da rede usando o comando "ifconfig" (como root). Nem todas as distribuies instalam o iptables por padro. No Mandrake por exemplo, pode ser necessrio rodar primeiro um "urpmi iptables". Em seguida, rode o comando que direciona as requisies recebidas na porta 80 para o squid. # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 O "eth0" neste quarto comando indica a placa da rede local, onde o proxy recebe as requisies dos outros micros da rede e o "3128" indica a porta usada pelo squid. Adicione os quatro comandos no final do arquivo /etc/rc.d/rc.local ou /etc/init.d/bootmisc.sh (no Debian) para que eles sejam executados durante o boot. Finalmente, voc precisa adicionar as seguintes linhas no final do arquivo squid.conf e restartar o servio: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Em resumo, voc vai ter a conexo compartilhada via Nat no servidor e configurar os clientes para acessar atravs dela, colocando o servidor como gateway da rede. Ao ativar o proxy transparente, a configurao dos clientes continua igual, a nica diferena que agora todo o trfego da porta 80 passar obrigatoriamente pelo servidor Squid. Isso permite que voc se beneficie do log dos acessos e do cache feito pelo proxy, sem ter que se sujeitar s desvantagens de usar um proxy, como ter que configurar manualmente cada estao. Depois de adicionar a regra que libera o acesso na hora do almoo, ativar a autenticao e o proxy transparente, nosso arquivo vai ficar assim: -------http_port 3128 visible_hostname kurumin # Configurao do cache cache_mem 32 MB

Configurando o Squid maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 # Localizao do log de acessos do Squid cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Libera acessos na hora do almoo acl almoco time 12:00-14:00 http_access allow almoco # Filtros por palavras e por dominios acl proibidos dstdom_regex "/etc/squid/proibidos" http_access deny proibidos acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados # Autenticao dos usurios auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados # Libera para a rede local acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal

17/19

Configurando o Squid # Bloqueia acessos externos http_access deny all # Proxy transparente httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on --------

18/19

Usando o Sarg para monitorar o acesso O Sarg um interpretador de logs para o Squid, assim como o Webalizer e o Apache. Sempre que executado ele cria um conjunto de pginas, divididas por dia, com uma lista de todas as mquinas que foram acessadas e a partir de cada mquina da rede veio cada acesso. Caso voc tenha configurado o Squid para exigir autenticao. , ele organiza os acessos com base nos logins dos usurios, caso contrrio ele mostra os endereos IP das mquinas. A partir da voc pode acompanhar as pginas que esto sendo acessadas, mesmo que no exista nenhum filtro de contedo e tomar as medidas cabveis em casos de abuso. Todos sabemos que os filtros de contedo nunca so completamente eficazes, eles sempre bloqueiam algumas pginas teis e deixam passar muitas pginas imprprias. Se voc tiver algum tempo para ir acompanhando os logs, a inspeo manual sempre o mtodo mais eficiente. A partir da voc pode ir fazendo um trabalho incremental, de ir bloqueando uma a uma pginas onde os usurios perdem muito tempo, ou fazer algum trabalho educativo, explicando que os acessos esto sendo monitorados e estabelecendo algum tipo de punio para quem abusar. Aqui est um exemplo do relatrio gerado pelo Sarg. Por padro ele gera um conjunto de pginas html dentro da pasta /var/www/squid-reports/ (ou /var/www/html/squid/, no Mandrake) que voc pode visualizar atravs de qualquer navegador. Os acessos so organizados por usurio (caso esteja usando autenticao) ou por IP, mostrando as pginas acessadas por cada um, quantidade de dados transmitidos, tempo gasto em cada acesso, tentativas de acesso bloqueadas pelos filtros de contedo e outras informaes.

Configurando o Squid

19/19

O Sarg includo na maioria das distribuies atuais, em alguns casos instalado por padro junto com o Squid. No Debian e derivados ele pode ser instalado com um: # apt-get install sarg No Mandrake um "urpmi sarg" j resolve. Depois de instalado, basta chamar o comando "sarg" (como root) para que os relatrios sejam geradas automaticamente a partir do log do squid. O Sarg no um daemon que fica residente, voc precisa apenas chama-lo quando quiser atualizar os relatrio, se voc quiser automatizar esta tarefa, pode usar o cron para que ele seja executado automaticamente todos os dias ou uma vez por hora por exemplo. Voc pode alterar a pasta onde so salvos os relatrios, limitar o acesso s estatticas e alterar vrias opes cosmticas no arquivo de configurao do Sarg, que o /etc/sarg/sarg.conf (no Mandrake) ou /etc/squid/sarg.conf (no Debian). O arquivo auto explicativo, nele voc pode alterar os diretrios padro, alterar o layout da Outro recurso interessante o envio de uma cpia do relatrio por e-mail sempre que o sarg for executado.

Você também pode gostar