Escolar Documentos
Profissional Documentos
Cultura Documentos
Squid
Squid
Antes de explicar o que o Squid devemos falar um pouco sobre Proxy, ou seja, o que um Servidor Proxy. Para responder essa pergunta apresentamos a figura abaixo, na qual temos um rede DMZ, na qual h um servidor Proxy funcionando.
Na figura abaixo temos diagrama mostrando 3 computadores acessando um mesmo endereo na internet (http://www.linuxbrasil.org.br/exemplo1.html). O que um servidor Proxy faz ofertar as pginas estticas em html e outros formatos estticos, que no exemplo ao lado a pgina exemplo1.html. Note que as consultas feitas pela pgina exemplo1.html e feita e respondida pelo servidor Proxy, o qual armazena localmente em cache esta pgina quando um dos 3 computadores da LAN faz a consulta pela mesma, ou seja, digamos por exemplo, que o computador esquerda tenha feito a consulta inicialmente. Ento o servidor Proxy ter que buscar esta pgina diretamente no site do Projeto Linux Brasil e, em seguida ir armazen-la em cache para que os outros 2 computadores a encontrem no servidor Proxy posteriormente.
Quando novos computadores forem adicionados a esta LAN, as consultas pela pgina exemplo1.html sero respondidas diretamente pelo servidor Proxy, no sendo necessria uma nova consulta diretamente no portal do Projeto Linux Brasil para repassar ao novo computador.
Dessa forma fica fcil ver os porqus de se utilizar servidores Proxy em redes locais (LANs).
O Squid um dos mais populares servidores Proxy no mundo Linux e um dos melhores programas para misso crtica de controle de contedo (controle do acesso internet). Podendo esconder requisies repetidas (envitar consumo da largura de banda da rede junto ao seu provedor), esconder www e DNS, e outros recursos de rede compartilhados para um grupo de pessoas numa rede local (LAN). Ele pode ser usado tanto em sistemas Linux / Unix e Windows.
Alm dos atributos acima, o Squid est em desenvolvimento h muito tempo, seu cdigo aberto, com licena GNU GPL e funciona com muitos protocolos, tais como TLS, SSL e HTTPS, embora seja principalmente usado para HTTP e FTP. Com todas essas atribuies, este software torna-se completo e eficaz para realizar misses crticas em situaes reais nas empresas. Tanto que centenas de provedores de internet o utilizam para oferecer contedo aos seus usurios.
Instalando o Squid
O Squid pode ser encontrado diretamente no site oficial do Projeto: http://www.squid-cache.org/. Abordaremos aqui a instalao no Debian, Fedora / Red Hat.
Para instalar o Squid no Debian e semelhantes use o seguinte comando (logado como root e conectado internet, claro):
Arquivo de configurao
Debian
/etc/squid3/squid.conf Fedora /etc/squid/squid.conf Usaremos o arquivo squid.conf baseado no Debian, que contm aproximadamente 3000 linhas e pode ser editado retirando os comentrios com #, portanto faa uma copia antes.
# cp squid.conf squid.conf.original
Agora explicaremos as principais diretivas arquivo squid.conf onde voc pode edit-lo com qualquer editor de texto kwrite, gedit (ambiente grfico) e vi, nano e mcedit (modo texto) utilizando o recurso de localizar texto dos editores de texto. No final mostraremos o arquivo j configurado e pronto para ser utilizado.
Editando o squid.conf
Esse o diretrio de cache do squid onde so armazenadas as pginas da internet, onde 100 tamanho em MB (Megabytes) do cache, 16 o nmero de diretrios e 256 o nmero de subdiretrios de cada diretrio. cache_dir ufs /var/spool/squid3 100 16 256
Essa opo indica a quantidade de memria RAM que o squid ir consumir, no caso de um servidor squid exclusivo para cache deve-se utilizar 80% a 90% de toda memria RAM do computador.
Por exemplo 512 MB de RAM (80% de 512 MB = cache_mem 410 MB), 128 MB um bom valor para comear com 512 MB ou 1 GB. cache_mem 8 MB
Essa opo define a porcentagem de limite mnimo para substituio de um objeto(pginas e imagens), essa substituio inicia quando o swap em disco estiver acima do limite mnimo definido aqui.
cache_swap_low 90
Essa opo define o tamanho mximo de um objeto em cache, os objetos maiores do que esse limite, no sero salvos em disco. Um nmero grande indica economia de banda e perda de performance no cache, um nmero pequeno menor no economiza largura de banda, mas aumenta a velocidade do cache para o tempo de resposta. recomendado um valor entre 4 e 16 MB. maximum_object_size 4096 KB
usurio dono do squid cache_effective_user proxy (No Debian proxy e no Red Hat / Fedora squid)
Nome do computador que est instalado o squid e onde ser exibidas as mensagens de erro. visible_hostname firewall.linuxbrasil.org.br
Arquivos de logs de acesso e objetos do cache do squid access_log /var/log/squid3/access.log cache_log /var/log/squid3/cache.log cache_store_log /var/log/squid3/store.log
Debian
# /etc/init.d/squid3 start
As vezes o squid pode travar, e para tentar resolver o problema criando novos diretrios de cache, pare o squid e execute o comando:
Caso voc tenha feito algumas alterao no arquivo squid.conf, execute o comando com o squid executando:
Para analizar erros voc pode entrar em modo debug para fazer a depurao de possveis erros, para isso execute os comandos abaixo:
Proxy transparente
um recurso utilizado pelo squid, onde no precisa configurar o proxy no navegador (onde recomendado caso a rede tenha muitos computadores) e sim no prprio arquivo de configurao do squid squid.conf , onde os acessos aos sites so feitos pelo squid e
10
Para o squid operar como proxy transparente, necessrio que esteja no mesmo computador que est configurado como firewall e acessando a internet, onde sero implementadas regras para seu funcionamento.
Para verses antigas anterior a verso 2.6 do squid era necessrio editar o arquivo squid.conf e adicionar as seguintes linhas :
Agora em verses acima da 2.6, que nesta configurao estamos usando a verso 3.0.PRE5, execute o comando squid -v, e verifique a verso do seu squid alm de exibir as diretivas de compilao na hora da instalao. # squid -v
Para habilitar proxy transparente a partir da verso 2.6, basta mudar a linha: http_port 3128
11
Aps alterar o arquivo squid.conf, crie uma regra no seu arquivo de firewall utilizando o comando com iptables abaixo, onde eth1 interface de rede da rede local.
Agora verifique a sada do comando iptables -L -v -t nat e veja o o redirecionamento na interface eth1 atravs da porta 3128 do squid.
# iptables -L -v -t nat Chain PREROUTING (policy ACCEPT 298 packets, 19416 bytes) pkts bytes target prot opt in out source destination 0 0 REDIRECT tcp -- eth1 any anywhere anywhere tcp dpt:www redir ports 3128
Para fazer um teste execute o comando tail -f /var/log/squid3/access.log , e acesse a internet de um computador da rede. # tail -f /var/log/squid3/access.log
uma lista de controle de acesso aos sites permitidos e no permitidos, onde podemos bloquear ou liberar um computador ou uma rede, bloquear ou liberar por sites, palavras, horrios e etc.
12
*OBS o squid l linha por linha de cima para baixo do arquivo squid.conf, portanto as suas ACLs sero interpretadas dessa forma tomando cuidado na ordem das linhas do arquivo.
LIBERADOS src 192.168.1.2 192.168.1.3 BLOQUEADOS src 192.168.1.4 192.168.1.5 SITES_PERMITIDOS dstdomain .google.com.br .uol.com.br SITES_BLOQUEADOS dstdomain .orkut.com .jogos.com
Acima foram criadas 2 ACLs de endereos IP: LIBERADOS - com os endereos IP que podem acessar os sites que esto permitidos BLOQUEADOS - com os endereos IP que no podem acessar os sites que esto bloqueados
Em seguida foram criadas 2 ACLs de sites: SITES_PERMITIDOS - com os sites que podem ser acessados SITES_BLOQUEADOS - com os sites que no podem ser acessados
A linha http_access allow LIBERADOS SITES_PERMITIDOS , diz ao squid para permitir (allow) os endereos IP 192.168.1.2 e 192.168.1.3, acessarem os sites .google.com.br e .uol.com.br (repare um ponto ., indicando qualquer nome de host para os domnios do google.com.br e uol.com.br).
Em seguida a linha http_access deny BLOQUEADOS SITES_BLOQUEADOS, diz ao squid para negar (deny) os endereos IP 192.168.1.4 e 192.168.1.5, acessarem os sites .orkut.com .jogos.com (repare um ponto ., indicando qualquer nome de host para os
13
A medida que aumentar o nmero de endereos IP e sites, necessrio criar uma lista em arquivos, como mostrado mais abaixo nos exemplos de bloqueio de sites e palavras.
Voc pode adicionar as suas ACLs no arquivo squid.conf , abaixo da linha que est em comentrio # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS.
Os computadores com endereo IP 192.168.1.2 192.168.1.3 192.168.1.4 estaro liberados para acessar a internet, e o restante bloqueado.
*OBS Observe que o endereo IP 192.168.1.3 possui a mscara de rede no formato CIDR /32, pois possui 32 bits e o endereo 192.168.1.4 possui a mscara de rede 255.255.255.255 preenchendo todos os 4 campos do endereo IP.
*OBS obrigatrio a mscara de rede no formato padro 255.0.0.0 , 255.255.0.0 , 255.255.255.0 e etc ou formato CIDR /8, /16, /24 e etc.
14
As redes com endereo 192.168.0.0 192.168.1.0 estaro liberadas para acessar a internet, e o restante bloqueado.
acl rede 192.168.1.0/24 acl IP_BLOQUEADO src 192.168.1.2 192.168.1.3/32 192.168.1.4/255.255.255.255 http_access deny IP_BLOQUEADO http_access allow rede
Os computadores com endereo IP 192.168.1.2, 192.168.1.3 e 192.168.1.4 estaro bloqueados para acessar a internet, e o restante da rede 192.168.1.0/24 estar liberada.
*OBS obrigatrio a mscara de rede no formato padro 255.0.0.0 , 255.255.0.0 , 255.255.255.0 e etc ou formato CIDR /8, /16, /24 e etc.
acl rede 192.168.0.0/24 acl REDE_BLOQUEADA src 192.168.1.0/255.255.255.0 192.168.2.0/24 http_access deny REDE_BLOQUEADA http_access allow rede
15
As redes com endereo 192.168.1.0/255.255.255.0 192.168.2.0/24 estaro bloqueadas para acessar a internet, e a rede 192.168.0.0/24 liberada.
Bloqueando sites
acl rede src 192.168.1.0/24 acl SITES_BLOQUEADOS dstdomain /etc/squid3/sites_bloqueados http_access deny SITES_BLOQUEADOS http_access allow rede
Este arquivo /etc/squid3/sites_bloqueados deve ser criado manualmente, e nele estaro os sites que sero bloqueados, sendo que cada sites deve estar um em cada linha.
# touch /etc/squid3/sites_bloqueados
# nano /etc/squid3/sites_bloqueados
.google.com.br .orkut.com
16
Bloqueando palavras
acl rede src 192.168.1.0/24 acl PALAVRAS_BLOQUEADAS url_regex -i /etc/squid3/palavras_bloqueadas http_access deny PALAVRAS_BLOQUEADAS http_access allow rede
*OBS - A opo -i aps a palavra url_regex, serve para tanto palavras maisculas e como minsculas.
Este arquivo /etc/squid3/palavras_bloqueadas deve ser criado manualmente, e nele estaro as palavras que sero bloqueadas, sendo que cada palavra deve estar uma em cada linha.
# touch /etc/squid3/palavras_bloqueadas
# nano /etc/squid3/palavras_bloqueadas
17
jogos SEXO
*Obs O bloqueio por horrio s funciona quando o squid estiver configurado como proxy transparente, portanto no funcionar com autenticao.
Para bloquear por horrio utilizado o formato de dias em ingls aps a palavra time da seguinte forma:
Sunday (representado pela letras S) Monday (representado pela letras M) Tuesday (representado pela letras T) Wednesday (representado pela letras W) Thursday (representado pela letras H) Friday (representado pela letras F) Saturday (representado pela letras A)
acl REDE src 192.168.1.0/24 acl HORARIO_BLOQUEADO time MTWHF 08:00-18:00 http_access allow REDE HORARIO_BLOQUEADO http_access deny REDE
Esta ACL ir bloquear a internet de segunda sexta, das 08:00 s 18:00 para a rede REDE que foi criada acima com o endereo 192.168.1.0/24. Repare que a acl REDE est liberada
18
para acessar internet apenas nestes dias dias horrios, em seguida bloqueada para outros dias e horrios que no estejam especificados na acl HORARIO_BLOQUEADO.
acl REDE src 192.168.1.0/24 acl DOWNLOAD_BLOQUEADO url_regex -i /etc/squid3/download_bloqueado http_access deny DOWNLOAD_BLOQUEADO http_access allow rede
*OBS - A opo -i aps a palavra url_regex, serve para tanto palavras maisculas e como minsculas.
Este arquivo /etc/squid3/palavras_bloqueadas deve ser criado manualmente, e nele estaro as palavras que sero bloqueadas, sendo que cada palavra deve estar uma em cada linha.
# touch /etc/squid3/download_bloqueado
# nano /etc/squid3/download_bloqueado
Veja um exemplo do arquivo, onde bloqueia qualquer arquivo que tenha essas extenses:
.*\.exe$
19
Autenticao de usurios atravs do proxy squid * ATENO ! 1. Autenticao pelo proxy no funciona junto com proxy transparente, sendo assim voc ter que escolher entre as dois mtodos: autenticao ou proxy transparente. 2. Para autenticao voc ter que configurar o proxy em todas os computadores, e como proxy transparente no. 3. O bloqueio por horrio no funcionar se a configurao for feita no navegador, sendo assim ter que configurar o squid como proxy transparente.
Agora retire o comentrio da seguinte linha no arquivo squid.conf, onde /usr/lib/squid3/ncsa_auth programa de autenticao.
Altere o caminho para o arquivo de senha para o diretrio de configurao do squid /etc/squid3
20
Agora ser necessrio criar o arquivo de usurios e senhas com o comando htpasswd, que vem junto com o servidor web Apache, portanto se caso voc no tenha o Apache instalado, instale-o:
Debian
21
Depois de instalado o apache, agora podemos utilizar o comando htpasswd, criar o arquivo de usurios e senhas e restringir o acesso a internet fazendo autenticao por usurio.
A opo -c deve ser utilizada apenas na primeira vez que for criar o arquivo, na prxima vez que executar o comando para criar outro usurio, no ser necessrio. Pronto agora basta configurar os computadores da rede para utilizar o proxy squid.
Quando o squid est configurado com autenticao, e no como proxy transparente, os navegadores do computadores da rede devero ser configurados para acessar a internet pelo proxy squid.
Para configurar o proxy no Mozilla Firefox e semelhantes, clique em: Editar Preferncias Avanado Rede Configuraes Configurao manual de proxy
Agora basta preencher os campos com o endereo IP do proxy, que neste caso 192.168.1.1 e especificar a porta do squid 3128, como mostra as imagens abaixo.
22
23
24
Agora iremos criar o arquivo squid.conf limpo a partir do arquivo original, onde sero retiradas as linhas que esto sem comentrios # .
# cp squid.conf squid.conf.backup # egrep -v "^#|^$" squid.conf.backup > squid.conf Agora faa o download do arquivo de squid.conf no formatato .tar.gz e depois descompate-o.
Download do arquivo conf Aps ter feito alguma alterao no arquivo squid.conf, execute o comando:
# squid3 -k reconfigure
ou reinicie o squid
Debian
25
# /etc/init.d/squid3 restart
Quando existe muitos computadores na rede, a quantidade de acessos aumentar o tamanho do cache do squid tambm. Portanto voc ter que apagar os arquivos de acesso e de cache do diretrio /var/spool/squid3/.
Siga os passos a seguir para apagar os arquivos e em seguida mostrado um script para fazer essa tarefa, baseado no Debian (podendo ser adaptado para qualquer distribuio Linux) que pode ser includo como uma tarefa agendada em uma crontab.
Remova os arquivos de log do squid # rm -rf /var/log/squid3/access.log # rm -rf /var/log/squid3/cache.log # rm -rf /var/log/squid3/store.log
26
Crie os arquivos em branco de log do squid # touch /var/log/squid3/access.log # touch /var/log/squid3/cache.log # touch /var/log/squid3/store.log
Verifique as permisses e proprietrio na sua distribuio Linux com o comando ls -l e altere o dono e o grupo
27
Abaixo segue o script, onde voc pode mudar sua permisso para executar, copiar e fazer suas alteraes para sua distribuio Linux.
################################################################
# script para limpar o cache do squid desenvolvido pelo Prof. Fernando Projeto Linux Brasil
# tome cuidado, repare um asterstico *, indicando que ir remover apenas o contedo do dire rm -rf /var/spool/squid3/*
# removendo os arquivos de log do squid rm -rf /var/log/squid3/access.log rm -rf /var/log/squid3/cache.log rm -rf /var/log/squid3/store.log
28
touch /var/log/squid3/store.log
# verifique as permisses e proprietrio na sua distribuio Linux com o comando ls -l e altere chown proxy.proxy /var/log/squid3/access.log chown root.root /var/log/squid3/cache.log chown proxy.proxy /var/log/squid3/store.log
29